![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2008 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtNetworkMessageCallbackManager.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00015 00016 #pragma once 00017 00018 #include <vrfGuiCore/vrfGuiCore.h> 00019 #include <vrfGuiCore/DtQueuedManager.h> 00020 #include <vrfGuiCore/DtGuiThreadVrfRemoteController.h> 00021 #include <vrfGuiCore/DtCommentInteractionInterface.h> 00022 00023 #include <vrvUtil/signalslib.h> 00024 #include <vrvCore/DtDe.h> 00025 00026 #include <vrfplan/plan.h> 00027 00028 class DtSimMessage; 00029 00031 00032 #define CONNECT_FOR_SIM_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).simMessageSignal(_type).connect(_function); 00033 #define DISCONNECT_FOR_SIM_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).simMessageSignal(_type).disconnect(_function); 00034 00035 #define CONNECT_FOR_OBJECT_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).objectMessageSignal(_type).connect(_function); 00036 #define DISCONNECT_FOR_OBJECT_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).objectMessageSignal(_type).disconnect(_function); 00037 00038 #define CONNECT_FOR_COMMENT_INTERACTION(_function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).networkInterfaceMessageSignal(DtCommentInteractionInterface::theName()).connect(_function); 00039 #define DISCONNECT_FOR_COMMENT_INTERACTION(_function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).networkInterfaceMessageSignal(DtCommentInteractionInterface::theName()).disconnect(_function); 00040 00041 #define CONNECT_FOR_INTERFACE_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).networkInterfaceMessageSignal(_type).connect(_function); 00042 #define DISCONNECT_FOR_INTERFACE_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).networkInterfaceMessageSignal(_type).disconnect(_function); 00043 00044 #define CONNECT_FOR_RADIO_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).radioMessageSignal(_type).connect(_function); 00045 #define DISCONNECT_FOR_RADIO_MESSAGE(_type, _function) makVrf::DtNetworkMessageCallbackManager::instance(myDe).radioMessageSignal(_type).disconnect(_function); 00046 00047 namespace makVrf 00048 { 00049 class DtNetworkMessageInterface; 00050 00051 typedef boost::signal<void (DtSimMessage*)> SimMessageSignal; 00052 typedef boost::signal<void (const DtVrfObjectMessage*)> ObjectMessageCallbackSignal; 00053 typedef boost::signal<void (DtNetworkMessageInterface*)> NetworkInterfaceCallbackSignal; 00054 00061 class DT_DLL_VRFGUICORE DtNetworkMessageCallbackManager : public DtQueuedManager 00062 { 00063 public: 00064 typedef std::map<int, SimMessageSignal*> DtVrfMessageCallbackMap; 00065 typedef std::map<int, ObjectMessageCallbackSignal*> DtVrfObjectMessageCallbackMap; 00066 typedef std::map<std::string, NetworkInterfaceCallbackSignal*> DtNetworkCallbackMap; 00067 00068 public: 00069 DtNetworkMessageCallbackManager(makVrv::DtDe&); 00070 virtual ~DtNetworkMessageCallbackManager(); 00071 00073 static DtNetworkMessageCallbackManager& instance(makVrv::DtDe& de); 00074 00075 public: 00079 00080 virtual SimMessageSignal& simMessageSignal(int type); 00082 00086 00087 virtual ObjectMessageCallbackSignal& objectMessageSignal(int type); 00089 00093 00094 virtual ObjectMessageCallbackSignal& radioMessageSignal(int type); 00096 00099 00100 virtual NetworkInterfaceCallbackSignal& networkInterfaceMessageSignal(std::string messageName); 00102 00104 virtual void messageReceived(DtNetworkMessageInterface*); 00105 00106 protected: 00108 virtual void registerSimMessageCallbackWithDriver(int t); 00109 00111 virtual void unregisterSimMessageCallbackWithDriver(int t); 00112 00113 virtual void processSimMessageCallback(DtNetworkMessageInterface*); 00114 00115 virtual void vrfObjectMessageCallback(DtSimMessage* msg); 00116 00118 virtual void processVrfObjectMessageInterfaceCallback(DtNetworkMessageInterface* msg); 00119 00121 virtual void processVrfObjectMessageCallback(DtVrfObjectMessage* msg, bool forFrontEndOnly = true); 00122 00124 virtual void registerForCommentInteraction(); 00125 00127 virtual void unregisterForCommentInteraction(); 00128 00129 protected: 00130 00131 virtual void registerRadioMessageCallbackFor(int type); 00132 virtual void unregisterRadioMessageCallbackFor(int type); 00133 00134 virtual void registerObjectMessageCallbackFor(int type); 00135 virtual void unregisterObjectMessageCallbackFor(int type); 00136 00137 protected: 00138 DtVrfMessageCallbackMap myCallbacks; 00139 DtVrfObjectMessageCallbackMap myVrfObjectMessageCallbacks; 00140 DtNetworkCallbackMap myNetworkCallbackMap; 00141 }; 00142 }