otsdaq  v2_05_02_indev
NetworkConverters.cc
1 #include "otsdaq/NetworkUtilities/NetworkConverters.h"
2 #include <arpa/inet.h>
3 #include <iostream>
4 #include "otsdaq/Macros/CoutMacros.h"
5 #include "otsdaq/MessageFacility/MessageFacility.h"
6 
7 using namespace ots;
8 
9 //==============================================================================
10 NetworkConverters::NetworkConverters() {}
11 
12 //==============================================================================
13 NetworkConverters::~NetworkConverters() {}
14 
15 //==============================================================================
16 std::string NetworkConverters::nameToStringIP(const std::string& value)
17 {
18  struct sockaddr_in socketAddress;
19  if(inet_aton(value.c_str(), &socketAddress.sin_addr) == 0)
20  std::cout << __COUT_HDR_FL__ << "ERROR: Invalid IP address " << value << std::endl;
21  return networkToStringIP(socketAddress.sin_addr.s_addr);
22 }
23 
24 //==============================================================================
25 std::string NetworkConverters::stringToNameIP(const std::string& value)
26 {
27  struct sockaddr_in socketAddress;
28  socketAddress.sin_addr.s_addr = stringToNetworkIP(value);
29  return std::string(inet_ntoa(socketAddress.sin_addr));
30 }
31 //==============================================================================
32 uint32_t NetworkConverters::stringToNetworkIP(const std::string& value) { return unsignedToNetworkIP(stringToUnsignedIP(value)); }
33 
34 //==============================================================================
35 std::string NetworkConverters::networkToStringIP(uint32_t value) { return unsignedToStringIP(networkToUnsignedIP(value)); }
36 
37 //==============================================================================
38 std::string NetworkConverters::unsignedToStringIP(uint32_t value)
39 {
40  std::string returnValue;
41  returnValue += (value >> 24) & 0xff;
42  returnValue += (value >> 16) & 0xff;
43  returnValue += (value >> 8) & 0xff;
44  returnValue += (value)&0xff;
45  return returnValue;
46 }
47 
48 //==============================================================================
49 uint32_t NetworkConverters::stringToUnsignedIP(const std::string& value)
50 {
51  return ((((uint32_t)value[0]) & 0xff) << 24) + ((((uint32_t)value[1]) & 0xff) << 16) + ((((uint32_t)value[2]) & 0xff) << 8) + (((uint32_t)value[3]) & 0xff);
52 }
53 
54 //==============================================================================
55 uint32_t NetworkConverters::unsignedToNetworkIP(uint32_t value) { return htonl(value); }
56 
57 //==============================================================================
58 uint32_t NetworkConverters::networkToUnsignedIP(uint32_t value) { return ntohl(value); }
59 
60 //==============================================================================
61 uint16_t NetworkConverters::stringToNetworkPort(const std::string& value) { return unsignedToNetworkPort(stringToUnsignedPort(value)); }
62 
63 //==============================================================================
64 std::string NetworkConverters::networkToStringPort(uint16_t value) { return unsignedToStringPort(networkToUnsignedPort(value)); }
65 
66 //==============================================================================
67 std::string NetworkConverters::unsignedToStringPort(uint16_t value)
68 {
69  std::string returnValue;
70  returnValue += (value >> 8) & 0xff;
71  returnValue += (value)&0xff;
72  return returnValue;
73 }
74 
75 //==============================================================================
76 uint16_t NetworkConverters::stringToUnsignedPort(const std::string& value) { return ((((uint32_t)value[0]) & 0xff) << 8) + (((uint32_t)value[1]) & 0xff); }
77 
78 //==============================================================================
79 uint16_t NetworkConverters::unsignedToNetworkPort(uint16_t value) { return htons(value); }
80 
81 //==============================================================================
82 uint16_t NetworkConverters::networkToUnsignedPort(uint16_t value) { return ntohs(value); }