summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/FT_NamingManager.idl
blob: 7a2353858da367c023163811e612add9f371a599 (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
/* -*- IDL -*- */
//=============================================================================
/**
 *  @file    FT_NamingManager.idl
 *
 *  This file is part of Fault Tolerant Naming Service.
 *
 *  @author Kevin Stanley <stanleyk@ociweb.com>
 */
//=============================================================================

#ifndef _FT_NAMING_MANAGER_IDL_
#define _FT_NAMING_MANAGER_IDL_

#include "orbsvcs/PortableGroup.idl"

module FT_Naming
{
  typedef PortableGroup::ObjectGroup ObjectGroup;

  const string TAO_FT_OBJECT_GROUP_NAME = "TAO_FT_GroupName";
  const string TAO_FT_LOAD_BALANCING_STRATEGY = "TAO_FT_LB_Strategy";

  typedef long LoadBalancingStrategyValue;
  const LoadBalancingStrategyValue ROUND_ROBIN = 0;
  const LoadBalancingStrategyValue RANDOM = 1;
  const LoadBalancingStrategyValue LEAST  = 2;

  typedef string GroupName;
  typedef sequence<string> GroupNames;

  // Specification of NamingManager Interface
  interface NamingManager : PortableGroup::PropertyManager,
                            PortableGroup::ObjectGroupManager
  {
    ObjectGroup create_object_group (in GroupName group_name,
                                     in LoadBalancingStrategyValue lb_strategy,
                                     in PortableGroup::Criteria the_criteria)
      raises (PortableGroup::ObjectNotCreated,
              PortableGroup::InvalidCriteria,
              PortableGroup::InvalidProperty,
              PortableGroup::CannotMeetCriteria);

    void delete_object_group (in string group_name)
      raises (PortableGroup::ObjectGroupNotFound);

    ObjectGroup get_object_group_ref_from_name (
      in string group_name)
      raises (PortableGroup::ObjectGroupNotFound);

    void set_load_balancing_strategy (in string group_name,
                                      in LoadBalancingStrategyValue lb_strategy);

    // Return names of all groups defined in the NamingManager
    GroupNames groups (in LoadBalancingStrategyValue target_stategy);

  };
};


#endif // _FT_NAMING_MANAGER_IDL_