1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// ================================================================
/**
* @file IORTable.pidl
*
* $Id$
*
* @author Carlos O'Ryan <coryan@uci.edu>
*
* @brief This file was used to generate the code in
* IORTable{C,S,S_T}.{h,i,cpp}
*
* The command used to generate code from this file is:
*
* tao_idl.exe -o orig -Ge 1 -Sa -St \
* -Wb,export_macro=TAO_IORTable_Export \
* -Wb,export_include=iortable_export.h \
* -Wb,pre_include="ace/pre.h" \
* -Wb,post_include="ace/post.h" \
* IORTable.pidl
*
* after the file is generated a patch must be applied. The patch
* disables the code under certain configurations, and eliminates
* cycles in the include dependencies. Those changes are required
* because the generated code is part of the TAO library, it hardly
* makes any sense to change the IDL compiler to support changes
* that are very occasional.
*/
// ================================================================
/// Define a module to avoid namespace pollution
module IORTable
{
local interface Locator;
/// The object key is already in the IORTable
exception AlreadyBound {};
/// Cannot find the object key in the IORTable
exception NotFound {};
/// Define the IORTable interface
/**
*
* Any TAO server can be configured as an corbaloc agent.
* Such agents forward requests generated using a simple
* ObjectKey in a corbaloc specifcation to the real location
* of the object.
* In TAO we implement this feature by dynamically (or
* statically) adding a new Object Adapter to the ORB, that
* handles any sort of request.
*/
local interface Table
{
/// Bind <object_key> to the <IOR>
void bind (in string object_key,
in string IOR)
raises (AlreadyBound);
/// Bind <object_key> to the <IOR>
void rebind (in string object_key,
in string IOR);
/// Remove the binding for <object_key>
void unbind (in string object_key)
raises (NotFound);
/// Set the locator, if no binding is set for an object_key we try
/// to use the locator to resolve it
void set_locator (in Locator the_locator);
};
/// Callback interface to locate object keys dynamically
/**
* The application can provide a callback interface to locate object
* keys dynamically.
*/
local interface Locator
{
/// Returns an IOR to use for <object_key>
string locate (in string object_key)
raises (NotFound);
};
};
|