ControlTaskProxy.hpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef ORO_CORBA_CONTROLTASK_PROXY_HPP
00039 #define ORO_CORBA_CONTROLTASK_PROXY_HPP
00040
00041
00042 #include "../rtt-config.h"
00043 #ifndef _REENTRANT
00044 #define _REENTRANT
00045 #endif
00046 #include "corba.h"
00047 #ifdef CORBA_IS_TAO
00048 #include <tao/corba.h>
00049 #else
00050 #include <omniORB4/CORBA.h>
00051 #endif
00052
00053 #include <exception>
00054 #include "../TaskContext.hpp"
00055 #include <string>
00056 #include <map>
00057 #include "ControlTaskC.h"
00058 #include "ApplicationServer.hpp"
00059
00060 namespace RTT
00061 {namespace Corba
00062 {
00066 struct IllegalServer
00067 : public std::exception
00068 {
00069 std::string reason;
00070 IllegalServer();
00071 IllegalServer(const std::string& reason);
00072 ~IllegalServer() throw();
00073 const char* what() const throw();
00074 };
00075
00082 class RTT_CORBA_API ControlTaskProxy
00083 : public TaskContext,
00084 public ApplicationServer
00085 {
00086 public:
00087 typedef std::map<ControlTaskProxy*, Corba::ControlTask_ptr> PMap;
00088 static PMap proxies;
00089
00090 protected:
00095 ControlTaskProxy(std::string location, bool is_ior);
00096
00101 ControlTaskProxy( ::RTT::Corba::ControlTask_ptr t );
00102
00103 void synchronizeOnce();
00104 void synchronize();
00105
00106 mutable Corba::ControlTask_var mtask;
00107
00111 static PortableServer::POA_var proxy_poa;
00112
00113 void fetchObjects(OperationInterface* parent, ControlObject_ptr mtask);
00114 public:
00115 ~ControlTaskProxy();
00116
00120 static void DestroyOrb();
00121
00129 static ControlTaskProxy* Create(std::string name, bool is_ior = false);
00130
00140 static TaskContext* Create(::RTT::Corba::ControlTask_ptr task, bool force_remote = false);
00141
00147 Corba::ControlTask_ptr server() const;
00148
00149 virtual bool activate();
00150
00151 virtual bool start();
00152
00153 virtual bool stop();
00154
00155 virtual bool isRunning() const;
00156
00157 virtual bool configure();
00158
00159 virtual bool cleanup();
00160
00161 virtual bool resetError();
00162
00163 virtual bool isActive() const;
00164
00165 virtual bool isConfigured() const;
00166
00167 virtual bool inFatalError() const;
00168
00169 virtual bool inRunTimeWarning() const;
00170
00171 virtual bool inRunTimeError() const;
00172
00173 virtual int getErrorCount() const;
00174
00175 virtual int getWarningCount() const;
00176
00177 virtual TaskState getTaskState() const;
00178
00179 virtual void setName(const std::string& n);
00180
00181 virtual bool addPeer( TaskContext* peer, std::string alias = "" );
00182
00183 virtual void removePeer( const std::string& name );
00184
00185 virtual void removePeer( TaskContext* peer );
00186
00187 virtual bool connectPeers( TaskContext* peer );
00188
00189 virtual void disconnectPeers( const std::string& name );
00190
00191 virtual PeerList getPeerList() const;
00192
00193 virtual bool hasPeer( const std::string& peer_name ) const;
00194
00195 virtual TaskContext* getPeer(const std::string& peer_name ) const;
00196
00197 virtual bool connectPorts( TaskContext* peer );
00198
00199 virtual bool ready();
00203 static PortableServer::POA_ptr ProxyPOA();
00204 };
00205 }}
00206 #endif