Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

TGo4ControllerRunnable.cxx

Go to the documentation of this file.
00001 //-------------------------------------------------------------
00002 //        Go4 Release Package v3.04-01 (build 30401)
00003 //                      28-November-2008
00004 //---------------------------------------------------------------
00005 //   The GSI Online Offline Object Oriented (Go4) Project
00006 //   Experiment Data Processing at EE department, GSI
00007 //---------------------------------------------------------------
00008 //
00009 //Copyright (C) 2000- Gesellschaft f. Schwerionenforschung, GSI
00010 //                    Planckstr. 1, 64291 Darmstadt, Germany
00011 //Contact:            http://go4.gsi.de
00012 //----------------------------------------------------------------
00013 //This software can be used under the license agreements as stated
00014 //in Go4License.txt file which is part of the distribution.
00015 //----------------------------------------------------------------
00016 #include "TGo4ControllerRunnable.h"
00017 
00018 #include "TGo4Log.h"
00019 #include "TGo4Thread.h"
00020 #include "TGo4ExampleServer.h"
00021 #include "TGo4ExampleController.h"
00022 
00023 const UInt_t TGo4ControllerRunnable::fguCOMMANDINTERVAL=10000;
00024 
00025 TGo4ControllerRunnable::TGo4ControllerRunnable(const char* name, TGo4ExampleServer* serv)
00026 : TGo4Runnable(name,serv)
00027 {
00028    TRACE((15,"TGo4ControllerRunnable::TGo4ControllerRunnable(Text_t*,TGo4ExampleServer*) constructor",__LINE__, __FILE__));
00029    fxController=serv->GetController();
00030    fxServer=serv;
00031 }
00032 
00033 TGo4ControllerRunnable::~TGo4ControllerRunnable()
00034 {
00035    TRACE((15,"TGo4ControllerRunnable::~TGo4ControllerRunnable() destructor",__LINE__, __FILE__));
00036 }
00037 
00038 Int_t TGo4ControllerRunnable::Run(void*)
00039 {
00040    TRACE((12,"TGo4ControllerRunnable::Run()",__LINE__, __FILE__));
00041 
00042    // we have to update the queues according to the current task handler
00043    TGo4TaskHandler* currenttask=fxServer->GetCurrentTaskHandler();
00044    if(currenttask==0)
00045       {
00046          TRACE((11,"TGo4ControllerRunnable::Run()-- no current client existing",__LINE__, __FILE__));
00047          TGo4Thread::Sleep(fguCOMMANDINTERVAL); // wait before sending next command
00048          // no client has connected to server so far, we do nothing!
00049       }
00050    else
00051       {
00052          TRACE((11,"TGo4ControllerRunnable::Run()-- working on client's taskhandler queues",__LINE__, __FILE__));
00053          // at least one client is there
00054          TGo4Thread::Sleep(fguCOMMANDINTERVAL); // wait before sending next command
00055          // send first command object created by controller:
00056          TGo4Command* com=fxController->GetCommand(); // command from controller instance, may poll here
00057          fxServer->SubmitCommand(com); // send controller command to client
00058          // send second command object by name:
00059          fxServer->SubmitCommand("EXAction2"); // send command by name
00060          TObject* data= fxServer->NextObject(); // get data from client
00061          fxController->DisplayData(data); // display data here on gui
00062       }
00063    return 0;
00064 
00065 }
00066 
00067 //----------------------------END OF GO4 SOURCE FILE ---------------------

Generated on Fri Nov 28 12:59:30 2008 for Go4-v3.04-1 by  doxygen 1.4.2