blob: 36cdbfbfdf80144b61c1882348ee88a7b800c365 (
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
|
// -*- C++ -*-
//=============================================================================
/**
* @file FT_IOGR_Property.h
*
* $Id$
*
* This class implements the IOGR properties for the FT service
*
*
* @author Bala Natarajan <bala@cs.wustl.edu>
*/
//=============================================================================
#ifndef TAO_FT_IOGR_PROPERTY_H
#define TAO_FT_IOGR_PROPERTY_H
#include /**/ "ace/pre.h"
#include "tao/LocalObject.h"
#if !defined (ACE_LACKS_PRAGMA_ONCE)
# pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */
#include "tao/IORManipulation/IORManip_Loader.h"
#include "orbsvcs/FT_CORBA_ORBC.h"
#include "tao/IOPC.h"
#include "orbsvcs/FaultTolerance/FT_ORB_Utils_export.h"
#if defined(_MSC_VER)
#pragma warning(push)
#pragma warning(disable:4250)
#endif /* _MSC_VER */
TAO_BEGIN_VERSIONED_NAMESPACE_DECL
class TAO_Profile;
/**
* @class TAO_FT_IOGR_Property
*
* @brief TAO_FT_IOGR_Property
*
* This class serves as the callback class for setting the
* TaggedComponent properties in the profiles of the IOGR. The
* user can make an instance of this class with the right
* properties and use the helper methods in the IORManipulation
*
* NOTE: This class is NOT thread safe. The range of services that
* use this class (like the RM) should use them in a thread safe
* manner.
*/
class TAO_FT_ORB_Utils_Export TAO_FT_IOGR_Property
: public virtual TAO_IOP::TAO_IOR_Property,
public virtual TAO_Local_RefCounted_Object
{
public:
/// Our Constructor
TAO_FT_IOGR_Property (FT::TagFTGroupTaggedComponent &ft_group);
TAO_FT_IOGR_Property (void);
/// Destructor
~TAO_FT_IOGR_Property (void);
/// Set the property for the IOGR
virtual CORBA::Boolean set_property (
CORBA::Object_ptr &ior)
ACE_THROW_SPEC ((
CORBA::SystemException,
TAO_IOP::Invalid_IOR
));
/// Set <ior1> as primary which is a part of <ior2>
virtual CORBA::Boolean set_primary (
CORBA::Object_ptr &ior1,
CORBA::Object_ptr ior2)
ACE_THROW_SPEC ((
CORBA::SystemException,
TAO_IOP::NotFound,
TAO_IOP::Duplicate
));
/// Get the primary member from the IOGR <ior>
virtual CORBA::Object_ptr get_primary (
CORBA::Object_ptr ior)
ACE_THROW_SPEC ((
CORBA::SystemException,
TAO_IOP::NotFound
));
/// Is there a primary available for <ior>
virtual CORBA::Boolean is_primary_set (
CORBA::Object_ptr ior)
ACE_THROW_SPEC ((
CORBA::SystemException
));
virtual CORBA::Boolean remove_primary_tag (
CORBA::Object_ptr &iogr)
ACE_THROW_SPEC ((CORBA::SystemException));
/// Reset the underlying tagged components held by the class
CORBA::Boolean reset_tagged_components (
FT::TagFTGroupTaggedComponent &ft_group);
/// Extract the TagFTGroupTaggedComponent inside the <ior>
CORBA::Boolean get_tagged_component (
const CORBA::Object_ptr iogr,
FT::TagFTGroupTaggedComponent &ft_group) const
ACE_THROW_SPEC ((CORBA::SystemException));
private:
/// An helper function that gets the primary profile from the <ior>
TAO_Profile *get_primary_profile (CORBA::Object_ptr ior);
/// An helper method for encoding the proeprties
CORBA::Boolean encode_properties (
TAO_OutputCDR &cdr,
IOP::TaggedComponent &tagged_components);
private:
/// Hold the reference to the FT group tagged component
FT::TagFTGroupTaggedComponent *ft_group_tagged_component_;
};
TAO_END_VERSIONED_NAMESPACE_DECL
#if defined(_MSC_VER)
#pragma warning(pop)
#endif /* _MSC_VER */
#if defined (__ACE_INLINE__)
# include "orbsvcs/FaultTolerance/FT_IOGR_Property.inl"
#endif /* __ACE_INLINE__ */
#include /**/ "ace/post.h"
#endif /* TAO_FT_IOGR_PROPERTY_H */
|