00001 // -*- C++ -*- 00002 00003 //============================================================================= 00004 /** 00005 * @file Topology_Loader.h 00006 * 00007 * $Id: Topology_Loader.h 76589 2007-01-25 18:04:11Z elliott_c $ 00008 * 00009 * @author Jonathan Pollack <pollack_j@ociweb.com> 00010 */ 00011 //============================================================================= 00012 00013 #ifndef TOPOLOGY_LOADER_H 00014 #define TOPOLOGY_LOADER_H 00015 #include /**/ "ace/pre.h" 00016 00017 #include "orbsvcs/Notify/notify_serv_export.h" 00018 00019 #include "ace/config-all.h" 00020 00021 #if !defined (ACE_LACKS_PRAGMA_ONCE) 00022 #pragma once 00023 #endif /* ACE_LACKS_PRAGMA_ONCE */ 00024 00025 #include "tao/Versioned_Namespace.h" 00026 #include "ace/CORBA_macros.h" 00027 00028 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00029 00030 namespace CORBA 00031 { 00032 class Environment; 00033 } 00034 00035 namespace TAO_Notify 00036 { 00037 00038 /// A forward declaration. 00039 class Topology_Object; 00040 00041 /** 00042 * \brief An interface for an object that loads Persistent Topology Information. 00043 * 00044 * A persistent store must provide an implemention this interface. 00045 * 00046 */ 00047 class TAO_Notify_Serv_Export Topology_Loader 00048 { 00049 public: 00050 /// The constructor. 00051 Topology_Loader (); 00052 00053 /// The destructor. 00054 virtual ~Topology_Loader (); 00055 00056 /** \brief Begin the restore process. 00057 * 00058 * Call this function to start the reload of data from a persistent store. 00059 * When the Topology_Loader detects a child object, it should 00060 * call the load_child method of the object passed in, then do the same 00061 * loading process on the returned object. 00062 */ 00063 virtual void load (Topology_Object *root) = 0; 00064 00065 /** 00066 * \brief Close the loader after loading is complete. 00067 * 00068 * This is not pure virtual because some loaders may not need to be closed. 00069 * The default implementation does nothing. 00070 * 00071 * There should be a corresponding open, but the signature may 00072 * vary based on the type of loader, so we can't include it in the 00073 * interface. 00074 */ 00075 virtual void close (void); 00076 }; 00077 00078 } // namespace TAO_Notify 00079 00080 TAO_END_VERSIONED_NAMESPACE_DECL 00081 00082 #include /**/ "ace/post.h" 00083 00084 #endif /* TOPOLOGY_LOADER */