00001 // -*- C++ -*- 00002 00003 // ================================================================ 00004 /** 00005 * @file Object_Loader.h 00006 * 00007 * $Id: Object_Loader.h 76995 2007-02-11 12:51:42Z johnnyw $ 00008 * 00009 * @author Carlos O'Ryan (coryan@cs.wustl.edu) 00010 */ 00011 // ================================================================ 00012 00013 #ifndef TAO_OBJECT_LOADER_H 00014 #define TAO_OBJECT_LOADER_H 00015 00016 #include /**/ "ace/pre.h" 00017 #include "ace/Service_Object.h" 00018 00019 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00020 # pragma once 00021 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00022 00023 #include "tao/orbconf.h" 00024 #include "tao/TAO_Export.h" 00025 00026 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00027 00028 namespace CORBA 00029 { 00030 class Object; 00031 typedef Object *Object_ptr; 00032 00033 class ORB; 00034 typedef ORB *ORB_ptr; 00035 } 00036 00037 /** 00038 * @class TAO_Object_Loader 00039 * 00040 * @brief A class to dynamically load object implementations into an 00041 * ORB. 00042 * 00043 * Many services and components of the ORB can be dynamically 00044 * loaded, often these components are returned to the application via 00045 * an object reference (CORBA::Object_ptr). This class is used to 00046 * dynamically load such components, and encapsulate the creation of 00047 * the object reference. 00048 * 00049 */ 00050 class TAO_Export TAO_Object_Loader : public ACE_Service_Object 00051 { 00052 public: 00053 /// The destructor 00054 virtual ~TAO_Object_Loader (void); 00055 00056 /** 00057 * Create and activate a new object into the orb. 00058 * This method cannot throw any exception, but it can return a nil 00059 * object to indicate an error condition. 00060 */ 00061 virtual CORBA::Object_ptr create_object (CORBA::ORB_ptr orb, 00062 int argc, 00063 ACE_TCHAR* argv []) = 0; 00064 }; 00065 00066 TAO_END_VERSIONED_NAMESPACE_DECL 00067 00068 #include /**/ "ace/post.h" 00069 00070 #endif /* TAO_OBJECT_LOADER_H */