My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
TransactionManager.h
Go to the documentation of this file.
1 #ifndef SZA_ARRAY_TRANSACTION_H
2 #define SZA_ARRAY_TRANSACTION_H
3 
11 #include <string>
12 #include <list>
13 
14 #include "gcp/control/code/unix/libunix_src/common/input.h"
15 
16 namespace gcp {
17  namespace control {
18 
23  public:
24 
25  static const unsigned DEV_NAME_MAX = 100;
26  static const unsigned SERIAL_NAME_MAX = 20;
27  static const unsigned LOCATION_NAME_MAX = 100;
28  static const unsigned WHO_NAME_MAX = 20;
29  static const unsigned PREFIX_LEN = 5;
30 
35 
39  virtual ~TransactionManager();
40 
44  void readCatalog(std::string dir, std::string file);
45 
49  void printDevices();
50 
54  void printLocations();
55 
59  void printSerialNumbers();
60 
64  void printAll();
65 
66  // A location specifier
67  //------------------------------------------------------------
68 
69  struct Location {
70  std::string name_;
71 
72  Location(std::string name) : name_(name) {};
73  };
74 
79  class Location_eq : public std::unary_function<Location, bool> {
80  std::string name_;
81  public:
82  explicit Location_eq(std::string name) : name_(name) {}
83  bool operator() (const Location& location) const {
84  return location.name_ == name_;
85  }
86  };
87 
88  //------------------------------------------------------------
89  // A serial number specifier
90  //------------------------------------------------------------
91 
92  struct SerialNumber {
93  std::string name_;
94 
95  SerialNumber(std::string name) : name_(name) {};
96  };
97 
102  class SerialNumber_eq : public std::unary_function<SerialNumber, bool> {
103  std::string name_;
104  public:
105  explicit SerialNumber_eq(std::string name) : name_(name) {}
106  bool operator() (const SerialNumber& sn) const {
107  return sn.name_ == name_;
108  }
109  };
110 
111  //------------------------------------------------------------
112  // A device specifier
113  //------------------------------------------------------------
114 
115  struct Device {
116  std::string name_;
117 
118  // A list of pointers to valid serial numbers for this device
119 
120  std::list<SerialNumber*> serialNumbers_;
121 
122  // A list of pointers to valid locations for this device
123 
124  std::list<Location*> locations_;
125 
126  Device(std::string name) : name_(name) {};
127  void addLocation(Location* location);
128  void addSerialNumber(SerialNumber* serialNumber);
129  void printLocations();
130  void printSerialNumbers();
131  Location* findLocation(std::string name);
132  SerialNumber* findSerialNumber(std::string name);
133  bool isValidLocation(std::string name);
134  bool isValidSerialNumber(std::string name);
135  };
136 
141  class Device_eq : public std::unary_function<Device, bool> {
142  std::string name_;
143  public:
144  explicit Device_eq(std::string name) : name_(name) {}
145  bool operator() (const Device& device) const {
146  return device.name_ == name_;
147  }
148  };
149 
153  void clearCatalog();
154 
155  private:
156 
157  // The known list of devices
158 
159  std::list<Device> devices_;
160  std::list<Location> locations_;
161  std::list<SerialNumber> serialNumbers_;
162 
163  // Read a location specifier from an input stream
164 
165  void readLocation(Device* device, InputStream* stream);
166 
167  // Read a serialNumber specifier from an input stream
168 
169  void readSerialNumber(Device* device, InputStream* stream);
170 
171  // Read a device specifier from an input stream
172 
173  Device* readDevice(InputStream* stream);
174 
175  public:
176 
177  // Find a device by name
178 
179  Device* findDevice(std::string name);
180 
181  // Return true if this is a valid device
182 
183  bool isValidDevice(std::string name);
184 
185  // Return true if this is a valid serial number/device pair
186 
187  bool isValidSerialNumber(std::string device, std::string serial);
188 
189  // Return true if this is a valid location/device pair
190 
191  bool isValidLocation(std::string device, std::string location);
192 
193  private:
194 
195  // Find a device by name
196 
197  Location* findLocation(std::string name);
198 
199  // Find a serial number by name
200 
201  SerialNumber* findSerialNumber(std::string name);
202 
203  public:
204 
205  /*
206  * Return non-zero if a character isn't a separator character.
207  */
208  static int notSeparatorChar(int c);
209 
210  // Add a device by name
211 
212  Device* addDevice(std::string name);
213 
214  // Add a device by name
215 
216  Location* addLocation(std::string name);
217 
218  // Add a serial number by name
219 
220  SerialNumber* addSerialNumber(std::string name);
221 
222  }; // End class TransactionManager
223 
224  } // End namespace control
225 } // End namespace gcp
226 
227 
228 
229 #endif // End #ifndef SZA_ARRAY_TRANSACTION_H
void printSerialNumbers()
Definition: TransactionManager.cc:520
Definition: TransactionManager.h:102
TransactionManager()
Definition: TransactionManager.cc:24
void clearCatalog()
Definition: TransactionManager.cc:190
Definition: TransactionManager.h:115
bool isValidLocation(std::string device, std::string location)
Definition: TransactionManager.cc:445
Location * findLocation(std::string name)
Definition: TransactionManager.cc:362
Location * addLocation(std::string name)
Definition: TransactionManager.cc:378
void printSerialNumbers()
Definition: TransactionManager.cc:530
Definition: input.h:87
void printLocations()
Definition: TransactionManager.cc:510
void printLocations()
Definition: TransactionManager.cc:500
Definition: TransactionManager.h:92
bool isValidSerialNumber(std::string device, std::string serial)
Definition: TransactionManager.cc:433
Definition: TransactionManager.h:141
void printAll()
Definition: TransactionManager.cc:486
void printDevices()
Definition: TransactionManager.cc:476
SerialNumber * addSerialNumber(std::string name)
Definition: TransactionManager.cc:314
Device * addDevice(std::string name)
Definition: TransactionManager.cc:457
Device * findDevice(std::string name)
Definition: TransactionManager.cc:409
virtual ~TransactionManager()
Definition: TransactionManager.cc:29
void readCatalog(std::string dir, std::string file)
Definition: TransactionManager.cc:200
Definition: TransactionManager.h:69
Definition: TransactionManager.h:22
Definition: TransactionManager.h:79
bool isValidLocation(std::string name)
Definition: TransactionManager.cc:540
void addLocation(Location *location)
Definition: TransactionManager.cc:394
bool isValidSerialNumber(std::string name)
Definition: TransactionManager.cc:548
void addSerialNumber(SerialNumber *serialNumber)
Definition: TransactionManager.cc:330
bool isValidDevice(std::string name)
Definition: TransactionManager.cc:425
SerialNumber * findSerialNumber(std::string name)
Definition: TransactionManager.cc:298