18 #include "TBufferFile.h" 21 #include "TGo4LockGuard.h" 56 Bool_t useobjectserver)
57 : fxAnalysisClient(owner), fxThreadHandler(nullptr), fiServerPort(0), fxTransport(nullptr), fuObjectPort(0),
58 fxConnectTransport(nullptr), fxDisConnectTransport(nullptr), fuConnectPort(0), fbConnectRequest(kFALSE),
59 fbDisConnectRequest(kFALSE), fbConnectIsOpen(kFALSE), fbConnectIsDone(kFALSE), fbConnectIsClose(kTRUE),
60 fxConnectorTimer(nullptr), fbUseObjectServer(useobjectserver)
76 const char *ownername;
82 ownername =
"never-come-here";
108 std::cerr <<
" Histogram Server constructor FATAL ERROR: no threadmanager !!" << std::endl;
130 INTS4 *pl_all =
nullptr;
184 static Bool_t isfirsttime = kTRUE;
188 if (waitresult == -2)
190 if (waitresult < 0) {
192 TGo4Log::Debug(
" HistogramServer: Negotiation channel open TIMEOUT");
193 std::cerr <<
" HistogramServer TIMEOUT ERROR opening socket connection !!! Terminating..." << std::endl;
200 TGo4Log::Debug(
" HistogramServer: Negotiation port getter TIMEOUT");
201 std::cerr <<
" HistogramServer TIMEOUT ERROR retrieving port number !!! Terminating..." << std::endl;
215 isfirsttime = kFALSE;
219 if (connectwaitseconds < 0) {
222 return connectwaitseconds;
235 if (recvchar && !strcmp(recvchar,
fxServerName.Data())) {
240 std::cerr <<
"##### check login with wrong base" << std::endl;
247 if (recvchar && !strcmp(recvchar,
fxServerPass.Data())) {
252 std::cerr <<
"##### check login with wrong passwd" << std::endl;
266 std::cerr <<
"-----Object server received null character for object request!" << std::endl;
271 TObject *
object =
nullptr;
286 Bool_t retval = kTRUE;
288 TBuffer *rootbuffer =
nullptr;
292 rootbuffer =
new TBufferFile(TBuffer::kWrite);
293 TFile *filsav = gFile;
295 rootbuffer->WriteObject(
object);
305 TGo4Log::Debug(
" HistogramServer: null character on finishing object client channel ");
308 TGo4Log::Debug(
" HistogramServer: ERROR on finishing object client channel ");
318 GO4TRACE((12,
"TGo4HistogramServer::SetConnect(TGo4Socket *)", __LINE__, __FILE__));
327 GO4TRACE((12,
"TGo4HistogramServer::SetDisConnect(TGo4Socket *)", __LINE__, __FILE__));
334 GO4TRACE((12,
"TGo4HistogramServer::TimerConnect()", __LINE__, __FILE__));
339 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--DisConnectRequest", __LINE__, __FILE__));
352 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--NO DisConnectRequest", __LINE__, __FILE__));
360 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--ConnectRequest", __LINE__, __FILE__));
364 GO4TRACE((10,
"TGo4HistogramServer::TimerConnect()--transport is not open", __LINE__, __FILE__));
377 GO4TRACE((10,
"TGo4HistogramServer::TimerConnect()--transport already open", __LINE__, __FILE__));
383 GO4TRACE((10,
"TGo4HistogramServer::TimerConnect()--no transport specified", __LINE__, __FILE__));
388 GO4TRACE((15,
"TGo4HistogramServer::TimerConnect()--NO ConnectRequest", __LINE__, __FILE__));
398 GO4TRACE((12,
"TGo4HistogramServer::WaitForOpen()", __LINE__, __FILE__));
420 GO4TRACE((12,
"TGo4HistogramServer::WaitForClose()", __LINE__, __FILE__));
438 GO4TRACE((12,
"TGo4HistogramServer::WaitForConnection()", __LINE__, __FILE__));
const char * GetName() const
TGo4ThreadHandler * GetThreadHandler()
virtual Int_t Close(Option_t *opt="")
static UInt_t Get_fguPORTWAITTIME()
virtual Int_t Send(TObject *obj)
Int_t SendBuffer(TBuffer *buf)
static void UnRegister(TGo4CommandReceiver *p)
static const char * fgcCONTHREADNAME
TGo4Task * GetTask() const
TGo4AnalysisObjectNames * GetNamesList() const
TGo4ObjConnectorTimer * fxConnectorTimer
Int_t ServeObjectClient()
TGo4AnalysisClient * fxAnalysisClient
static const Int_t fgiCLOSEWAITCYCLES
TString fxObjectThreadName
static const char * Get_fgcERROR()
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)
const char * ObjectThreadName() const
Bool_t NewThread(const char *name, TGo4Runnable *runnable)
static const Int_t fgiOPENWAITCYCLES
const char * ConnectHost() const
static void Debug(const char *text,...) GO4_PRINTF_ARGS
TGo4Analysis * fxAnalysis
Bool_t HandleObjectRequest()
TGo4ThreadHandler * fxThreadHandler
virtual char * RecvRaw(const char *name=nullptr)
static const char * fgcSHUTDOWNNAME
static TGo4CommandInvoker * Instance()
void Message(Int_t prio, const char *text,...)
static const UInt_t fguCONNECTWAITCYCLETIME
static const char * fgcOBJTHREADNAME
Bool_t Stop(const char *thname)
TGo4Analysis * GetAnalysis() const
static const UInt_t fguTIMERPERIOD
Bool_t fbDisConnectRequest
void SetDisConnect(TGo4Socket *trans)
Bool_t Start(const char *thname)
TNamed * GetObject(const char *name, const char *folder=nullptr)
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)
const char * ConnectorName() const
virtual ~TGo4HistogramServer()
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
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()
TGo4Socket * fxDisConnectTransport
Bool_t SendObject(TObject *obj)
void SetConnect(TGo4Socket *trans, const char *host, UInt_t port)