00001 #ifndef __XROOTDADMIN__
00002 #define __XROOTDADMIN__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include <stdlib.h>
00016 #include <netinet/in.h>
00017
00018 #include "Xrd/XrdLinkMatch.hh"
00019 #include "XrdOuc/XrdOucStream.hh"
00020 #include "XProtocol/XProtocol.hh"
00021
00022 class XrdNetSocket;
00023 class XrdXrootdJob;
00024
00025 class XrdXrootdAdmin
00026 {
00027 public:
00028
00029 static void addJob(const char *jname, XrdXrootdJob *jp);
00030
00031 static int Init(XrdSysError *erp, XrdNetSocket *asock);
00032
00033 void Login(int socknum);
00034
00035 void *Start(XrdNetSocket *AdminSock);
00036
00037 XrdXrootdAdmin() {}
00038 ~XrdXrootdAdmin() {}
00039
00040 private:
00041 int do_Abort();
00042 int do_Cj();
00043 int do_Cont();
00044 int do_Disc();
00045 int do_Login();
00046 int do_Lsc();
00047 int do_Lsj();
00048 int do_Lsj_Xeq(XrdXrootdJob *jp);
00049 int do_Lsd();
00050 int do_Msg();
00051 int do_Pause();
00052 int do_Red();
00053 char *getMsg(char *msg, int &mlen);
00054 int getreqID();
00055 int getTarget(const char *act, char **rest=0);
00056 int sendErr(int rc, const char *act, const char *msg);
00057 int sendOK(int sent);
00058 int sendResp(const char *act, XActionCode anum);
00059 int sendResp(const char *act, XActionCode anum,
00060 const char *msg, int mlen);
00061 void Xeq();
00062
00063 struct JobTable {struct JobTable *Next;
00064 char *Jname;
00065 XrdXrootdJob *Job;
00066 };
00067
00068 static JobTable *JobList;
00069
00070 static XrdSysError *eDest;
00071 XrdOucStream Stream;
00072 XrdLinkMatch Target;
00073
00074 struct usr {kXR_unt16 pad;
00075 kXR_unt16 atn;
00076 kXR_int32 len;
00077 kXR_int32 act;
00078 usr() {pad = 0; atn = htons(kXR_attn);}
00079 ~usr() {}
00080 } usResp;
00081 char TraceID[24];
00082 char reqID[16];
00083 };
00084 #endif