summaryrefslogtreecommitdiff
path: root/TAO/tao/IORTable/IORTable.pidl
blob: 142f8464cf5b072118e0b2de34b8f71ddcb6c149 (plain)
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
/**
 * @file IORTable.pidl
 *
 * @author Carlos O'Ryan <coryan@uci.edu>
 *
 * @brief Pre-compiled IDL source for the IORTable module.
 */

#ifndef TAO_IORTABLE_IORTABLE_PIDL
#define TAO_IORTABLE_IORTABLE_PIDL

/// 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 specification 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 @a object_key to the @a IOR
    void bind (in string object_key,
               in string IOR)
      raises (AlreadyBound);

    /// Bind @a object_key to the @a IOR
    void rebind (in string object_key,
                 in string IOR);

    /// Remove the binding for @a 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 @a object_key
    string locate (in string object_key)
      raises (NotFound);
  };

};

#endif /* TAO_IORTABLE_IORTABLE_PIDL */