summaryrefslogtreecommitdiff
path: root/TAO/tao/TAO.h
blob: de7782f00abdb39fd43bb0339573f21965564afc (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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
/* -*- C++ -*- */
// $Id$

// ============================================================================
//
// = LIBRARY
//    tao
//
// = FILENAME
//   tao.h
//
// = DESCRIPTION
//   Externally visible TAO extensions.
//
// = AUTHOR
//    Chris Cleeland
//
// ============================================================================

#ifndef TAO_H
#define TAO_H

#include "tao/corbafwd.h"

#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include "tao/POAC.h"
#include "tao/ORB.h"

class TAO_Export TAO_ORB_Manager
{
  // = TITLE
  //     Helper class for simple ORB/POA initialization and
  //     registering servants with the POA.
  //
  // = DESCRIPTION
  //     This class is a TAO extension that makes it easier to write
  //     CORBA applications.  It's just a wrapper and doesn't do
  //     anything special within the ORB itself.
public:
  // = Initialization and termination methods.
  TAO_ORB_Manager (CORBA::ORB_ptr orb = 0,
                   PortableServer::POA_ptr poa = 0,
                   PortableServer::POAManager_ptr poa_manager = 0);
  // Constructor.

  ~TAO_ORB_Manager (void);
  // Destructor.

  int init (int &argc,
            char *argv[],
            CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Initialize the ORB/root POA, using the supplied command line
  // arguments or the default ORB components.  Returns -1 on failure.

  int init (int &argc,
            char *argv[],
            const char *orb_name,
            CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Initialize the ORB/root POA, using the supplied command line
  // arguments or the default ORB components.  Returns -1 on failure.

  int init_child_poa (int &argc,
                      char *argv[],
                      const char *poa_name,
                      CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Creates a child poa under the root poa with PERSISTENT and
  // USER_ID policies.  Call this if you want a <child_poa> with the
  // above policies, otherwise call init.  Returns -1 on failure.

  int init_child_poa (int &argc,
                      char *argv[],
                      const char *poa_name,
                      const char *orb_name,
                      CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Creates a child poa under the root poa with PERSISTENT and
  // USER_ID policies.  Call this if you want a <child_poa> with the
  // above policies, otherwise call init.  Returns -1 on failure.

  int activate_poa_manager (CORBA_Environment &ACE_TRY_ENV =
                            TAO_default_environment ());
  //  Put POA manager into the <Active> state, so that incoming corba
  //  requests are processed.  This method is useful for clients,
  //  which are not going to enter "orb->run" loop, yet may want to
  //  service incoming requests while waiting for a result of CORBA
  //  call on a server.  Returns -1 on failure.

  CORBA::String activate (PortableServer::Servant servant,
                          CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Activate <servant>, using the POA <activate_object> call.  Users
  // can call this method multiple times to activate multiple objects.
  // Returns 0 on failure.

  void deactivate (const char *id,
                   CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Deactivate object in RootPOA.

  CORBA::String activate_under_child_poa (const char *servant_name,
                                          PortableServer::Servant servant,
                                          CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Precondition: init_child_poa has been called.  Activate <servant>
  // using the POA <activate_object_with_id> created from the string
  // servant_name. Users should call this to activate objects under
  // the child_poa.

  void deactivate_under_child_poa (const char *id,
                                   CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Deactivate object in child POA.

  int run (CORBA_Environment &ACE_TRY_ENV,
           ACE_Time_Value *tv);
  int run (ACE_Time_Value &tv,
           CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  int run (CORBA_Environment &ACE_TRY_ENV = TAO_default_environment ());
  // Run the ORB event loop with the specified <tv> time value Returns
  // -1 on failure.

  CORBA::ORB_ptr orb (void);
  // Accessor which returns the ORB pointer.  Following the normal
  // CORBA memory management rules of return values from functions,
  // this function duplicates the orb return value before returning
  // it.

  PortableServer::POA_ptr root_poa (void);
  // Accessor which returns the root poa. Following the normal CORBA
  // memory management rules of return values from functions, this
  // function duplicates the poa return value before returning it.

  PortableServer::POA_ptr child_poa (void);
  // Accessor which returns the child poa. Following the normal CORBA
  // memory management rules of return values from functions, this
  // function duplicates the poa return value before returning it.

  PortableServer::POAManager_ptr poa_manager (void);
  // Accessor which returns the poa manager. Following the normal
  // CORBA memory management rules of return values from functions,
  // this function duplicates the poa manager return value before
  // returning it.

protected:
  CORBA::ORB_var orb_;
  // The ORB.

  PortableServer::POA_var poa_;
  // The POA for this ORB.

  PortableServer::POA_var child_poa_;
  // Child poa under the root POA.

  PortableServer::POAManager_var poa_manager_;
  // The POA manager of poa_.
};

class TAO_Export TAO
{
  // = TITLE
  //   Defines a namespace for externally visible TAO extensions.
public:
  // From Object_KeyC.h
  typedef TAO_ObjectKey ObjectKey;
  typedef TAO_ObjectKey_var ObjectKey_var;
  typedef TAO_ObjectKey_out ObjectKey_out;

  typedef TAO_ORB_Manager ORB_Manager;

  ACE_CLASS_IS_NAMESPACE (TAO);
};

#endif /* TAO_H */