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