summaryrefslogtreecommitdiff
path: root/ACE/apps/Gateway/Gateway/Config_Files.h
blob: 8b2603b817be78f129c62c106689fa482338bfa3 (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
/* -*- C++ -*- */

//=============================================================================
/**
 *  @file    Config_Files.h
 *
 *  $Id$
 *
 *  @author Doug Schmidt
 */
//=============================================================================


#ifndef _CONFIG_FILES
#define _CONFIG_FILES

#include "File_Parser.h"
#include "Event.h"

// Forward declaration.
class Event_Channel;

/**
 * @class Connection_Config_Info
 *
 * @brief Stores connection configuration information.
 */
class Connection_Config_Info
{
public:
  /// Connection id for this Connection_Handler.
  ACE_INT32 connection_id_;

  /// Host to connect with.
  char host_[BUFSIZ];

  /// Port to connect with.
  u_short remote_port_;

  /// 'S' (supplier) or 'C' (consumer).
  char connection_role_;

  /// Maximum amount of time to wait for reconnecting.
  ACE_INT32 max_retry_timeout_;

  /// Our local port number.
  u_short local_port_;

  /// Priority by which different Consumers and Suppliers should be
  /// serviced.
  ACE_INT32 priority_;

  /// We just need a place to store this until we can pass it along
  /// when creating a Connection_Handler.
  Event_Channel *event_channel_;
};

/**
 * @class Connection_Config_File_Parser
 *
 * @brief Parser for the Connection_Handler Connection file.
 */
class Connection_Config_File_Parser : public File_Parser<Connection_Config_Info>
{
public:
  /// Read in a <Connection_Config_Info> entry.
  virtual FPRT::Return_Type read_entry (Connection_Config_Info &entry,
                                        int &line_number);

};

/**
 * @class Consumer_Config_Info
 *
 * @brief Stores the information in a Consumer Map entry.
 */
class Consumer_Config_Info
{
public:
  /// Connection id.
  ACE_INT32 connection_id_;

  /// Message type.
  ACE_INT32 type_;

  /// Connection ids for consumers that will be routed information
  /// containing this <connection_id_>
  ACE_INT32 consumers_[MAX_CONSUMERS];

  /// Total number of these consumers.
  ACE_INT32 total_consumers_;
};

/**
 * @class Consumer_Config_File_Parser
 *
 * @brief Parser for the Consumer Map file.
 */
class Consumer_Config_File_Parser : public File_Parser<Consumer_Config_Info>
{
public:
  /// Read in a <Consumer_Config_Info> entry.
  virtual FPRT::Return_Type read_entry (Consumer_Config_Info &entry,
                                        int &line_number);
};

#endif /* _CONFIG_FILES */