hclient.C: Client program which creates and fills a histogram. Every 1000 fills
void hclient(Bool_t evol=kFALSE)
{
// Client program which creates and fills a histogram. Every 1000 fills
// the histogram is send to the server which displays the histogram.
//
// To run this demo do the following:
// - Open three windows
// - Start ROOT in all three windows
// - Execute in the first window: .x hserv.C (or hserv2.C)
// - Execute in the second and third windows: .x hclient.C
// If you want to run the hserv.C on a different host, just change
// "localhost" in the TSocket ctor below to the desired hostname.
//
// The script argument "evol" can be used when using a modified version
// of the script where the clients and server are on systems with
// different versions of ROOT. When evol is set to kTRUE the socket will
// support automatic schema evolution between the client and the server.
//
//Author: Fons Rademakers
gBenchmark->Start("hclient");
// Open connection to server
TSocket *sock = new TSocket("localhost", 9090);
// Wait till we get the start message
char str[32];
sock->Recv(str, 32);
// server tells us who we are
int idx = !strcmp(str, "go 0") ? 0 : 1;
Float_t messlen = 0;
Float_t cmesslen = 0;
if (idx == 1)
sock->SetCompressionLevel(1);
TH1 *hpx;
if (idx == 0) {
// Create the histogram
hpx = new TH1F("hpx","This is the px distribution",100,-4,4);
hpx->SetFillColor(48); // set nice fillcolor
} else {
hpx = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4);
}
TMessage::EnableSchemaEvolutionForAll(evol);
TMessage mess(kMESS_OBJECT);
//TMessage mess(kMESS_OBJECT | kMESS_ACK);
// Fill histogram randomly
gRandom->SetSeed();
Float_t px, py;
const int kUPDATE = 1000;
for (int i = 0; i < 25000; i++) {
gRandom->Rannor(px,py);
if (idx == 0)
hpx->Fill(px);
else
hpx->Fill(px,py);
if (i && (i%kUPDATE) == 0) {
mess.Reset(); // re-use TMessage object
mess.WriteObject(hpx); // write object in message buffer
sock->Send(mess); // send message
messlen += mess.Length();
cmesslen += mess.CompLength();
}
}
sock->Send("Finished"); // tell server we are finished
if (cmesslen > 0)
printf("Average compression ratio: %g\n", messlen/cmesslen);
gBenchmark->Show("hclient");
// Close the socket
sock->Close();
}
Last change: Wed Dec 17 10:56:31 2008
Last generated: 2008-12-17 10:56
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.