1 // Author: Mihai Niculescu 2013
3 /**************************************************************************
4 * Copyright(c) 1998-2013, ALICE Experiment at CERN, all rights reserved. *
5 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
6 * full copyright notice. *
7 **************************************************************************/
12 #include <TCondition.h>
13 #include <TBufferFile.h>
15 #include <TObjArray.h>
16 #include <TStreamerInfo.h>
19 #include <AliESDEvent.h>
20 #include <AliESDfriend.h>
21 #include <AliRawReader.h>
22 #include <AliRunLoader.h>
23 #include <AliReconstruction.h>
25 #include <AliNetMessage.h>
26 #include <AliSocket.h>
30 #include "AliRecoServerThread.h"
32 ClassImp(AliRecoServerThread)
33 AliRecoServerThread::AliRecoServerThread(zmq::context_t *context, AliReconstruction* reco)
34 : AliThreadedSocket(context, AliThreadedSocket::kWRITE),
41 AliRecoServerThread::~AliRecoServerThread()
47 Bool_t AliRecoServerThread::Start(const char* endpoint)
51 return AliThreadedSocket::Start();
54 void AliRecoServerThread::RunThrdWrite()
56 TThread::SetCancelAsynchronous();
57 TThread::SetCancelOn();
59 // generate a publish socket
60 AliSocket publisher(fContext, ZMQ_PUB);
61 publisher.Bind(fHost);
68 if (fReco->GetAbort() != TSelector::kContinue) return;
70 fReco->SlaveBegin(NULL);
71 if (fReco->GetAbort() != TSelector::kContinue) return;
73 //******* The loop over events
75 while ( fReco->HasNextEventAfter(iEvent) ) {
76 // check if process has enough resources
77 if (!fReco->HasEnoughResources(iEvent)) break;
78 Bool_t status = fReco->ProcessEvent(iEvent);
82 event = fReco->GetESDEvent();
84 AliNetMessage tmess(kMESS_OBJECT);
86 tmess.WriteObject(event);
88 publisher.Send(tmess);
93 fReco->Abort("ProcessEvent",TSelector::kAbortFile);
96 fReco->CleanProcessedEvent();
98 if(fCond->TimedWaitRelative(500)==0){
103 fReco->SlaveTerminate();
104 if (fReco->GetAbort() != TSelector::kContinue) return;
106 if (fReco->GetAbort() != TSelector::kContinue) return;