VR-Forces 4.0.4 Class Documentation
include/vrfMsgTransport/signalMessageTransporter.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2007 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: signalMessageTransporter.h,v $ $Revision: 1.3 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef signalMessageTransporter_h
00015 #define signalMessageTransporter_h
00016 
00017 #include "vrfMsgTransport/vrfMsgTransportDefines.h"
00018 #include <vlpi/disEnums.h>
00019 #include <vl/globalObjDes.h>
00020 #include "vrfmsgs/vrfObjectMessage.h"
00021 #include "vrfutil/callbackList.h"
00022 #include <vl/signalInter.h>
00023 #include <vrfmsgs/splitMsgHandle.h>
00024 #include <vrfutil/splitContentTimer.h>
00025 
00026 class DtExerciseConn;
00027 class DtSplitMessageKey;
00028 class DtSignalMessageHeader;
00029 
00032 const DtUserProtocol DtVrForcesSignalUserProtocol = (DtUserProtocol) 11050;
00033 
00036 struct DtSignalMessageParams
00037 {
00038    DtString commModelName;
00039    DtGlobalObjectDesignator senderDesignator;
00040    int radioIndex;
00041    double sampleRate;
00042 };
00043 
00045 typedef std::pair<DtSignalMessageParams*, DtVrfObjectMessageConstPtr> DtSignalMessageTransporterCallbackParams;
00046 
00050 class DT_DLL_vrfMsgTransport DtSignalMessageTransporter
00051 {
00052 public:
00053 
00054    typedef struct _tSplitContentEntry{unsigned nSize; char* pBuffer;} SplitContentEntry;
00055 
00056    typedef std::map<DtSplitMessageKey, std::map<unsigned, SplitContentEntry> > SplitContentMap;
00057 
00058 private:
00060 
00061    DtSignalMessageTransporter();
00062    DtSignalMessageTransporter(const DtSignalMessageTransporter& orig);
00063    DtSignalMessageTransporter& operator=(const DtSignalMessageTransporter& orig);
00065 
00066 protected:
00068    DtSignalMessageTransporter(DtExerciseConn* exConn);
00070    virtual bool init();
00071 
00072 public:
00075    static DtSignalMessageTransporter* create(DtExerciseConn* exConn);
00076 
00077    virtual ~DtSignalMessageTransporter();
00078 
00080    virtual void clearSplitContent();
00081 
00084    bool enabled() const;
00085    virtual void setEnabled(bool bEnabled);
00088    virtual bool processSplitContent(const DtSignalMessageParams& params,
00089       const DtSignalMessageHeader& msgHdr,
00090       const char *pContent);
00091 
00093    virtual void processSplitContentTimeout(const DtSplitMessageKey& key);
00094 
00096    virtual bool processVrfObjectMessageReceived(const DtSignalMessageParams& params,
00097       const char *pVrfObjectMessageBuffer);
00098 
00100    virtual bool reassembleVrfObjectMessage(const DtSignalMessageParams& params,
00101       const DtSignalMessageHeader& msgHdr);
00102 
00104    virtual void removeSplitContent(const DtSplitMessageKey& key);
00105 
00107    virtual void sendInteraction(const DtSignalMessageParams& params,
00108       const DtSignalMessageHeader& msgHdr,
00109       const char* pContent);
00110 
00113    virtual void sendMessage(const DtSignalMessageParams& params, 
00114       const DtVrfObjectMessage* message);
00115 
00116    typedef DtCallbackList<DtSignalMessageTransporterCallbackParams*> DtMessageReceivedCallbackList;
00117 
00123 
00124    virtual void addMessageReceivedCallback(DtMessageReceivedCallbackList::DtCallbackFunctionType fcn,
00125       void* usr);
00126    virtual void removeMessageReceivedCallback(DtMessageReceivedCallbackList::DtCallbackFunctionType fcn,
00127       void* usr);
00129 
00130    static void splitContentTimeoutCbk(const DtSplitMessageKey& key, void *pUsr);
00131 
00132 protected:
00133    static void signalInteractionCallback(DtSignalInteraction* inter, void* usr);
00134    virtual void processSignalInteraction(DtSignalInteraction* inter);
00135 
00137    virtual void sendSignalInteraction(DtSignalInteraction& signalInteraction);
00138 
00139 protected:
00140    bool myEnabled;
00141    DtExerciseConn* myExConn;
00142    DtMessageReceivedCallbackList myMessageReceivedCallbacks;
00143    SplitContentMap mySplitContentMap;
00144    DtSplitContentTimer mySplitContentTimer;
00145 };
00146 
00147 inline bool DtSignalMessageTransporter::enabled() const
00148 {
00149    return myEnabled;
00150 }
00151 #endif

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)