• Classes
  • Modules
  • Namespaces
  • Files
  • Related Pages
  • File List
  • File Members

bulkDataCallback.h

Go to the documentation of this file.
00001 #ifndef _BULKDATA_CALLBACK_H
00002 #define _BULKDATA_CALLBACK_H
00003 
00004 #ifndef __cplusplus
00005 #error This is a C++ include file and cannot be used from plain C
00006 #endif
00007 
00008 #include "orbsvcs/AV/AVStreams_i.h"
00009 #include "orbsvcs/AV/Endpoint_Strategy.h"
00010 #include "orbsvcs/AV/Protocol_Factory.h"
00011 #include "orbsvcs/AV/Flows_T.h"
00012 #include "orbsvcs/AV/Transport.h"
00013 #include "orbsvcs/AV/Policy.h"
00014 
00015 #include <baci.h>
00016 
00017 #include "ACSBulkDataError.h"
00018 #include "ACSBulkDataStatus.h"
00019 
00020 #include "bulkDataReceiver.h"
00021 
00022 #include <iostream>
00023 
00024 class BulkDataCallback : public TAO_AV_Callback
00025 {
00026 
00027   public:
00028 
00029     enum Cb_State
00030     {
00031         CB_UNS,
00032         CB_SEND_PARAM,
00033         CB_SEND_DATA
00034     };
00035 
00036     enum Cb_SubState
00037     {
00038         CB_SUB_UNS,
00039         CB_SUB_INIT
00040     };
00041 
00042 
00043     BulkDataCallback();
00044 
00045     virtual ~BulkDataCallback();
00046 
00047     virtual int handle_start(void);
00048 
00049     virtual int handle_stop (void);
00050 
00051     virtual int handle_destroy (void);
00052 
00053     virtual int receive_frame (ACE_Message_Block *frame, TAO_AV_frame_info *frame_info, const ACE_Addr &);
00054 
00055     virtual void setFlowname (const char*);
00056 
00057     virtual void setReceiverName(ACE_CString recvName);
00058 
00059     virtual void setSleepTime(ACE_Time_Value locWaitPeriod);
00060 
00061     virtual void setSafeTimeout(CORBA::ULong locLoop);
00062 
00063     virtual CORBA::Boolean isTimeout();
00064     virtual CORBA::Boolean isWorking();
00065     virtual CORBA::Boolean isError();
00066 
00067     virtual CompletionImpl *getErrorCompletion();
00068 
00069     virtual void setFlowTimeout(CORBA::ULong timeout);
00070 
00071     virtual void closePeer();
00072 
00073     template<class TCallback>
00074     void setReceiver(AcsBulkdata::BulkDataReceiver<TCallback> *recv)
00075         {
00076             ACE_UNUSED_ARG(recv);
00077             //to be defined by the user
00078         }
00079 
00080     ACE_HANDLE getHandle();
00081 
00082     CORBA::Boolean isFepAlive()
00083         {
00084             return isFepAlive_m;
00085         }
00086 
00087     virtual void setCbTimeout(ACE_Time_Value cbTimeout)
00088         {
00089             // empty
00090         }
00091 
00092     void fwdData2UserCB(CORBA::Boolean enable);
00093 
00094     /********************* methods to be implemented by the user *****************/
00095 
00096     virtual int cbStart(ACE_Message_Block * userParam_p = 0) = 0;
00097 
00098     virtual int cbReceive(ACE_Message_Block * frame_p) = 0;
00099 
00100     virtual int cbStop() = 0;
00101 
00102   protected:
00103 
00104     ACE_CString flowname_m;
00105 
00106     CORBA::ULong flowNumber_m;
00107 
00108     ACE_CString recvName_m;
00109 
00110     bool fwdData2UserCB_m;
00111 
00112   private:
00113 
00114     void cleanRecvBuffer();
00115 
00116     void checkFlowTimeout();
00117 
00118     ACE_Time_Value waitPeriod_m;
00119 
00120     CORBA::ULong loop_m;
00121 
00122     Cb_State state_m;
00123     Cb_SubState substate_m;
00124 
00125     CORBA::Long dim_m;
00126 
00127     CORBA::Long count_m;
00128 
00129     CORBA::Long frameCount_m;
00130 
00131     ACE_Message_Block *bufParam_p;
00132 
00133     CORBA::Boolean timeout_m;
00134     CORBA::Boolean working_m;
00135     CORBA::Boolean error_m;
00136 
00137     ACSBulkDataStatus::AVCbErrorCompletion *errComp_p;
00138 
00139     CORBA::ULong flowTimeout_m;
00140 
00141     ACE_Time_Value startTime_m;    
00142 
00143     CORBA::Boolean isFepAlive_m;
00144 };
00145 
00146 
00147 #endif 

Generated on Thu Jan 12 2012 23:13:50 for ACS-10.0 C++ API by  doxygen 1.7.0