#include "honlineclientservercom.h"
#include "TThread.h"
#include "TStopwatch.h"
#include "hades.h"
#include "hdatasource.h"
#include <iostream>
#include <vector>
using namespace std;
ClassImp(HOnlineClientServerCom);
Int_t HOnlineClientServerCom::fEvtCtInterval = 100;
Float_t HOnlineClientServerCom::fSpeed = 0;
Bool_t HOnlineClientServerCom::isInit = kFALSE;
Bool_t HOnlineClientServerCom::doStop = kFALSE;
HOnlineClientServerCom::HOnlineClientServerCom(TString name, TString hostname, Int_t port) {
this->SetName(name);
monitor = 0;
serversocket = 0;
fPort = port;
fHostname = hostname;
fTimeout = 1000;
fDebug = kFALSE;
fEvtCtInterval = 100;
fSpeed = 0;
eventLoopThread = NULL;
isInit = kFALSE;
doStop = kFALSE;
masterClient = NULL;
}
Bool_t HOnlineClientServerCom::init() {
serversocket = new TServerSocket(fPort, kFALSE);
if (!serversocket->IsValid()) {
return kFALSE;
}
monitor = new TMonitor;
monitor->Add(serversocket);
return kTRUE;
}
HOnlineClientServerCom::~HOnlineClientServerCom()
{
TThread* self = TThread::Self();
self->Lock();
serversocket->Close();
delete monitor;
socketlist.Delete();
delete serversocket;
serversocket = 0;
monitor = 0;
TThread::Delete(eventLoopThread);
delete eventLoopThread;
self->UnLock();
}
Bool_t HOnlineClientServerCom::sendListToClient(TSocket* socket, TList* list)
{
if (!socket->IsValid()) return kFALSE;
TMessage answer(kMESS_OBJECT);
answer.WriteObject(list);
if (socket->Send(answer) <= 0) return kFALSE;
return kTRUE;
}
Bool_t HOnlineClientServerCom::sendHistToClient(TSocket* socket, HOnlineMonHistAddon* hist) {
if (!socket->IsValid()) return kFALSE;
TMessage answer(kMESS_OBJECT);
answer.WriteObject(hist);
if (socket->Send(answer) <= 0) return kFALSE;
return kTRUE;
}
Bool_t HOnlineClientServerCom::sendTextToClient(TSocket* socket, TString msg) {
if (!socket->IsValid()) return kFALSE;
TMessage answer(kMESS_STRING);
answer.WriteTString(msg);
if (socket->Send(answer) <= 0) return kFALSE;
return kTRUE;
}
Bool_t HOnlineClientServerCom::processClientRequests()
{
TList* wr = new TList();
TList* rr = new TList();
Int_t numSockets = monitor->Select(rr, wr, fTimeout);
if(fDebug) TThread::Printf("HOnlineClientServerCom:: number of sockets waiting: %d", numSockets);
if (numSockets == 0) {
return kFALSE;
}
for(Int_t i=0;i<rr->LastIndex()+1;i++) {
TSocket* s = (TSocket*) rr->At(i);
if(s->IsA() == TServerSocket::Class()) {
TSocket *sock = ((TServerSocket*)s)->Accept();
monitor->Add(sock);
socketlist.Add(sock);
TThread::Printf("HOnlineClientServerCom:: connection from client %s accepted",(sock->GetInetAddress()).GetHostName());
if(!masterClient) masterClient = sock;
} else {
TMessage* mess = 0;
Int_t rcode = s->Recv(mess);
if (rcode <= 0) {
TString client = (s->GetInetAddress()).GetHostName();
monitor->Remove(s);
socketlist.Remove(s);
s->Close();
delete s;
s = 0;
delete mess;
mess = 0;
TThread::Printf("HOnlineClientServerCom:: connection from client %s closed",client.Data());
} else {
if (mess->What() == kMESS_STRING) {
TString str;
mess->ReadTString(str);
TObjString* objstr = new TObjString();
objstr->SetString(str);
clientRequests.Add(objstr, s);
}
delete mess;
mess = 0;
}
}
}
delete wr;
delete rr;
return kTRUE;
}
Int_t HOnlineClientServerCom::processClients(TList& histpool) {
while(isInit == kFALSE) {
TThread::Printf("HOnlineClientServerCom:: Waiting for first eventLoop ...");
TThread::Sleep(1);
}
while(1)
{
if (processClientRequests())
{
TIterator* myiter = clientRequests.MakeIterator();
TObjString* mapkey;
TString histname2send;
TSocket* socket;
HOnlineMonHistAddon* hist2send;
while ((mapkey=(TObjString*)myiter->Next()) != 0)
{
socket = (TSocket*) clientRequests.GetValue(mapkey);
TString recvstring = mapkey->GetString();
if(recvstring.BeginsWith("CMD "))
{
if (recvstring.CompareTo("CMD speed") == 0) {
sendTextToClient(socket,Form("%5.2f evts/s",fSpeed));
}
if (recvstring.CompareTo("CMD filename") == 0) {
TString filename = "no file yet";
HDataSource* source = gHades->getDataSource();
if(source){
filename = gHades->getDataSource()->getCurrentFileName();
}
sendTextToClient(socket,filename);
}
if (recvstring.CompareTo("CMD ismaster") == 0) {
TThread::Printf("HOnlineClientServerCom:: received command '%s' from host '%s'", recvstring.Data(), (socket->GetInetAddress()).GetHostName());
TString message = "no";
if(socket == masterClient ) {
message = "yes";
TThread::Printf("HOnlineClientServerCom:: This client is considered as Master client");
} else {
TThread::Printf("HOnlineClientServerCom:: This client is considered as Slave client");
}
sendTextToClient(socket,message);
}
if (recvstring.CompareTo("CMD setmaster") == 0) {
TThread::Printf("HOnlineClientServerCom:: received command '%s' from host '%s'", recvstring.Data(), (socket->GetInetAddress()).GetHostName());
TThread::Printf("HOnlineClientServerCom:: This client is set as Master client");
masterClient = socket;
TString message = "ok";
sendTextToClient(socket,message);
}
if (recvstring.CompareTo("CMD histlist") == 0) {
TList* listhistname = new TList();
for(Int_t i=0;i<histpool.LastIndex()+1;i++) {
TString tmpname = ((HOnlineMonHistAddon*)histpool.At(i))->GetName();
TObjString* tmpobj = new TObjString();
tmpobj->SetString(tmpname);
listhistname->Add(tmpobj);
}
if (!sendListToClient(socket, listhistname)) {
TThread::Printf("HOnlineClientServerCom:: Error: could not send list of histogram names to client");
}
listhistname->Delete();
listhistname = 0;
}
if (recvstring.CompareTo("CMD stop") == 0) {
TThread::Printf("HOnlineClientServerCom:: received command '%s' from host '%s'", recvstring.Data(), (socket->GetInetAddress()).GetHostName());
if(masterClient!=socket){
TThread::Printf("HOnlineClientServerCom:: THIS CLIENT IS NOT THE MASTER! WILL BE IGNORED!");
sendTextToClient(socket,"IGNORED");
} else {
TThread::Printf("HOnlineClientServerCom:: stopping server... Received command 'stop' from host '%s'", (socket->GetInetAddress()).GetHostName());
doStop = kTRUE;
Int_t ct = 0;
TThread::EState state = eventLoopThread->GetState();
while(state != TThread::kCanceledState && ct < 10) {
ct++;
TThread::Printf("HOnlineClientServerCom:: Waiting for eventLoop to finish .... n time %i",ct);
state = eventLoopThread->GetState();
TThread::Sleep(1);
}
if(ct == 10) {
TThread::Printf("HOnlineClientServerCom:: EventLoop seems to be hanging .... finishing anyway.");
}
TThread::Ps();
return -1;
}
}
if (recvstring.CompareTo("CMD resetall") == 0) {
TThread::Printf("HOnlineClientServerCom:: reset all histograms ... Received command 'resetall' from host '%s'", (socket->GetInetAddress()).GetHostName());
if(masterClient!=socket){
TThread::Printf("HOnlineClientServerCom:: THIS CLIENT IS NOT THE MASTER! WILL BE IGNORED!");
sendTextToClient(socket,"IGNORED");
} else {
TThread* self = TThread::Self();
self->Lock();
HOnlineMonHistAddon* addon;
TIterator* it = histpool.MakeIterator();
while( ((addon = (HOnlineMonHistAddon*) it->Next()) != 0) ) {
if(addon->getActive() != 0) addon->reset(0,0);
}
delete it;
sendTextToClient(socket,"resetdone");
self->UnLock();
}
}
delete (TObjString*) (clientRequests.Remove(mapkey));
}
}
myiter->Reset();
while ((mapkey=(TObjString*)myiter->Next()) != 0)
{
socket = (TSocket*) clientRequests.GetValue(mapkey);
TString recvstring = mapkey->GetString();
if(recvstring.BeginsWith("CMD ")) {
} else {
TString histname2send = recvstring;
hist2send = (HOnlineMonHistAddon*) histpool.FindObject(histname2send.Data());
if (hist2send == 0) {
TString errmsg = "ERROR: Can't find requested histogram '";
errmsg += histname2send;
errmsg += "' in list of active histograms.";
TThread::Printf("HOnlineClientServerCom:: %s",errmsg.Data());
if (!sendTextToClient(socket, errmsg)) {
TThread::Printf("HOnlineClientServerCom:: ERROR: could not send text %s to client %s '",errmsg.Data(),(socket->GetInetAddress()).GetHostName());
}
delete (TObjString*) (clientRequests.Remove(mapkey));
} else {
if (!sendHistToClient(socket, hist2send)) {
TThread::Printf("HOnlineClientServerCom:: ERROR: could not send histogram %s to client %s",hist2send->GetName(),(socket->GetInetAddress()).GetHostName());
}
delete (TObjString*) (clientRequests.Remove(mapkey));
}
}
}
delete myiter;
}
}
return 0;
}
void* HOnlineClientServerCom::ThreadEventLoop(void* arg) {
vector < fillptrHOnlineClientServerCom >& fillfunctions = *((vector < fillptrHOnlineClientServerCom >*) arg);
Int_t count = 0;
Bool_t rc = 0;
TStopwatch timer;
timer.Start();
while(rc == 0 && !doStop) {
if(!gHades->eventLoop(1)) {
TThread::Printf("HOnlineClientServerCom:: Reached last Event!");
rc = -1 ; continue ;
}
count++;
if(count%100 == 0){
Float_t time = timer.RealTime();
if(time > 0.0001) fSpeed = 100./time;
else fSpeed = 0;
timer.Reset();
timer.Start();
}
if(count>=1) isInit = kTRUE;
if(fEvtCtInterval!=-1 && count%fEvtCtInterval == 0 ){ TThread::Printf("Event %i",count);}
for(UInt_t i = 0; i < fillfunctions.size(); i++){
fillptrHOnlineClientServerCom func = fillfunctions[i];
(*func)(count);
}
}
TThread::Printf("HOnlineClientServerCom:: eventLoopThread finsihed!");
return 0;
}
void HOnlineClientServerCom::eventLoop(vector < fillptrHOnlineClientServerCom >* fillfunctions)
{
if (!eventLoopThread) {
eventLoopThread = new TThread("eventloopThread", ( void(*) (void*) )&ThreadEventLoop, (void*) fillfunctions);
eventLoopThread->Run();
TThread::Ps();
}
}
honlineclientservercom.cc:1 honlineclientservercom.cc:2 honlineclientservercom.cc:3 honlineclientservercom.cc:4 honlineclientservercom.cc:5 honlineclientservercom.cc:6 honlineclientservercom.cc:7 honlineclientservercom.cc:8 honlineclientservercom.cc:9 honlineclientservercom.cc:10 honlineclientservercom.cc:11 honlineclientservercom.cc:12 honlineclientservercom.cc:13 honlineclientservercom.cc:14 honlineclientservercom.cc:15 honlineclientservercom.cc:16 honlineclientservercom.cc:17 honlineclientservercom.cc:18 honlineclientservercom.cc:19 honlineclientservercom.cc:20 honlineclientservercom.cc:21 honlineclientservercom.cc:22 honlineclientservercom.cc:23 honlineclientservercom.cc:24 honlineclientservercom.cc:25 honlineclientservercom.cc:26 honlineclientservercom.cc:27 honlineclientservercom.cc:28 honlineclientservercom.cc:29 honlineclientservercom.cc:30 honlineclientservercom.cc:31 honlineclientservercom.cc:32 honlineclientservercom.cc:33 honlineclientservercom.cc:34 honlineclientservercom.cc:35 honlineclientservercom.cc:36 honlineclientservercom.cc:37 honlineclientservercom.cc:38 honlineclientservercom.cc:39 honlineclientservercom.cc:40 honlineclientservercom.cc:41 honlineclientservercom.cc:42 honlineclientservercom.cc:43 honlineclientservercom.cc:44 honlineclientservercom.cc:45 honlineclientservercom.cc:46 honlineclientservercom.cc:47 honlineclientservercom.cc:48 honlineclientservercom.cc:49 honlineclientservercom.cc:50 honlineclientservercom.cc:51 honlineclientservercom.cc:52 honlineclientservercom.cc:53 honlineclientservercom.cc:54 honlineclientservercom.cc:55 honlineclientservercom.cc:56 honlineclientservercom.cc:57 honlineclientservercom.cc:58 honlineclientservercom.cc:59 honlineclientservercom.cc:60 honlineclientservercom.cc:61 honlineclientservercom.cc:62 honlineclientservercom.cc:63 honlineclientservercom.cc:64 honlineclientservercom.cc:65 honlineclientservercom.cc:66 honlineclientservercom.cc:67 honlineclientservercom.cc:68 honlineclientservercom.cc:69 honlineclientservercom.cc:70 honlineclientservercom.cc:71 honlineclientservercom.cc:72 honlineclientservercom.cc:73 honlineclientservercom.cc:74 honlineclientservercom.cc:75 honlineclientservercom.cc:76 honlineclientservercom.cc:77 honlineclientservercom.cc:78 honlineclientservercom.cc:79 honlineclientservercom.cc:80 honlineclientservercom.cc:81 honlineclientservercom.cc:82 honlineclientservercom.cc:83 honlineclientservercom.cc:84 honlineclientservercom.cc:85 honlineclientservercom.cc:86 honlineclientservercom.cc:87 honlineclientservercom.cc:88 honlineclientservercom.cc:89 honlineclientservercom.cc:90 honlineclientservercom.cc:91 honlineclientservercom.cc:92 honlineclientservercom.cc:93 honlineclientservercom.cc:94 honlineclientservercom.cc:95 honlineclientservercom.cc:96 honlineclientservercom.cc:97 honlineclientservercom.cc:98 honlineclientservercom.cc:99 honlineclientservercom.cc:100 honlineclientservercom.cc:101 honlineclientservercom.cc:102 honlineclientservercom.cc:103 honlineclientservercom.cc:104 honlineclientservercom.cc:105 honlineclientservercom.cc:106 honlineclientservercom.cc:107 honlineclientservercom.cc:108 honlineclientservercom.cc:109 honlineclientservercom.cc:110 honlineclientservercom.cc:111 honlineclientservercom.cc:112 honlineclientservercom.cc:113 honlineclientservercom.cc:114 honlineclientservercom.cc:115 honlineclientservercom.cc:116 honlineclientservercom.cc:117 honlineclientservercom.cc:118 honlineclientservercom.cc:119 honlineclientservercom.cc:120 honlineclientservercom.cc:121 honlineclientservercom.cc:122 honlineclientservercom.cc:123 honlineclientservercom.cc:124 honlineclientservercom.cc:125 honlineclientservercom.cc:126 honlineclientservercom.cc:127 honlineclientservercom.cc:128 honlineclientservercom.cc:129 honlineclientservercom.cc:130 honlineclientservercom.cc:131 honlineclientservercom.cc:132 honlineclientservercom.cc:133 honlineclientservercom.cc:134 honlineclientservercom.cc:135 honlineclientservercom.cc:136 honlineclientservercom.cc:137 honlineclientservercom.cc:138 honlineclientservercom.cc:139 honlineclientservercom.cc:140 honlineclientservercom.cc:141 honlineclientservercom.cc:142 honlineclientservercom.cc:143 honlineclientservercom.cc:144 honlineclientservercom.cc:145 honlineclientservercom.cc:146 honlineclientservercom.cc:147 honlineclientservercom.cc:148 honlineclientservercom.cc:149 honlineclientservercom.cc:150 honlineclientservercom.cc:151 honlineclientservercom.cc:152 honlineclientservercom.cc:153 honlineclientservercom.cc:154 honlineclientservercom.cc:155 honlineclientservercom.cc:156 honlineclientservercom.cc:157 honlineclientservercom.cc:158 honlineclientservercom.cc:159 honlineclientservercom.cc:160 honlineclientservercom.cc:161 honlineclientservercom.cc:162 honlineclientservercom.cc:163 honlineclientservercom.cc:164 honlineclientservercom.cc:165 honlineclientservercom.cc:166 honlineclientservercom.cc:167 honlineclientservercom.cc:168 honlineclientservercom.cc:169 honlineclientservercom.cc:170 honlineclientservercom.cc:171 honlineclientservercom.cc:172 honlineclientservercom.cc:173 honlineclientservercom.cc:174 honlineclientservercom.cc:175 honlineclientservercom.cc:176 honlineclientservercom.cc:177 honlineclientservercom.cc:178 honlineclientservercom.cc:179 honlineclientservercom.cc:180 honlineclientservercom.cc:181 honlineclientservercom.cc:182 honlineclientservercom.cc:183 honlineclientservercom.cc:184 honlineclientservercom.cc:185 honlineclientservercom.cc:186 honlineclientservercom.cc:187 honlineclientservercom.cc:188 honlineclientservercom.cc:189 honlineclientservercom.cc:190 honlineclientservercom.cc:191 honlineclientservercom.cc:192 honlineclientservercom.cc:193 honlineclientservercom.cc:194 honlineclientservercom.cc:195 honlineclientservercom.cc:196 honlineclientservercom.cc:197 honlineclientservercom.cc:198 honlineclientservercom.cc:199 honlineclientservercom.cc:200 honlineclientservercom.cc:201 honlineclientservercom.cc:202 honlineclientservercom.cc:203 honlineclientservercom.cc:204 honlineclientservercom.cc:205 honlineclientservercom.cc:206 honlineclientservercom.cc:207 honlineclientservercom.cc:208 honlineclientservercom.cc:209 honlineclientservercom.cc:210 honlineclientservercom.cc:211 honlineclientservercom.cc:212 honlineclientservercom.cc:213 honlineclientservercom.cc:214 honlineclientservercom.cc:215 honlineclientservercom.cc:216 honlineclientservercom.cc:217 honlineclientservercom.cc:218 honlineclientservercom.cc:219 honlineclientservercom.cc:220 honlineclientservercom.cc:221 honlineclientservercom.cc:222 honlineclientservercom.cc:223 honlineclientservercom.cc:224 honlineclientservercom.cc:225 honlineclientservercom.cc:226 honlineclientservercom.cc:227 honlineclientservercom.cc:228 honlineclientservercom.cc:229 honlineclientservercom.cc:230 honlineclientservercom.cc:231 honlineclientservercom.cc:232 honlineclientservercom.cc:233 honlineclientservercom.cc:234 honlineclientservercom.cc:235 honlineclientservercom.cc:236 honlineclientservercom.cc:237 honlineclientservercom.cc:238 honlineclientservercom.cc:239 honlineclientservercom.cc:240 honlineclientservercom.cc:241 honlineclientservercom.cc:242 honlineclientservercom.cc:243 honlineclientservercom.cc:244 honlineclientservercom.cc:245 honlineclientservercom.cc:246 honlineclientservercom.cc:247 honlineclientservercom.cc:248 honlineclientservercom.cc:249 honlineclientservercom.cc:250 honlineclientservercom.cc:251 honlineclientservercom.cc:252 honlineclientservercom.cc:253 honlineclientservercom.cc:254 honlineclientservercom.cc:255 honlineclientservercom.cc:256 honlineclientservercom.cc:257 honlineclientservercom.cc:258 honlineclientservercom.cc:259 honlineclientservercom.cc:260 honlineclientservercom.cc:261 honlineclientservercom.cc:262 honlineclientservercom.cc:263 honlineclientservercom.cc:264 honlineclientservercom.cc:265 honlineclientservercom.cc:266 honlineclientservercom.cc:267 honlineclientservercom.cc:268 honlineclientservercom.cc:269 honlineclientservercom.cc:270 honlineclientservercom.cc:271 honlineclientservercom.cc:272 honlineclientservercom.cc:273 honlineclientservercom.cc:274 honlineclientservercom.cc:275 honlineclientservercom.cc:276 honlineclientservercom.cc:277 honlineclientservercom.cc:278 honlineclientservercom.cc:279 honlineclientservercom.cc:280 honlineclientservercom.cc:281 honlineclientservercom.cc:282 honlineclientservercom.cc:283 honlineclientservercom.cc:284 honlineclientservercom.cc:285 honlineclientservercom.cc:286 honlineclientservercom.cc:287 honlineclientservercom.cc:288 honlineclientservercom.cc:289 honlineclientservercom.cc:290 honlineclientservercom.cc:291 honlineclientservercom.cc:292 honlineclientservercom.cc:293 honlineclientservercom.cc:294 honlineclientservercom.cc:295 honlineclientservercom.cc:296 honlineclientservercom.cc:297 honlineclientservercom.cc:298 honlineclientservercom.cc:299 honlineclientservercom.cc:300 honlineclientservercom.cc:301 honlineclientservercom.cc:302 honlineclientservercom.cc:303 honlineclientservercom.cc:304 honlineclientservercom.cc:305 honlineclientservercom.cc:306 honlineclientservercom.cc:307 honlineclientservercom.cc:308 honlineclientservercom.cc:309 honlineclientservercom.cc:310 honlineclientservercom.cc:311 honlineclientservercom.cc:312 honlineclientservercom.cc:313 honlineclientservercom.cc:314 honlineclientservercom.cc:315 honlineclientservercom.cc:316 honlineclientservercom.cc:317 honlineclientservercom.cc:318 honlineclientservercom.cc:319 honlineclientservercom.cc:320 honlineclientservercom.cc:321 honlineclientservercom.cc:322 honlineclientservercom.cc:323 honlineclientservercom.cc:324 honlineclientservercom.cc:325 honlineclientservercom.cc:326 honlineclientservercom.cc:327 honlineclientservercom.cc:328 honlineclientservercom.cc:329 honlineclientservercom.cc:330 honlineclientservercom.cc:331 honlineclientservercom.cc:332 honlineclientservercom.cc:333 honlineclientservercom.cc:334 honlineclientservercom.cc:335 honlineclientservercom.cc:336 honlineclientservercom.cc:337 honlineclientservercom.cc:338 honlineclientservercom.cc:339 honlineclientservercom.cc:340 honlineclientservercom.cc:341 honlineclientservercom.cc:342 honlineclientservercom.cc:343 honlineclientservercom.cc:344 honlineclientservercom.cc:345 honlineclientservercom.cc:346 honlineclientservercom.cc:347 honlineclientservercom.cc:348 honlineclientservercom.cc:349 honlineclientservercom.cc:350 honlineclientservercom.cc:351 honlineclientservercom.cc:352 honlineclientservercom.cc:353 honlineclientservercom.cc:354 honlineclientservercom.cc:355 honlineclientservercom.cc:356 honlineclientservercom.cc:357 honlineclientservercom.cc:358 honlineclientservercom.cc:359 honlineclientservercom.cc:360 honlineclientservercom.cc:361 honlineclientservercom.cc:362 honlineclientservercom.cc:363 honlineclientservercom.cc:364 honlineclientservercom.cc:365 honlineclientservercom.cc:366 honlineclientservercom.cc:367 honlineclientservercom.cc:368 honlineclientservercom.cc:369 honlineclientservercom.cc:370 honlineclientservercom.cc:371 honlineclientservercom.cc:372 honlineclientservercom.cc:373 honlineclientservercom.cc:374 honlineclientservercom.cc:375 honlineclientservercom.cc:376 honlineclientservercom.cc:377 honlineclientservercom.cc:378 honlineclientservercom.cc:379 honlineclientservercom.cc:380 honlineclientservercom.cc:381 honlineclientservercom.cc:382 honlineclientservercom.cc:383 honlineclientservercom.cc:384 honlineclientservercom.cc:385 honlineclientservercom.cc:386 honlineclientservercom.cc:387 honlineclientservercom.cc:388 honlineclientservercom.cc:389 honlineclientservercom.cc:390 honlineclientservercom.cc:391 honlineclientservercom.cc:392 honlineclientservercom.cc:393 honlineclientservercom.cc:394 honlineclientservercom.cc:395 honlineclientservercom.cc:396 honlineclientservercom.cc:397 honlineclientservercom.cc:398 honlineclientservercom.cc:399 honlineclientservercom.cc:400 honlineclientservercom.cc:401 honlineclientservercom.cc:402 honlineclientservercom.cc:403 honlineclientservercom.cc:404 honlineclientservercom.cc:405 honlineclientservercom.cc:406 honlineclientservercom.cc:407 honlineclientservercom.cc:408 honlineclientservercom.cc:409 honlineclientservercom.cc:410 honlineclientservercom.cc:411 honlineclientservercom.cc:412 honlineclientservercom.cc:413 honlineclientservercom.cc:414 honlineclientservercom.cc:415 honlineclientservercom.cc:416 honlineclientservercom.cc:417 honlineclientservercom.cc:418 honlineclientservercom.cc:419 honlineclientservercom.cc:420 honlineclientservercom.cc:421 honlineclientservercom.cc:422 honlineclientservercom.cc:423 honlineclientservercom.cc:424 honlineclientservercom.cc:425 honlineclientservercom.cc:426 honlineclientservercom.cc:427 honlineclientservercom.cc:428 honlineclientservercom.cc:429 honlineclientservercom.cc:430 honlineclientservercom.cc:431 honlineclientservercom.cc:432 honlineclientservercom.cc:433 honlineclientservercom.cc:434 honlineclientservercom.cc:435 honlineclientservercom.cc:436 honlineclientservercom.cc:437 honlineclientservercom.cc:438 honlineclientservercom.cc:439 honlineclientservercom.cc:440 honlineclientservercom.cc:441 honlineclientservercom.cc:442 honlineclientservercom.cc:443 honlineclientservercom.cc:444 honlineclientservercom.cc:445 honlineclientservercom.cc:446 honlineclientservercom.cc:447 honlineclientservercom.cc:448 honlineclientservercom.cc:449 honlineclientservercom.cc:450 honlineclientservercom.cc:451 honlineclientservercom.cc:452 honlineclientservercom.cc:453 honlineclientservercom.cc:454 honlineclientservercom.cc:455 honlineclientservercom.cc:456 honlineclientservercom.cc:457 honlineclientservercom.cc:458