IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
NetworkDescription.h
1 // NetworkDescription.h:
3 // ---------------------
4 //
14 
15 #ifndef __IPSDKCORE_NETWORKDESCRIPTION_H__
16 #define __IPSDKCORE_NETWORKDESCRIPTION_H__
17 
18 // suppression warnings
19 // warning C4251: 'ipsdk::core::NetworkDescription::_ipAddressType' : class 'ipsdk::tcpip::eIPAddressType' needs to have dll-interface to be used by clients of class 'ipsdk::core::NetworkDescription'
20 #pragma warning (push)
21 #pragma warning (disable : 4251)
22 
24 #include <IPSDKCore/Config/Network/NetworkDescriptionTypes.h>
25 #include <IPSDKSerialization/Engine/BaseSerializationObject.h>
26 
27 namespace ipsdk {
28 namespace core {
29 
32 
34 {
35  // declare serial class
37 
38 public:
44 
45 // methods
46 public:
48  bool isInit() const;
49 
51  void init(ipUInt32 portNumber,
52  const tcpip::eIPAddressType& iPAddressType);
53 
56  ipUInt32 getPortNumber() const;
57 
60  const tcpip::eIPAddressType& getIPAddressType() const;
61 
65  bool isValidAddress(const tcpip::Address& address) const;
66 
69  bool existsAddress(const tcpip::Address& address) const;
70 
74  bool isMasterAddress(const tcpip::Address& address) const;
75 
79  bool isSlaveAddress(const tcpip::Address& address) const;
80 
86  void addMasterAddress(const tcpip::Address& masterAddress);
87 
95  void addSlaveAddress(const tcpip::Address& masterAddress,
96  const AddressColl& slavesColl);
97 
105  void addSlaveAddress(const tcpip::Address& masterAddress,
106  const tcpip::Address& slaveAddress);
107 
111  const AddressHierarchy& getAddressHierarchy() const;
112 
116  const AddressColl& getSlavesColl(const tcpip::Address& masterAddress) const;
117 
121  const tcpip::Address& getMasterAddress(const tcpip::Address& slaveAddress) const;
122 
125  const AddressColl& getGlobalAddressColl() const;
126 
128  void clear();
129 
130 // attributes
131 protected:
134 
137 
141 
144 
146  bool _bInit;
147 };
148 
151 
152 inline bool
154 {
155  return _bInit;
156 }
157 
160 
161 } // end of namespace core
162 } // end of namespace ipsdk
163 
164 #pragma warning (pop)
165 
166 #endif // __IPSDKCORE_NETWORKDESCRIPTION_H__
#define IPSDK_DECLARE_SERIAL_WITH_COPY(libraryName, className)
macro enabling serialization on class
Definition: SerializationHdrMacro.h:73
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
AddressColl _globalAddressColl
collection of all ip addresses associated to object
Definition: NetworkDescription.h:143
bool _bInit
object initialization flag
Definition: NetworkDescription.h:146
Definition of import/export macro for library.
eIPAddressType
Enumerate TCP/IP ip address type.
Definition: Types.h:66
derived class of asio io address for ipsdk::tcpip namespace integration
Definition: Types.h:86
#define IPSDKCORE_API
Import/Export macro for library IPSDKCore.
Definition: IPSDKCoreExports.h:27
AddressHierarchy _addressHierarchy
Definition: NetworkDescription.h:140
std::map< tcpip::Address, AddressColl > AddressHierarchy
collection of ip address with masters as keys and slaves as values
Definition: NetworkDescriptionTypes.h:34
ipUInt32 _portNumber
port number used for connections
Definition: NetworkDescription.h:133
bool isInit() const
retrieve object initialization flag
Definition: NetworkDescription.h:153
Class encapsulating network description for multi-machine processings.
Definition: NetworkDescription.h:33
std::set< tcpip::Address > AddressColl
ordered collection of ip address
Definition: NetworkDescriptionTypes.h:25
Base class for serializable class.
Definition: BaseSerializationObject.h:33
tcpip::eIPAddressType _ipAddressType
type of ip addresses used
Definition: NetworkDescription.h:136
uint32_t ipUInt32
Base types definition.
Definition: BaseTypes.h:53