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_Cj();
00060 int do_Login();
00061 int do_Lsc();
00062 int do_Lsj();
00063 int do_Lsj_Xeq(XrdXrootdJob *jp);
00064 int do_Lsd();
00065 int do_Msg();
00066 char *getMsg(char *msg, int &mlen);
00067 int getreqID();
00068 int getTarget(const char *act, char **rest=0);
00069 int sendErr(int rc, const char *act, const char *msg);
00070 int sendOK(int sent);
00071 int sendResp(const char *act, XActionCode anum);
00072 int sendResp(const char *act, XActionCode anum,
00073 const char *msg, int mlen);
00074 void Xeq();
00075
00076 struct JobTable {struct JobTable *Next;
00077 char *Jname;
00078 XrdXrootdJob *Job;
00079 };
00080
00081 static JobTable *JobList;
00082
00083 static XrdSysError *eDest;
00084 XrdOucStream Stream;
00085 XrdLinkMatch Target;
00086
00087 struct usr {kXR_unt16 pad;
00088 kXR_unt16 atn;
00089 kXR_int32 len;
00090 kXR_int32 act;
00091 usr() {pad = 0; atn = htons(kXR_attn);}
00092 ~usr() {}
00093 } usResp;
00094 char TraceID[24];
00095 char reqID[16];
00096 };
00097 #endif