#include #include #include #include #include #include #include #include class MyClient { RQ_OBJECT("MyClient") public: MyClient(); virtual ~MyClient(); void recv(TSocket * sock); void received(TMessage * mess); //*SIGNAL* void checkman(); private: TMonitor * mon; }; class testshow { public: testshow(); virtual ~testshow(); void showMessage(TMessage * Mess); private: TH2F * fHpxpy; TCanvas * c1; MyClient * client; }; MyClient::MyClient() { mon = new TMonitor(); TSocket * s = new TSocket("localhost", 9090); cout <<"connected to: "<< s->GetInetAddress().GetHostName()<<" "<Add(s); mon->Connect("Ready(TSocket*)","MyClient",this,"recv(TSocket*)"); } MyClient::~MyClient() { delete mon; } void MyClient::received(TMessage * Mess) { Long_t args[1]; args[0] = (Long_t) Mess; Emit("received(TMessage*)",args); } void MyClient::checkman() { TSocket * s; if ((s = mon->Select(20)) != (TSocket*)-1) //20ms timeout { recv(s); } } void MyClient::recv(TSocket * s) { TMessage *mess; if (s->Recv(mess) <= 0) { return; } received(mess); delete mess; } testshow::testshow() { fHpxpy = 0; c1 = new TCanvas("fCanvas","Hsimple Client",-200,200,500,500); client = new MyClient(); client->Connect("received(TMessage*)","testshow",this,"showMessage(TMessage*)"); } testshow::~testshow() { delete c1; delete fHpxpy; } void testshow::showMessage(TMessage * mess) { if (fHpxpy) delete fHpxpy; if (mess->GetClass()->InheritsFrom(TH1::Class())) { fHpxpy = (TH1*) mess->ReadObject(mess->GetClass()); if (!c1->TestBit(TObject::kNotDeleted)) { gApplication->Terminate(); } fHpxpy->Draw(); c1->Modified(); c1->Update(); } } void testclient() { new testshow(); }