summaryrefslogtreecommitdiff
path: root/TAO/examples/Callback_Quoter/Consumer_Handler.h
blob: 1afb85124f78c569e728e3f4ad579ec203083b84 (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
/* -*- C++ -*- */
// $Id$

// ===========================================================
//
//
// = LIBRARY
//    TAO/examples/Callback_Quoter
//
// = FILENAME
//    Consumer_Handler.h
//
// = DESCRIPTION
//    Definition of the Callback_Qouter Consumer Client class, Consumer_Handler.
//
// = AUTHOR
//    Kirthika Parameswaran <kirthika@cs.wustl.edu>
//
// ===========================================================

#ifndef CONSUMER_HANDLER_H
#define CONSUMER_HANDLER_H

#include "ConsumerC.h"
#include "NotifierC.h"
#include "Consumer_i.h"
#include "ace/Read_Buffer.h"

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

#include "orbsvcs/Naming/Naming_Client.h"
#include "orbsvcs/CosNamingC.h"

#include "Consumer_Input_Handler.h"
#include "Consumer_Signal_Handler.h"

class Consumer_Input_Handler;
class Consumer_Signal_Handler;

class Consumer_Handler
{
  // = TITLE
  //    Callback Quoter Consumer Client class.
  //
  // = DESCRIPTION
  //    Connects to the Callback Quoter server and
  //    registers the Consumer object with the it
  //    and receives the stock status from the Notifier.

public:
  // = Initialization and termination methods.
  Consumer_Handler (void);
  // Constructor.

  ~Consumer_Handler (void);
  // Destructor.

  int init (int argc, ACE_TCHAR *argv[]);
  // Initialize the client communication with the server.

  int run (void);
  // Start the ORB object.

  const char *stock_name_;
  // the name of the stock the consumer is interested in.

  int threshold_value_;
  // the desired price of the stock.

  Notifier_var server_;
  // Server object ptr.

  Consumer_i *consumer_servant_;
  // The consumer object.

  Callback_Quoter::Consumer_var consumer_var_;
  // Pointer to the consumer object registered with the ORB.

  ACE_Reactor* reactor_used (void) const;
  // This method gives the reactor pointer.

  int registered_;
  // Flag which notes whether the consumer has got registered with the
  // Notifier-server.

  int unregistered_;
  // Flag which notes whether the consumer has got unregistered from
  // the Notifier-server.

private:

  CORBA::ORB_var orb_;
  // Our orb.

  int read_ior (char *filename);
  // Function to read the server IOR from a file.

  int parse_args (void);
  // Parse the command line arguments.  Returns 0 on success, -1 on
  // error.

  int via_naming_service (void);
  // This method initialises the naming service and registers the
  // object with the POA.

  int argc_;
  // # of arguments on the command line.

  ACE_TCHAR **argv_;
  // arguments from command line.

  char *ior_;
  // IOR of the obj ref of the server.

  int shutdown_;
  // Flag for server shutdown.

  TAO_Naming_Client naming_services_client_;
  // An instance of the name client used for resolving the factory
  // objects.

  int use_naming_service_;
  // This variable denotes whether the naming service
  // is used or not.

 Consumer_Input_Handler *consumer_input_handler_;
  // Reference to the input_event_handler.

 Consumer_Signal_Handler *consumer_signal_handler_;
  // Reference to the signal_event_handler.

  int interactive_;
  // Is the example interactive?
};

#endif /* CONSUMER_HANDLER_H */