20 #include "TGo4LockGuard.h"
56 Bool_t useobjectserver)
57 : fxAnalysisClient(owner), fxThreadHandler(0), fiServerPort(0), fxTransport(0), fuObjectPort(0),
58 fxConnectTransport(0), fxDisConnectTransport(0), fuConnectPort(0), fbConnectRequest(kFALSE),
59 fbDisConnectRequest(kFALSE), fbConnectIsOpen(kFALSE), fbConnectIsDone(kFALSE), fbConnectIsClose(kTRUE),
60 fxConnectorTimer(0), fbUseObjectServer(useobjectserver)
77 const char *ownername;
83 ownername =
"never-come-here";
109 std::cerr <<
" Histogram Server constructor FATAL ERROR: no threadmanager !!" << std::endl;
115 : fxAnalysisClient(0), fxThreadHandler(0), fiServerPort(0), fxTransport(0), fuObjectPort(0), fxConnectTransport(0),
116 fxDisConnectTransport(0), fcConnectHost(0), fuConnectPort(0), fbConnectRequest(kFALSE),
117 fbDisConnectRequest(kFALSE), fbConnectIsOpen(kFALSE), fbConnectIsDone(kFALSE), fbConnectIsClose(kTRUE),
118 fbUseObjectServer(kFALSE)
131 INTS4 *pl_all = NULL;
185 static Bool_t isfirsttime = kTRUE;
189 if (waitresult == -2)
191 if (waitresult < 0) {
193 TGo4Log::Debug(
" HistogramServer: Negotiation channel open TIMEOUT");
194 std::cerr <<
" HistogramServer TIMEOUT ERROR opening socket connection !!! Terminating..." << std::endl;
201 TGo4Log::Debug(
" HistogramServer: Negotiation port getter TIMEOUT");
202 std::cerr <<
" HistogramServer TIMEOUT ERROR retrieving port number !!! Terminating..." << std::endl;
216 isfirsttime = kFALSE;
220 if (connectwaitseconds < 0) {
223 return connectwaitseconds;
237 if (recvchar && !strcmp(recvchar,
fxServerName.Data())) {
242 std::cerr <<
"##### check login with wrong base" << std::endl;
249 if (recvchar && !strcmp(recvchar,
fxServerPass.Data())) {
254 std::cerr <<
"##### check login with wrong passwd" << std::endl;
269 std::cerr <<
"-----Object server received null character for object request!" << std::endl;
289 Bool_t retval = kTRUE;
291 TBuffer *rootbuffer = 0;
296 TFile *filsav = gFile;
298 rootbuffer->WriteObject(
object);
309 TGo4Log::Debug(
" HistogramServer: null character on finishing object client channel ");
312 TGo4Log::Debug(
" HistogramServer: ERROR on finishing object client channel ");
322 GO4TRACE((12,
"TGo4HistogramServer::SetConnect(TGo4Socket *)", __LINE__, __FILE__));
331 GO4TRACE((12,
"TGo4HistogramServer::SetDisConnect(TGo4Socket *)", __LINE__, __FILE__));
338 GO4TRACE((12,
"TGo4HistogramServer::TimerConnect()", __LINE__, __FILE__));
343 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--DisConnectRequest", __LINE__, __FILE__));
356 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--NO DisConnectRequest", __LINE__, __FILE__));
364 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--ConnectRequest", __LINE__, __FILE__));
368 GO4TRACE((10,
"TGo4HistogramServer::TimerConnect()--transport is not open", __LINE__, __FILE__));
382 GO4TRACE((10,
"TGo4HistogramServer::TimerConnect()--transport already open", __LINE__, __FILE__));
388 GO4TRACE((10,
"TGo4HistogramServer::TimerConnect()--no transport specified", __LINE__, __FILE__));
393 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--NO ConnectRequest", __LINE__, __FILE__));
403 GO4TRACE((12,
"TGo4HistogramServer::WaitForOpen()", __LINE__, __FILE__));
426 GO4TRACE((12,
"TGo4HistogramServer::WaitForClose()", __LINE__, __FILE__));
446 GO4TRACE((12,
"TGo4HistogramServer::WaitForConnection()", __LINE__, __FILE__));
TGo4ThreadHandler * GetThreadHandler()
virtual Int_t Close(Option_t *opt="")
static UInt_t Get_fguPORTWAITTIME()
virtual Int_t Send(TObject *obj)
const char * ConnectHost() const
Int_t SendBuffer(TBuffer *buf)
static void UnRegister(TGo4CommandReceiver *p)
static const char * fgcCONTHREADNAME
TGo4ObjConnectorTimer * fxConnectorTimer
Int_t ServeObjectClient()
TGo4AnalysisClient * fxAnalysisClient
static const Int_t fgiCLOSEWAITCYCLES
TString fxObjectThreadName
static const char * Get_fgcERROR()
const char * ObjectThreadName() const
static void Sleep(UInt_t millisecs)
static const char * Get_fgcOK()
friend class TGo4HisConnectorRunnable
void DisconnectObjectClient()
static void Register(const char *name, TGo4CommandReceiver *p)
virtual Int_t Open(const char *host, Int_t port, Bool_t keepservsock=kFALSE)
Bool_t NewThread(const char *name, TGo4Runnable *runnable)
static const Int_t fgiOPENWAITCYCLES
TGo4Analysis * fxAnalysis
Bool_t HandleObjectRequest()
TGo4ThreadHandler * fxThreadHandler
static const char * fgcSHUTDOWNNAME
static TGo4CommandInvoker * Instance()
void Message(Int_t prio, const char *text,...)
TGo4Analysis * GetAnalysis() const
static const UInt_t fguCONNECTWAITCYCLETIME
static const char * fgcOBJTHREADNAME
Bool_t Stop(const char *thname)
static const UInt_t fguTIMERPERIOD
const char * GetName() const
Bool_t fbDisConnectRequest
void SetDisConnect(TGo4Socket *trans)
Bool_t Start(const char *thname)
const char * ConnectorName() const
TGo4Socket * fxConnectTransport
Int_t WaitForConnection()
INTS4 f_his_gethis(CHARS *pc_server, INTS4 l_port, CHARS *pc_base, CHARS *pc_access, CHARS *pc_histo, s_his_head **p_head, INTS4 **p_buffer, INTS4 *pl_size)
virtual ~TGo4HistogramServer()
TGo4AnalysisObjectNames * GetNamesList() const
virtual Int_t TimerConnect()
static const UInt_t fguOPENWAITCYCLETIME
Bool_t RemoveThread(const char *name)
static const Int_t fgiCONNECTWAITCYCLES
Int_t ConnectObjectClient()
static const UInt_t fguCLOSEWAITCYCLETIME
TNamed * GetObject(const char *name, const char *folder=0)
Bool_t IsTerminating() const
static Int_t Get_fgiPORTWAITCYCLES()
INTS4 f_his_server(CHARS *pc_base, CHARS *pc_access, INTS4 *pl_port)
static const char * fgcCOMGETLIST
static TGo4Analysis * Instance()
virtual char * RecvRaw(const char *name=0)
TGo4Socket * fxDisConnectTransport
Bool_t SendObject(TObject *obj)
void SetConnect(TGo4Socket *trans, const char *host, UInt_t port)
static void Debug(const char *text,...)