summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/FT_App/ReplicationManagerFaultConsumerAdapter.h
blob: b06a41469cb0255876306eeb16a41d85438e2b8a (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
// -*- C++ -*-
//
// $Id$
#ifndef REPLICATION_MANAGER_FAULT_CONSUMER_ADAPTER_H
#define REPLICATION_MANAGER_FAULT_CONSUMER_ADAPTER_H
#include /**/ <ace/pre.h>
#include <ace/ACE.h>
#if !defined (ACE_LACKS_PRAGMA_ONCE)
#pragma once
#endif /* ACE_LACKS_PRAGMA_ONCE */

#include <orbsvcs/FT_ReplicationManager/FT_FaultConsumer.h>
#include <orbsvcs/orbsvcs/FT_NotifierC.h>
#include <orbsvcs/orbsvcs/FT_FaultDetectorFactoryC.h>
#include <ace/Vector_T.h>

/////////////////////
// Class declarations

/**
 * An adapter to the Replication Manager's fault consumer
 * for use in unit testing Fault Notifier and Fault Consumer.
 */
class ReplicationManagerFaultConsumerAdapter
{
public:
  /**
   * Default constructor.
   */
  ReplicationManagerFaultConsumerAdapter ();

  /**
   * virtual destructor.
   */
  virtual ~ReplicationManagerFaultConsumerAdapter ();

  /**
   * Parse command line arguments.
   */
  int parse_args (int argc, char * argv[]);

  /**
   * Initialize this object
   */
  int init (CORBA::ORB_ptr orb ACE_ENV_ARG_DECL_WITH_DEFAULTS);

  /**
   * Return a string to identify this object for logging/console message purposes.
   */
  const char * identity () const;

  /**
   * idle time activity.
   * @param result [out] status code to return from process
   * @returns 0 to continue; nonzero to quit
   */
  int idle(int &result ACE_ENV_ARG_DECL);

  /**
   * Clean house for process shut down.
   */
  int fini (ACE_ENV_SINGLE_ARG_DECL);


  size_t notifications() const;

  /////////////////
  // Implementation
private:

  ////////////////////
  // Forbidden methods
private:
  ReplicationManagerFaultConsumerAdapter (
    const ReplicationManagerFaultConsumerAdapter & rhs);
  ReplicationManagerFaultConsumerAdapter & operator =
    (const ReplicationManagerFaultConsumerAdapter & rhs);

  /////////////////////////
  // Implementation methods
private:

  ///////////////
  // Data Members
private:
  /**
   * The orb
   */
  CORBA::ORB_var orb_;

  /**
   * A human-readable string to distinguish this from other FaultConsumers.
   */
  ACE_CString identity_;

  /**
   * boolean: request quit
   */
  int quit_;

  /**
   * a file to write to to signal "ready"
   */
  const char * readyFile_;

  /**
   * Detecor's IOR
   */
  const char * detector_ior_;

  /**
   * The FaultDetectorFactory object reference.
   */
  ::FT::FaultDetectorFactory_var factory_;

  /**
   * A collection of replica IORs
   */
  ACE_Vector < const char * > replica_iors_;

  /**
   * A collection of replica references.
   */
  ACE_Vector < FT::PullMonitorable_var > replicas_;

  /**
   * A file from which the notifier's IOR should be read.
   */
  const char * notifier_ior_;

  /**
   * the fault notifier
   */
  ::FT::FaultNotifier_var notifier_;

  /**
   * consumer id assigned by the notifier
   */
  ::FT::FaultNotifier::ConsumerId consumerId_;

  /**
   * the real fault consumer
   */
  TAO::FT_FaultConsumer* p_fault_consumer_;
  PortableServer::ServantBase_var consumer_servant_;

};
#include /**/ <ace/post.h>

#endif /* REPLICATION_MANAGER_FAULT_CONSUMER_ADAPTER_H  */