00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef TAO_DYNAMIC_IMPLEMENTATION_H
00018 #define TAO_DYNAMIC_IMPLEMENTATION_H
00019
00020 #include "ace/pre.h"
00021
00022 #include "tao/DynamicInterface/dynamicinterface_export.h"
00023
00024 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00025 # pragma once
00026 #endif
00027
00028 #include "tao/PortableServer/Servant_Base.h"
00029
00030 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00031
00032 namespace CORBA
00033 {
00034 typedef char *RepositoryId;
00035 typedef String_var RepositoryId_var;
00036
00037 class ServerRequest;
00038 typedef ServerRequest *ServerRequest_ptr;
00039 }
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 class TAO_DynamicInterface_Export TAO_DynamicImplementation
00052 : public virtual TAO_ServantBase
00053 {
00054 public:
00055
00056
00057
00058 virtual void invoke (CORBA::ServerRequest_ptr request) = 0;
00059
00060
00061
00062
00063 virtual CORBA::RepositoryId _primary_interface (
00064 const PortableServer::ObjectId &oid,
00065 PortableServer::POA_ptr poa) = 0;
00066
00067
00068 virtual CORBA::Boolean _is_a (const char *logical_type_id);
00069
00070
00071 CORBA::Object_ptr _this (void);
00072
00073
00074 virtual CORBA::InterfaceDef_ptr _get_interface (void);
00075
00076 protected:
00077
00078
00079 virtual const char *_interface_repository_id (void) const;
00080
00081
00082 virtual void *_downcast (const char *repository_id);
00083
00084
00085 virtual TAO_Stub *_create_stub (void);
00086
00087
00088 virtual void _dispatch (TAO_ServerRequest &request, void *context);
00089
00090 private:
00091
00092 CORBA::RepositoryId get_id_from_primary_interface (void);
00093 };
00094
00095 TAO_END_VERSIONED_NAMESPACE_DECL
00096
00097 #include "ace/post.h"
00098
00099 #endif