#include "TLClient.h"
#include <iostream>
ClassImp(TLClient)
//
//
// Logs:
//
// $Log: TLClient.cc,v $
// Revision 1.4 2003/11/15 10:52:35 cvs
// upgraded TLServeer to new scheme
//
// Revision 1.3 2003/08/20 10:26:50 cvs
// Added scripts directory with two utilities now:
// modify_header which modify existing header and send it database
// deliver_header program and script which deliver header to clients
//
// libLComm was made ROOT compatible and GetBias(z) was added to LDataHeader
//
// Revision 1.2 2003/06/26 09:27:11 cvs
// added log fields...
//
using namespace std;
TLClient::TLClient(const ELClientTypes elc, const char* host,
const Int_t port)
: TSocket(host,port)
{
efClType=elc;
fConnected=kFALSE;
char str[80],rstr[80];
sprintf(str,"%d",efClType);
Send(str);
Recv(rstr,80);
if(!strcmp(str,rstr))
fConnected=kTRUE;
SetOption(kRecvBuffer,65535*4);
SetOption(kSendBuffer,65535*4);
}
TLClient::~TLClient() {
}
Bool_t TLClient::IsConnected()
{
return fConnected;
}
Int_t TLClient::SendTo(const ELClientTypes elcto,const char* mess)
{
char str[80];
sprintf(str,"S %d",elcto);
Send(str,kMESS_STRING|kMESS_ACK);
Int_t rc=Send(mess,kMESS_STRING|kMESS_ACK);
return rc;
}
Int_t TLClient::RecvFrom(const ELClientTypes elcfrom, char* mess, Bool_t wait)
{
char str[80],rstr[80];
if(wait)
sprintf(str,"R %d",elcfrom);
else
sprintf(str,"N %d",elcfrom);
int rc = Send(str);
if(rc==-1) return rc;
rc= Recv(rstr,80);
if(rc==-4) return rc;
//cout<<"RecvFrom:"<<rstr<<endl;
sprintf(str,"%d",elcfrom);
if(strcmp(rstr,str)) {
//cout<<"Wrong Message Received:"<<rstr<<":"<<str<<":"<<endl;
return kFALSE;
}
rc=Recv(mess,80);
//cout<<"RecvFromMessage:"<<mess<<endl;
return rc;
}
Int_t TLClient::SendTo(const ELClientTypes elcto,const TObject& obj)
{
char str[80];
sprintf(str,"S %d",elcto);
Send(str,kMESS_STRING|kMESS_ACK);
TMessage mess(kMESS_OBJECT|kMESS_ACK);
mess.Reset();
mess.WriteObject(&obj);
Int_t rc=Send(mess);
//obj.Dump();
return rc;
}
Int_t TLClient::RecvFrom(const ELClientTypes elcfrom,TObject*& obj, Bool_t wait)
{
char str[80],rstr[80];
TMessage *mess;
if(wait)
sprintf(str,"R %d",elcfrom);
else
sprintf(str,"N %d",elcfrom);
int rc = Send(str);
if(rc==-1) return rc;
rc=Recv(rstr,80);
if(rc==-4) return rc;
//cout<<"RecvFrom"<<rstr<<endl;
sprintf(str,"%d",elcfrom);
if(strcmp(rstr,str)) {
//cout<<"Wrong Message Received:"<<rstr<<":"<<str<<":"<<endl;
return 0;
}
rc=Recv(mess);
if(mess->What() == kMESS_OBJECT) {
obj=(TObject*)mess->ReadObject(mess->GetClass());
delete mess;
//obj->Dump();
//printf("POINTER %dn",obj);
return rc;
}
delete mess;
return -1;
}
Int_t TLClient::QueueSize(const ELClientTypes elcto)
//query TLServer for the size of queue from this client to client elcto
//if error occured, then negative number is returned
{
char str[80],rstr[80];
int size;
sprintf(str,"Q %d",elcto);
int rc = Send(str);
if(rc==-1) return -1;
rc= Recv(rstr,80);
if(rc==-4) return -2;
//cout<<"RecvFrom:"<<rstr<<endl;
sprintf(str,"%d",elcto);
if(strcmp(rstr,str)) {
//cout<<"Wrong Message Received:"<<rstr<<":"<<str<<":"<<endl;
return -3;
}
rc=Recv(rstr,80);
//cout<<"RecvFromMessage:"<<mess<<endl;
if (sscanf(rstr,"SIZE %d",&size)!=1) return -4;
return size;
}
ROOT page - Class index - Top of the page
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.