Logo ROOT   6.18/05
Reference Guide
XProofProtocol.h
Go to the documentation of this file.
1// @(#)root/proofd:$Id$
2// Author: G. Ganis June 2005
3
4#ifndef ROOT_XProofProtocol
5#define ROOT_XProofProtocol
6
7#ifdef __CINT__
8#define __attribute__(x)
9#endif
10
11#include "XProtocol/XProtocol.hh"
12
13#define XPD_DEF_PORT 1093
14
15// KINDS of SERVERS
16//
17//
18#define kXP_MasterServer 1
19#define kXR_SlaveServer 0
20
21//______________________________________________
22// XPROOFD PROTOCOL DEFINITION: CLIENT'S REQUESTS TYPES
23//
24// These are used by TXProofMgr to interact with its image on
25// the server side and the sessions
26// Changes should be propagated to the related strings
27// for notification in XrdProofdAux::ProofRequestTypes(...) and
28// in XProofProtUtils.cxx
29//______________________________________________
30//
32 kXP_login = 3101, // client login
33 kXP_auth = 3102, // credentials to login
34 kXP_create = 3103, // create a new session-ctx
35 kXP_destroy = 3104, // destroy a session-ctx
36 kXP_attach = 3105, // attach to an existing session-ctx
37 kXP_detach = 3106, // detach from an existing session-ctx
38 kXP_urgent = 3111, // urgent msg for a processing session (e.g. stop/abort)
39 kXP_sendmsg = 3112, // send a msg to a session-ctx
40 kXP_admin = 3113, // admin request handled by the coordinator (not forwarded)
41 kXP_interrupt = 3114, // urgent message
42 kXP_ping = 3115, // ping request
43 kXP_cleanup = 3116, // clean-up a session-ctx or a client section
44 kXP_readbuf = 3117, // read a buffer from a file
45 kXP_touch = 3118, // touch the client admin path
46 kXP_ctrlc = 3119, // propagate a Ctrl-C issued by the client
47 kXP_direct = 3120, // direct data connection
48//
49 kXP_Undef = 3121 // This should always be last: just increment
50};
51
52// XPROOFD VERSION (0xMMmmpp : MM major, mm minor, pp patch)
53#define XPD_VERSION 0x010600
54
55// KINDS of connections (modes)
56#define kXPD_Admin 4
57#define kXPD_Internal 3
58#define kXPD_ClientMaster 2
59#define kXPD_MasterMaster 1
60#define kXPD_MasterWorker 0
61#define kXPD_AnyConnect -1
62
63// KINDS of servers
64#define kXPD_TopMaster 2
65#define kXPD_Master 1
66#define kXPD_Worker 0
67#define kXPD_AnyServer -1
68
69// Operations modes
70#define kXPD_OpModeOpen 0
71#define kXPD_OpModeControlled 1
72
73// Type of resources
75 kRTNone = -1,
77 kRTDynamic = 1
78};
79
80// Worker selection options
85};
86
87// Message types used in SendCoordinator(...)
88// Must be consistent with the names in XrdProofdAux.cxx
103 kExec = 1013,
104 kGetFile = 1014,
105 kPutFile = 1015,
106 kCpFile = 1016,
108//
109 kUndef = 1018 // This should always be last: do not touch it
111
112// Exec types
114 kRm = 0,
115 kLs = 1,
116 kMore = 2,
117 kGrep = 3,
118 kTail = 4,
120 kStat = 6,
121 kFind = 7
123
124// XPROOFD Worker CPU load sharing options
127 kXPD_sched_local = 1, // Priorities defined in a local file on the worker
128 kXPD_sched_central = 2 // Priorities communicated by the master
130
131// XPROOFD SERVER STATUS
137 kXPD_unknown = 4
139
140// XPROOFD MESSAGE TYPE
141#define kXPD_internal 0x1
142#define kXPD_async 0x2
143#define kXPD_startprocess 0x4
144#define kXPD_setidle 0x8
145#define kXPD_fb_prog 0x10
146#define kXPD_logmsg 0x20
147#define kXPD_querynum 0x40
148#define kXPD_process 0x80
149
150// Special GetWorkers reply tags
151const char* const XPD_GW_Failed = "|failed|";
152const char* const XPD_GW_QueryEnqueued = "|enqueued|";
153const char* const XPD_GW_Static = "static:";
154
155//_______________________________________________
156// PROTOCOL DEFINITION: SERVER'S RESPONSES TYPES
157//_______________________________________________
158//
162 kXP_attn, // 4101
164 kXP_error, // 4103
165 kXP_wait // 4104
167
168//_______________________________________________
169// PROTOCOL DEFINITION: SERVER"S ATTN CODES
170//_______________________________________________
172 kXPD_msg = 5100, // Generic message from server
173 kXPD_ping, // 5101 // Ping request
174 kXPD_interrupt, // 5102 // Interrupt request
175 kXPD_feedback, // 5103 // Feedback message
176 kXPD_srvmsg, // 5104 // Log string from server
177 kXPD_msgsid, // 5105 // Generic message from server with ID
178 kXPD_errmsg, // 5106 // Error message from server with log string
179 kXPD_timer, // 5107 // Server request to start a timer for delayed termination
180 kXPD_urgent, // 5108 // Urgent message to be processed in the reader thread
181 kXPD_flush, // 5109 // Server request to flush stdout (before retrieving logs)
182 kXPD_inflate, // 5110 // Server request to inflate processing times
183 kXPD_priority, // 5111 // Server request to propagate a group priority
184 kXPD_wrkmortem, // 5112 // A worker just died or terminated
185 kXPD_touch, // 5113 // Touch the connection and schedule an asynchronous remote touch
186 kXPD_resume, // 5114 // process the next query (to be sent to TXSocket in TXProofServ)
187 kXPD_clusterinfo // 5115 // Information about running sessions
189
190//_______________________________________________
191// PROTOCOL DEFINITION: QUERY STATUS
192//_______________________________________________
193//
198 kXP_aborted // 3
200
201//_______________________________________________
202// PROTOCOL DEFINITION: SERVER'S ERROR CODES
203//_______________________________________________
204//
210 kXP_IOError, // 3104
212 kXP_NoSpace, // 3106
221 kXP_TooManySess // 3115
223
224
225//______________________________________________
226// PROTOCOL DEFINITION: CLIENT'S REQUESTS STRUCTS
227//______________________________________________
228//
229// We need to pack structures sent all over the net!
230// __attribute__((packed)) assures no padding bytes.
231//
232// Nice bodies of the headers for the client requests.
233// Note that the protocol specifies these values to be in network
234// byte order when sent
235//
236// G.Ganis: use of flat structures to avoid packing options
237
239 kXR_char streamid[2];
240 kXR_unt16 requestid;
241 kXR_int32 sid;
242 kXR_int32 int1;
243 kXR_int32 int2;
244 kXR_int32 int3;
245 kXR_int32 dlen;
246};
247
249 kXR_char streamid[2];
250 kXR_unt16 requestid;
251 kXR_int32 len;
252 kXR_int64 ofs;
253 kXR_int32 int1;
254 kXR_int32 dlen;
255};
256
258 kXR_char streamid[2];
259 kXR_unt16 requestid;
260 kXR_int32 sid;
261 kXR_int32 opt;
262 kXR_int32 cid;
263 kXR_char reserved[4];
264 kXR_int32 dlen;
265};
266
268 kXR_char streamid[2];
269 kXR_unt16 requestid;
270 kXR_int32 sid;
271 kXR_int32 opt;
272 kXR_char reserved[8];
273 kXR_int32 dlen;
274};
275
277 kXR_char streamid[2];
278 kXR_unt16 requestid;
279 kXR_int32 sid;
280 kXR_int32 type;
281 kXR_char reserved[8];
282 kXR_int32 dlen;
283};
284
286 kXR_char streamid[2];
287 kXR_unt16 requestid;
288 kXR_int32 pid;
289 kXR_char username[8];
290 kXR_char reserved[2];
291 kXR_char capver[1];
292 kXR_char role[1];
293 kXR_int32 dlen;
294};
295
296typedef union {
298 struct ClientAuthRequest auth;
303 struct XPClientInterruptRequest interrupt;
304 struct ClientRequestHdr header;
306
307// Server structures and codes are identical to the one in XProtocol.hh, for
308// the time being
309
310#endif
XProofRequestTypes
@ kXP_create
@ kXP_destroy
@ kXP_cleanup
@ kXP_sendmsg
@ kXP_ping
@ kXP_urgent
@ kXP_touch
@ kXP_direct
@ kXP_detach
@ kXP_attach
@ kXP_interrupt
@ kXP_Undef
@ kXP_readbuf
@ kXP_auth
@ kXP_login
@ kXP_admin
@ kXP_ctrlc
XProofSchedOpts
@ kXPD_sched_central
@ kXPD_sched_off
@ kXPD_sched_local
EStaticSelOpt
@ kSSORandom
@ kSSOLoadBased
@ kSSORoundRobin
XProofSessionStatus
@ kXPD_shutdown
@ kXPD_running
@ kXPD_idle
@ kXPD_unknown
@ kXPD_enqueued
EAdminExecType
@ kTail
@ kFind
@ kMore
@ kMd5sum
@ kGrep
@ kStat
@ kRm
@ kLs
EResourceType
@ kRTStatic
@ kRTNone
@ kRTDynamic
XProofResponseType
@ kXP_wait
@ kXP_ok
@ kXP_authmore
@ kXP_error
@ kXP_oksofar
@ kXP_attn
XPErrorCode
@ kXP_Unsupported
@ kXP_TooManySess
@ kXP_nosession
@ kXP_noserver
@ kXP_ArgTooLong
@ kXP_reconnecting
@ kXP_InvalidRequest
@ kXP_NotAuthorized
@ kXP_ArgInvalid
@ kXP_ArgMissing
@ kXP_NotFound
@ kXP_NoMemory
@ kXP_nomanager
@ kXP_IOError
@ kXP_NoSpace
@ kXP_ServerError
EAdminMsgType
@ kCleanupSessions
@ kPutFile
@ kGroupProperties
@ kExec
@ kQueryLogPaths
@ kCpFile
@ kQuerySessions
@ kSendMsgToUser
@ kROOTVersion
@ kReleaseWorker
@ kSessionAlias
@ kQueryWorkers
@ kGetFile
@ kGetWorkers
@ kQueryMssUrl
@ kQueryROOTVersions
@ kUndef
@ kReadBuffer
@ kSessionTag
const char *const XPD_GW_QueryEnqueued
XProofQueryStatus
@ kXP_processing
@ kXP_pending
@ kXP_aborted
@ kXP_done
XProofActionCode
@ kXPD_flush
@ kXPD_msgsid
@ kXPD_msg
@ kXPD_urgent
@ kXPD_wrkmortem
@ kXPD_feedback
@ kXPD_resume
@ kXPD_clusterinfo
@ kXPD_interrupt
@ kXPD_ping
@ kXPD_touch
@ kXPD_inflate
@ kXPD_timer
@ kXPD_priority
@ kXPD_errmsg
@ kXPD_srvmsg
const char *const XPD_GW_Failed
const char *const XPD_GW_Static