00001 // ================================================================ 00002 /** 00003 * @file IORTable.pidl 00004 * 00005 * $Id: IORTable.pidl 88803 2010-02-02 11:13:27Z vzykov $ 00006 * 00007 * @author Carlos O'Ryan <coryan@uci.edu> 00008 * 00009 * @brief Pre-compiled IDL source for the IORTable module. 00010 * 00011 * This file is used to generate the code in 00012 * IORTable{C}.{h,cpp} 00013 * 00014 * The command used to generate code from this file is: 00015 * 00016 * tao_idl -o orig -Sa -St -Sci \ 00017 * -Wb,export_macro=TAO_IORTable_Export \ 00018 * -Wb,export_include=iortable_export.h \ 00019 * -Wb,pre_include="ace/pre.h" \ 00020 * -Wb,post_include="ace/post.h" \ 00021 * IORTable.pidl 00022 * 00023 */ 00024 // ================================================================ 00025 00026 #ifndef TAO_IORTABLE_IORTABLE_PIDL 00027 #define TAO_IORTABLE_IORTABLE_PIDL 00028 00029 /// Define a module to avoid namespace pollution 00030 module IORTable 00031 { 00032 local interface Locator; 00033 00034 /// The object key is already in the IORTable 00035 exception AlreadyBound {}; 00036 00037 /// Cannot find the object key in the IORTable 00038 exception NotFound {}; 00039 00040 /// Define the IORTable interface 00041 /** 00042 * 00043 * Any TAO server can be configured as an corbaloc agent. 00044 * Such agents forward requests generated using a simple 00045 * ObjectKey in a corbaloc specifcation to the real location 00046 * of the object. 00047 * In TAO we implement this feature by dynamically (or 00048 * statically) adding a new Object Adapter to the ORB, that 00049 * handles any sort of request. 00050 */ 00051 local interface Table 00052 { 00053 /// Bind @a object_key to the @a IOR 00054 void bind (in string object_key, 00055 in string IOR) 00056 raises (AlreadyBound); 00057 00058 /// Bind @a object_key to the @a IOR 00059 void rebind (in string object_key, 00060 in string IOR); 00061 00062 /// Remove the binding for @a object_key 00063 void unbind (in string object_key) 00064 raises (NotFound); 00065 00066 /// Set the locator, if no binding is set for an object_key we try 00067 /// to use the locator to resolve it 00068 void set_locator (in Locator the_locator); 00069 }; 00070 00071 /// Callback interface to locate object keys dynamically 00072 /** 00073 * The application can provide a callback interface to locate object 00074 * keys dynamically. 00075 */ 00076 local interface Locator 00077 { 00078 /// Returns an IOR to use for @a object_key 00079 string locate (in string object_key) 00080 raises (NotFound); 00081 }; 00082 }; 00083 00084 #endif /* TAO_IORTABLE_IORTABLE_PIDL */