Commit 144fde2f2d1edf82db17842a90aac413e8968f1b

Authored by Jürgen Knödlseder
1 parent baa91e0d

Implement Hub start method.

include/GVOHub.hpp
@@ -65,6 +65,7 @@ public: @@ -65,6 +65,7 @@ public:
65 void clear(void); 65 void clear(void);
66 GVOHub* clone(void) const; 66 GVOHub* clone(void) const;
67 std::string classname(void) const; 67 std::string classname(void) const;
  68 + void start(void);
68 std::string print(const GChatter& chatter = NORMAL) const; 69 std::string print(const GChatter& chatter = NORMAL) const;
69 70
70 71
@@ -107,7 +108,7 @@ protected: @@ -107,7 +108,7 @@ protected:
107 void activate_callbacks(std::string method, char cl_id[31]); 108 void activate_callbacks(std::string method, char cl_id[31]);
108 109
109 // Low-level methods 110 // Low-level methods
110 - void create_samp_file(void); 111 + void create_samp_file(void) const;
111 void post_string(const std::string& content, const socklen_t& sock) const; 112 void post_string(const std::string& content, const socklen_t& sock) const;
112 void post_string_callback(const std::string& content) const; 113 void post_string_callback(const std::string& content) const;
113 std::string random_string(const size_t& length) const; 114 std::string random_string(const size_t& length) const;
pyext/GVOHub.i
@@ -45,6 +45,7 @@ public: @@ -45,6 +45,7 @@ public:
45 void clear(void); 45 void clear(void);
46 GVOHub* clone(void) const; 46 GVOHub* clone(void) const;
47 std::string classname(void) const; 47 std::string classname(void) const;
  48 + void start(void);
48 }; 49 };
49 50
50 51
src/vo/GVOHub.cpp
@@ -75,9 +75,6 @@ GVOHub::GVOHub(void) @@ -75,9 +75,6 @@ GVOHub::GVOHub(void)
75 // Initialise members 75 // Initialise members
76 init_members(); 76 init_members();
77 77
78 - // Start Hub  
79 - start_hub();  
80 -  
81 // Return 78 // Return
82 return; 79 return;
83 } 80 }
@@ -96,9 +93,6 @@ GVOHub::GVOHub(const GVOHub& hub) @@ -96,9 +93,6 @@ GVOHub::GVOHub(const GVOHub& hub)
96 // Copy members 93 // Copy members
97 copy_members(hub); 94 copy_members(hub);
98 95
99 - // Start Hub  
100 - start_hub();  
101 -  
102 // Return 96 // Return
103 return; 97 return;
104 } 98 }
@@ -109,7 +103,9 @@ GVOHub::GVOHub(const GVOHub& hub) @@ -109,7 +103,9 @@ GVOHub::GVOHub(const GVOHub& hub)
109 ***************************************************************************/ 103 ***************************************************************************/
110 GVOHub::~GVOHub(void) 104 GVOHub::~GVOHub(void)
111 { 105 {
  106 + // Free members
112 free_members(); 107 free_members();
  108 +
113 // Return 109 // Return
114 return; 110 return;
115 } 111 }
@@ -141,9 +137,6 @@ GVOHub& GVOHub::operator=(const GVOHub& hub) @@ -141,9 +137,6 @@ GVOHub& GVOHub::operator=(const GVOHub& hub)
141 // Copy members 137 // Copy members
142 copy_members(hub); 138 copy_members(hub);
143 139
144 - // Start Hub  
145 - start_hub();  
146 -  
147 } // endif: object was not identical 140 } // endif: object was not identical
148 141
149 // Return 142 // Return
@@ -164,12 +157,11 @@ GVOHub& GVOHub::operator=(const GVOHub& hub) @@ -164,12 +157,11 @@ GVOHub& GVOHub::operator=(const GVOHub& hub)
164 ***************************************************************************/ 157 ***************************************************************************/
165 void GVOHub::clear(void) 158 void GVOHub::clear(void)
166 { 159 {
167 - // Free memory and initialise members 160 + // Free members
168 free_members(); 161 free_members();
169 - init_members();  
170 162
171 - // Start Hub  
172 - start_hub(); 163 + // Initialise members
  164 + init_members();
173 165
174 // Return 166 // Return
175 return; 167 return;
@@ -187,6 +179,22 @@ GVOHub* GVOHub::clone(void) const @@ -187,6 +179,22 @@ GVOHub* GVOHub::clone(void) const
187 179
188 180
189 /***********************************************************************//** 181 /***********************************************************************//**
  182 + * @brief Start Hub
  183 + ***************************************************************************/
  184 +void GVOHub::start(void)
  185 +{
  186 + // Create SAMP file
  187 + create_samp_file();
  188 +
  189 + // Start Hub
  190 + start_hub();
  191 +
  192 + // Return
  193 + return;
  194 +}
  195 +
  196 +
  197 +/***********************************************************************//**
190 * @brief Print VO hub information 198 * @brief Print VO hub information
191 * 199 *
192 * @param[in] chatter Chattiness (defaults to NORMAL). 200 * @param[in] chatter Chattiness (defaults to NORMAL).
@@ -276,9 +284,6 @@ void GVOHub::init_members(void) @@ -276,9 +284,6 @@ void GVOHub::init_members(void)
276 strcpy(m_clients->metadata[i].description, "Unknown"); 284 strcpy(m_clients->metadata[i].description, "Unknown");
277 } 285 }
278 286
279 - // Create SAMP file  
280 - create_samp_file();  
281 -  
282 // Return 287 // Return
283 return; 288 return;
284 } 289 }
@@ -347,7 +352,6 @@ void GVOHub::start_hub(void) @@ -347,7 +352,6 @@ void GVOHub::start_hub(void)
347 struct sockaddr_in serv_addr; 352 struct sockaddr_in serv_addr;
348 std::memset(&serv_addr, 0, sizeof(serv_addr)); 353 std::memset(&serv_addr, 0, sizeof(serv_addr));
349 serv_addr.sin_family = AF_INET; 354 serv_addr.sin_family = AF_INET;
350 - //serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);  
351 serv_addr.sin_addr.s_addr = inet_addr(m_hub_host.c_str()); 355 serv_addr.sin_addr.s_addr = inet_addr(m_hub_host.c_str());
352 serv_addr.sin_port = htons(gammalib::toint(m_hub_port)); 356 serv_addr.sin_port = htons(gammalib::toint(m_hub_port));
353 357
@@ -390,7 +394,7 @@ void GVOHub::start_hub(void) @@ -390,7 +394,7 @@ void GVOHub::start_hub(void)
390 } 394 }
391 395
392 // Now start listening for the clients: 5 requests simultaneously pending 396 // Now start listening for the clients: 5 requests simultaneously pending
393 - // maximum 397 + // at maximum
394 if (listen(hub_socket, 5) < 0) { 398 if (listen(hub_socket, 5) < 0) {
395 std::string msg = "Unable to start listening on Hub socket. Errno="+ 399 std::string msg = "Unable to start listening on Hub socket. Errno="+
396 gammalib::str(errno); 400 gammalib::str(errno);
@@ -1612,7 +1616,7 @@ void GVOHub::activate_callbacks(std::string method,char cl_id[31]) @@ -1612,7 +1616,7 @@ void GVOHub::activate_callbacks(std::string method,char cl_id[31])
1612 * 1616 *
1613 * Implements IVOA standard REC-SAMP-1.3-20120411. 1617 * Implements IVOA standard REC-SAMP-1.3-20120411.
1614 ***************************************************************************/ 1618 ***************************************************************************/
1615 -void GVOHub::create_samp_file(void) 1619 +void GVOHub::create_samp_file(void) const
1616 { 1620 {
1617 // Get lockfile URL 1621 // Get lockfile URL
1618 std::string lockurl = get_hub_lockfile(); 1622 std::string lockurl = get_hub_lockfile();
test/test_GVO.cpp
@@ -44,6 +44,9 @@ void* vo_thread(void* ptr) @@ -44,6 +44,9 @@ void* vo_thread(void* ptr)
44 // Create VO Hub 44 // Create VO Hub
45 GVOHub hub; 45 GVOHub hub;
46 46
  47 + // Start Hub
  48 + hub.start();
  49 +
47 // Return 50 // Return
48 return NULL; 51 return NULL;
49 } 52 }