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
|
// $Id$
/**
* @file Server_init.h
*
* Initializing CIAO Server side ORB, if they need to.
* I'm also puting some utilities functions here.
*
* @author Nanbor Wang <nanbor@cs.wustl.edu>
* @author Gan Deng <dengg@dre.vanderbilt.edu>
*/
#ifndef CIAO_SERVER_INIT_H
#define CIAO_SERVER_INIT_H
#include /**/ "ace/pre.h"
#include "CIAO_Server_Export.h"
#include "tao/Versioned_Namespace.h"
#include <orbsvcs/CosNamingC.h>
#if !defined ACE_LACKS_PRAGMA_ONCE
#pragma once
#endif /* ! ACE_LACKS_PRAGMA_ONCE */
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
namespace CORBA
{
class ORB;
typedef ORB *ORB_ptr;
}
TAO_END_VERSIONED_NAMESPACE_DECL
namespace CIAO
{
/**
* The initialize routine for any server that need to access
* component. This routine now simply registers various valuetype
* factories defined in CIAO_Component.pidl. Currently, this method
* should be call right after ORB initialization but we should try
* to register these stuff automatically.
*/
CIAO_SERVER_Export int Server_init (CORBA::ORB_ptr o);
namespace Utility
{
/// Write a string (usually a stringified IOR) to a file
/// designated by the @c pathname. The file named will always get
/// overwritten.
CIAO_SERVER_Export int write_IOR (const char *pathname,
const char *IOR);
class CIAO_SERVER_Export NameUtility
{
/**
* A utility class to bind naming context. This class is contributed by
* Dipa Suri <dipa.suri@lmco.com>.
*
* The concept/code are derived from
* http://www.informit.com/articles/article.asp?p=23266&seqNum=6
*/
public:
/// For each 'NameComponent' in 'name', create a corresponding 'NamingContext'.
static void CreateContextPath (const CosNaming::NamingContextExt_ptr,
const CosNaming::Name &);
/// For the first [0, length-2] NameComponents of 'name', create a
/// corresponding 'NamingContext'.
/// For the length-1 NameComponent of 'name', bind it to the object
/// reference 'obj'.
static void BindObjectPath (const CosNaming::NamingContextExt_ptr,
const CosNaming::Name&,
const CORBA::Object_var);
/// Get a list of all bindings under the given context, up to
/// max_list_size.
static CosNaming::BindingList * listBindings (const CosNaming::NamingContext_ptr,
const CosNaming::Name&,
CORBA::ULong);
/// Recursively unbind all objects and contexts below the given name
/// context, given the initial context nc.
/// Assumes a tree shape to service (not cyclic)
static void recursiveUnbind (const CosNaming::NamingContext_ptr,
const CosNaming::Name&);
};
}
}
#include /**/ "ace/post.h"
#endif /* CIAO_SERVER_INIT_H */
|