Commit 6f0f0ebcea210ceef01918b2bfc10aa345f5e192

Authored by Thierry Louge
1 parent b3add657

Use of GVOApp to track registered applications is OK

include/GVOApp.hpp
... ... @@ -76,9 +76,9 @@ protected:
76 76  
77 77 // Protected data area
78 78 std::string m_name; //!< Client name
79   - std::string m_id; //!< Id assigned to client by the hub
  79 + char m_id[32]; //!< Id assigned to client by the hub
80 80 std::list <std::string> registered_calls; //!< Calls for which is registered the application.
81   -
  81 + std::list<std::string>::iterator iterator_calls;
82 82  
83 83 };
84 84  
... ...
include/GVOHub.hpp
... ... @@ -61,11 +61,7 @@ public:
61 61 GVOHub* clone(void) const;
62 62 void start(void);
63 63 std::string print(const GChatter& chatter = NORMAL) const;
64   - //void connect(void);
65   - //void disconnect(void);
66   - //bool has_hub(void) const;
67   - //bool is_connected(void) const;
68   - //GXml response(void) const;
  64 +
69 65  
70 66 protected:
71 67 // Protected methods
... ... @@ -74,8 +70,6 @@ protected:
74 70 void free_members(void);
75 71 void init_hub(void);
76 72 void start_hub(void);
77   - //bool find_hub(void);
78   - //void connect_to_hub(void);
79 73 void register_service(const GXml& xml,const socklen_t& sock);
80 74 void ping_service(const socklen_t& sock);
81 75 void unregister(const socklen_t& sock);
... ... @@ -86,6 +80,7 @@ protected:
86 80 void post_string(const std::string& string) const;
87 81 std::string receive_string(void) const;
88 82 std::string get_response_value(const GXml& xml, const std::string& name) const;
  83 + std::list<std::string> get_registrations(const GXml& xml, const std::string& name) const;
89 84 void get_name_value_pair(const GXmlNode* node, std::string& name, std::string& value) const;
90 85 std::string get_hub_lockfile(void) const;
91 86  
... ... @@ -98,11 +93,8 @@ protected:
98 93 std::string m_version; //!< The version of the SAMP Standard Profile implemented by the hub
99 94 std::string m_client_key; //!< Private client key
100 95 std::string m_hub_id; //!< Hub identifier used by the hub when it sends message itself rather than forwarding from others
101   - //std::string m_client_id; //!< Client identifier
102 96 int m_socket; //!< Hub socket
103 97 int m_nb_clients; //!< Number of already registered clients
104   - //std::vector<int> m_client_id; //!< Id assigned to client by the hub.
105   - //std::vector<std::string> m_client_name;
106 98 std::list<GVOApp*> m_connected_apps; //!< list of apps connected to the hub
107 99 };
108 100  
... ...
registrations.txt 0 → 100644
  1 +GXmlElement::name
  2 + GXmlText::samp.hub.event.registerGXmlElement::name
  3 + GXmlText::table.select.rowListGXmlElement::name
  4 + GXmlText::table.highlight.rowGXmlElement::name
  5 + GXmlText::table.load.fitsGXmlElement::name
  6 + GXmlText::samp.app.pingGXmlElement::name
  7 + GXmlText::coord.pointAt.skyGXmlElement::name
  8 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  9 + GXmlText::image.load.fitsGXmlElement::name
  10 + GXmlText::samp.hub.disconnectGXmlElement::name
  11 + GXmlText::table.load.votableGXmlElement::name
  12 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  13 + GXmlText::script.aladin.sendGXmlElement::name
  14 + GXmlText::samp.hub.event.registerGXmlElement::name
  15 + GXmlText::table.select.rowListGXmlElement::name
  16 + GXmlText::table.highlight.rowGXmlElement::name
  17 + GXmlText::table.load.fitsGXmlElement::name
  18 + GXmlText::samp.app.pingGXmlElement::name
  19 + GXmlText::coord.pointAt.skyGXmlElement::name
  20 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  21 + GXmlText::image.load.fitsGXmlElement::name
  22 + GXmlText::samp.hub.disconnectGXmlElement::name
  23 + GXmlText::table.load.votableGXmlElement::name
  24 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  25 + GXmlText::script.aladin.sendGXmlElement::name
  26 + GXmlText::samp.hub.event.registerGXmlElement::name
  27 + GXmlText::table.select.rowListGXmlElement::name
  28 + GXmlText::table.highlight.rowGXmlElement::name
  29 + GXmlText::table.load.fitsGXmlElement::name
  30 + GXmlText::samp.app.pingGXmlElement::name
  31 + GXmlText::coord.pointAt.skyGXmlElement::name
  32 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  33 + GXmlText::image.load.fitsGXmlElement::name
  34 + GXmlText::samp.hub.disconnectGXmlElement::name
  35 + GXmlText::table.load.votableGXmlElement::name
  36 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  37 + GXmlText::script.aladin.sendGXmlElement::name
  38 + GXmlText::samp.hub.event.registerGXmlElement::name
  39 + GXmlText::table.select.rowListGXmlElement::name
  40 + GXmlText::table.highlight.rowGXmlElement::name
  41 + GXmlText::table.load.fitsGXmlElement::name
  42 + GXmlText::samp.app.pingGXmlElement::name
  43 + GXmlText::coord.pointAt.skyGXmlElement::name
  44 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  45 + GXmlText::image.load.fitsGXmlElement::name
  46 + GXmlText::samp.hub.disconnectGXmlElement::name
  47 + GXmlText::table.load.votableGXmlElement::name
  48 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  49 + GXmlText::script.aladin.sendGXmlElement::name
  50 + GXmlText::samp.hub.event.registerGXmlElement::name
  51 + GXmlText::table.select.rowListGXmlElement::name
  52 + GXmlText::table.highlight.rowGXmlElement::name
  53 + GXmlText::table.load.fitsGXmlElement::name
  54 + GXmlText::samp.app.pingGXmlElement::name
  55 + GXmlText::coord.pointAt.skyGXmlElement::name
  56 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  57 + GXmlText::image.load.fitsGXmlElement::name
  58 + GXmlText::samp.hub.disconnectGXmlElement::name
  59 + GXmlText::table.load.votableGXmlElement::name
  60 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  61 + GXmlText::script.aladin.sendGXmlElement::name
  62 + GXmlText::samp.hub.event.registerGXmlElement::name
  63 + GXmlText::table.select.rowListGXmlElement::name
  64 + GXmlText::table.highlight.rowGXmlElement::name
  65 + GXmlText::table.load.fitsGXmlElement::name
  66 + GXmlText::samp.app.pingGXmlElement::name
  67 + GXmlText::coord.pointAt.skyGXmlElement::name
  68 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  69 + GXmlText::image.load.fitsGXmlElement::name
  70 + GXmlText::samp.hub.disconnectGXmlElement::name
  71 + GXmlText::table.load.votableGXmlElement::name
  72 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  73 + GXmlText::script.aladin.sendGXmlElement::name
  74 + GXmlText::samp.hub.event.registerGXmlElement::name
  75 + GXmlText::table.select.rowListGXmlElement::name
  76 + GXmlText::table.highlight.rowGXmlElement::name
  77 + GXmlText::table.load.fitsGXmlElement::name
  78 + GXmlText::samp.app.pingGXmlElement::name
  79 + GXmlText::coord.pointAt.skyGXmlElement::name
  80 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  81 + GXmlText::image.load.fitsGXmlElement::name
  82 + GXmlText::samp.hub.disconnectGXmlElement::name
  83 + GXmlText::table.load.votableGXmlElement::name
  84 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  85 + GXmlText::script.aladin.sendGXmlElement::name
  86 + GXmlText::samp.hub.event.registerGXmlElement::name
  87 + GXmlText::table.select.rowListGXmlElement::name
  88 + GXmlText::table.highlight.rowGXmlElement::name
  89 + GXmlText::table.load.fitsGXmlElement::name
  90 + GXmlText::samp.app.pingGXmlElement::name
  91 + GXmlText::coord.pointAt.skyGXmlElement::name
  92 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  93 + GXmlText::image.load.fitsGXmlElement::name
  94 + GXmlText::samp.hub.disconnectGXmlElement::name
  95 + GXmlText::table.load.votableGXmlElement::name
  96 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  97 + GXmlText::script.aladin.sendGXmlElement::name
  98 + GXmlText::samp.hub.event.registerGXmlElement::name
  99 + GXmlText::table.select.rowListGXmlElement::name
  100 + GXmlText::table.highlight.rowGXmlElement::name
  101 + GXmlText::table.load.fitsGXmlElement::name
  102 + GXmlText::samp.app.pingGXmlElement::name
  103 + GXmlText::coord.pointAt.skyGXmlElement::name
  104 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  105 + GXmlText::image.load.fitsGXmlElement::name
  106 + GXmlText::samp.hub.disconnectGXmlElement::name
  107 + GXmlText::table.load.votableGXmlElement::name
  108 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  109 + GXmlText::script.aladin.sendGXmlElement::name
  110 + GXmlText::samp.hub.event.registerGXmlElement::name
  111 + GXmlText::table.select.rowListGXmlElement::name
  112 + GXmlText::table.highlight.rowGXmlElement::name
  113 + GXmlText::table.load.fitsGXmlElement::name
  114 + GXmlText::samp.app.pingGXmlElement::name
  115 + GXmlText::coord.pointAt.skyGXmlElement::name
  116 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  117 + GXmlText::image.load.fitsGXmlElement::name
  118 + GXmlText::samp.hub.disconnectGXmlElement::name
  119 + GXmlText::table.load.votableGXmlElement::name
  120 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  121 + GXmlText::script.aladin.sendGXmlElement::name
  122 + GXmlText::samp.hub.event.registerGXmlElement::name
  123 + GXmlText::table.select.rowListGXmlElement::name
  124 + GXmlText::table.highlight.rowGXmlElement::name
  125 + GXmlText::table.load.fitsGXmlElement::name
  126 + GXmlText::samp.app.pingGXmlElement::name
  127 + GXmlText::coord.pointAt.skyGXmlElement::name
  128 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  129 + GXmlText::image.load.fitsGXmlElement::name
  130 + GXmlText::samp.hub.disconnectGXmlElement::name
  131 + GXmlText::table.load.votableGXmlElement::name
  132 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  133 + GXmlText::script.aladin.sendGXmlElement::name
  134 + GXmlText::samp.hub.event.registerGXmlElement::name
  135 + GXmlText::table.select.rowListGXmlElement::name
  136 + GXmlText::table.highlight.rowGXmlElement::name
  137 + GXmlText::table.load.fitsGXmlElement::name
  138 + GXmlText::samp.app.pingGXmlElement::name
  139 + GXmlText::coord.pointAt.skyGXmlElement::name
  140 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  141 + GXmlText::image.load.fitsGXmlElement::name
  142 + GXmlText::samp.hub.disconnectGXmlElement::name
  143 + GXmlText::table.load.votableGXmlElement::name
  144 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  145 + GXmlText::script.aladin.sendGXmlElement::name
  146 + GXmlText::samp.hub.event.registerGXmlElement::name
  147 + GXmlText::table.select.rowListGXmlElement::name
  148 + GXmlText::table.highlight.rowGXmlElement::name
  149 + GXmlText::table.load.fitsGXmlElement::name
  150 + GXmlText::samp.app.pingGXmlElement::name
  151 + GXmlText::coord.pointAt.skyGXmlElement::name
  152 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  153 + GXmlText::image.load.fitsGXmlElement::name
  154 + GXmlText::samp.hub.disconnectGXmlElement::name
  155 + GXmlText::table.load.votableGXmlElement::name
  156 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  157 + GXmlText::script.aladin.sendGXmlElement::name
  158 + GXmlText::samp.hub.event.registerGXmlElement::name
  159 + GXmlText::table.select.rowListGXmlElement::name
  160 + GXmlText::table.highlight.rowGXmlElement::name
  161 + GXmlText::table.load.fitsGXmlElement::name
  162 + GXmlText::samp.app.pingGXmlElement::name
  163 + GXmlText::coord.pointAt.skyGXmlElement::name
  164 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  165 + GXmlText::image.load.fitsGXmlElement::name
  166 + GXmlText::samp.hub.disconnectGXmlElement::name
  167 + GXmlText::table.load.votableGXmlElement::name
  168 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  169 + GXmlText::script.aladin.sendGXmlElement::name
  170 + GXmlText::samp.hub.event.registerGXmlElement::name
  171 + GXmlText::table.select.rowListGXmlElement::name
  172 + GXmlText::table.highlight.rowGXmlElement::name
  173 + GXmlText::table.load.fitsGXmlElement::name
  174 + GXmlText::samp.app.pingGXmlElement::name
  175 + GXmlText::coord.pointAt.skyGXmlElement::name
  176 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  177 + GXmlText::image.load.fitsGXmlElement::name
  178 + GXmlText::samp.hub.disconnectGXmlElement::name
  179 + GXmlText::table.load.votableGXmlElement::name
  180 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  181 + GXmlText::script.aladin.sendGXmlElement::name
  182 + GXmlText::samp.hub.event.registerGXmlElement::name
  183 + GXmlText::table.select.rowListGXmlElement::name
  184 + GXmlText::table.highlight.rowGXmlElement::name
  185 + GXmlText::table.load.fitsGXmlElement::name
  186 + GXmlText::samp.app.pingGXmlElement::name
  187 + GXmlText::coord.pointAt.skyGXmlElement::name
  188 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  189 + GXmlText::image.load.fitsGXmlElement::name
  190 + GXmlText::samp.hub.disconnectGXmlElement::name
  191 + GXmlText::table.load.votableGXmlElement::name
  192 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  193 + GXmlText::script.aladin.sendGXmlElement::name
  194 + GXmlText::samp.hub.event.registerGXmlElement::name
  195 + GXmlText::table.select.rowListGXmlElement::name
  196 + GXmlText::table.highlight.rowGXmlElement::name
  197 + GXmlText::table.load.fitsGXmlElement::name
  198 + GXmlText::samp.app.pingGXmlElement::name
  199 + GXmlText::coord.pointAt.skyGXmlElement::name
  200 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  201 + GXmlText::image.load.fitsGXmlElement::name
  202 + GXmlText::samp.hub.disconnectGXmlElement::name
  203 + GXmlText::table.load.votableGXmlElement::name
  204 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  205 + GXmlText::script.aladin.sendGXmlElement::name
  206 + GXmlText::samp.hub.event.registerGXmlElement::name
  207 + GXmlText::table.select.rowListGXmlElement::name
  208 + GXmlText::table.highlight.rowGXmlElement::name
  209 + GXmlText::table.load.fitsGXmlElement::name
  210 + GXmlText::samp.app.pingGXmlElement::name
  211 + GXmlText::coord.pointAt.skyGXmlElement::name
  212 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  213 + GXmlText::image.load.fitsGXmlElement::name
  214 + GXmlText::samp.hub.disconnectGXmlElement::name
  215 + GXmlText::table.load.votableGXmlElement::name
  216 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  217 + GXmlText::script.aladin.sendGXmlElement::name
  218 + GXmlText::samp.hub.event.registerGXmlElement::name
  219 + GXmlText::table.select.rowListGXmlElement::name
  220 + GXmlText::table.highlight.rowGXmlElement::name
  221 + GXmlText::table.load.fitsGXmlElement::name
  222 + GXmlText::samp.app.pingGXmlElement::name
  223 + GXmlText::coord.pointAt.skyGXmlElement::name
  224 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  225 + GXmlText::image.load.fitsGXmlElement::name
  226 + GXmlText::samp.hub.disconnectGXmlElement::name
  227 + GXmlText::table.load.votableGXmlElement::name
  228 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  229 + GXmlText::script.aladin.sendGXmlElement::name
  230 + GXmlText::samp.hub.event.registerGXmlElement::name
  231 + GXmlText::table.select.rowListGXmlElement::name
  232 + GXmlText::table.highlight.rowGXmlElement::name
  233 + GXmlText::table.load.fitsGXmlElement::name
  234 + GXmlText::samp.app.pingGXmlElement::name
  235 + GXmlText::coord.pointAt.skyGXmlElement::name
  236 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  237 + GXmlText::image.load.fitsGXmlElement::name
  238 + GXmlText::samp.hub.disconnectGXmlElement::name
  239 + GXmlText::table.load.votableGXmlElement::name
  240 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  241 + GXmlText::script.aladin.sendGXmlElement::name
  242 + GXmlText::samp.hub.event.registerGXmlElement::name
  243 + GXmlText::table.select.rowListGXmlElement::name
  244 + GXmlText::table.highlight.rowGXmlElement::name
  245 + GXmlText::table.load.fitsGXmlElement::name
  246 + GXmlText::samp.app.pingGXmlElement::name
  247 + GXmlText::coord.pointAt.skyGXmlElement::name
  248 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  249 + GXmlText::image.load.fitsGXmlElement::name
  250 + GXmlText::samp.hub.disconnectGXmlElement::name
  251 + GXmlText::table.load.votableGXmlElement::name
  252 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  253 + GXmlText::script.aladin.sendGXmlElement::name
  254 + GXmlText::samp.hub.event.registerGXmlElement::name
  255 + GXmlText::table.select.rowListGXmlElement::name
  256 + GXmlText::table.highlight.rowGXmlElement::name
  257 + GXmlText::table.load.fitsGXmlElement::name
  258 + GXmlText::samp.app.pingGXmlElement::name
  259 + GXmlText::coord.pointAt.skyGXmlElement::name
  260 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  261 + GXmlText::image.load.fitsGXmlElement::name
  262 + GXmlText::samp.hub.disconnectGXmlElement::name
  263 + GXmlText::table.load.votableGXmlElement::name
  264 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  265 + GXmlText::script.aladin.sendGXmlElement::name
  266 + GXmlText::samp.hub.event.registerGXmlElement::name
  267 + GXmlText::table.select.rowListGXmlElement::name
  268 + GXmlText::table.highlight.rowGXmlElement::name
  269 + GXmlText::table.load.fitsGXmlElement::name
  270 + GXmlText::samp.app.pingGXmlElement::name
  271 + GXmlText::coord.pointAt.skyGXmlElement::name
  272 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  273 + GXmlText::image.load.fitsGXmlElement::name
  274 + GXmlText::samp.hub.disconnectGXmlElement::name
  275 + GXmlText::table.load.votableGXmlElement::name
  276 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  277 + GXmlText::script.aladin.sendGXmlElement::name
  278 + GXmlText::samp.hub.event.registerGXmlElement::name
  279 + GXmlText::table.select.rowListGXmlElement::name
  280 + GXmlText::table.highlight.rowGXmlElement::name
  281 + GXmlText::table.load.fitsGXmlElement::name
  282 + GXmlText::samp.app.pingGXmlElement::name
  283 + GXmlText::coord.pointAt.skyGXmlElement::name
  284 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  285 + GXmlText::image.load.fitsGXmlElement::name
  286 + GXmlText::samp.hub.disconnectGXmlElement::name
  287 + GXmlText::table.load.votableGXmlElement::name
  288 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  289 + GXmlText::script.aladin.sendGXmlElement::name
  290 + GXmlText::samp.hub.event.registerGXmlElement::name
  291 + GXmlText::table.select.rowListGXmlElement::name
  292 + GXmlText::table.highlight.rowGXmlElement::name
  293 + GXmlText::table.load.fitsGXmlElement::name
  294 + GXmlText::samp.app.pingGXmlElement::name
  295 + GXmlText::coord.pointAt.skyGXmlElement::name
  296 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  297 + GXmlText::image.load.fitsGXmlElement::name
  298 + GXmlText::samp.hub.disconnectGXmlElement::name
  299 + GXmlText::table.load.votableGXmlElement::name
  300 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  301 + GXmlText::script.aladin.sendGXmlElement::name
  302 + GXmlText::samp.hub.event.registerGXmlElement::name
  303 + GXmlText::table.select.rowListGXmlElement::name
  304 + GXmlText::table.highlight.rowGXmlElement::name
  305 + GXmlText::table.load.fitsGXmlElement::name
  306 + GXmlText::samp.app.pingGXmlElement::name
  307 + GXmlText::coord.pointAt.skyGXmlElement::name
  308 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  309 + GXmlText::image.load.fitsGXmlElement::name
  310 + GXmlText::samp.hub.disconnectGXmlElement::name
  311 + GXmlText::table.load.votableGXmlElement::name
  312 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  313 + GXmlText::script.aladin.sendGXmlElement::name
  314 + GXmlText::samp.hub.event.registerGXmlElement::name
  315 + GXmlText::table.select.rowListGXmlElement::name
  316 + GXmlText::table.highlight.rowGXmlElement::name
  317 + GXmlText::table.load.fitsGXmlElement::name
  318 + GXmlText::samp.app.pingGXmlElement::name
  319 + GXmlText::coord.pointAt.skyGXmlElement::name
  320 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  321 + GXmlText::image.load.fitsGXmlElement::name
  322 + GXmlText::samp.hub.disconnectGXmlElement::name
  323 + GXmlText::table.load.votableGXmlElement::name
  324 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  325 + GXmlText::script.aladin.sendGXmlElement::name
  326 + GXmlText::samp.hub.event.registerGXmlElement::name
  327 + GXmlText::table.select.rowListGXmlElement::name
  328 + GXmlText::table.highlight.rowGXmlElement::name
  329 + GXmlText::table.load.fitsGXmlElement::name
  330 + GXmlText::samp.app.pingGXmlElement::name
  331 + GXmlText::coord.pointAt.skyGXmlElement::name
  332 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  333 + GXmlText::image.load.fitsGXmlElement::name
  334 + GXmlText::samp.hub.disconnectGXmlElement::name
  335 + GXmlText::table.load.votableGXmlElement::name
  336 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  337 + GXmlText::script.aladin.sendGXmlElement::name
  338 + GXmlText::samp.hub.event.registerGXmlElement::name
  339 + GXmlText::table.select.rowListGXmlElement::name
  340 + GXmlText::table.highlight.rowGXmlElement::name
  341 + GXmlText::table.load.fitsGXmlElement::name
  342 + GXmlText::samp.app.pingGXmlElement::name
  343 + GXmlText::coord.pointAt.skyGXmlElement::name
  344 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  345 + GXmlText::image.load.fitsGXmlElement::name
  346 + GXmlText::samp.hub.disconnectGXmlElement::name
  347 + GXmlText::table.load.votableGXmlElement::name
  348 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  349 + GXmlText::script.aladin.sendGXmlElement::name
  350 + GXmlText::samp.hub.event.registerGXmlElement::name
  351 + GXmlText::table.select.rowListGXmlElement::name
  352 + GXmlText::table.highlight.rowGXmlElement::name
  353 + GXmlText::table.load.fitsGXmlElement::name
  354 + GXmlText::samp.app.pingGXmlElement::name
  355 + GXmlText::coord.pointAt.skyGXmlElement::name
  356 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  357 + GXmlText::image.load.fitsGXmlElement::name
  358 + GXmlText::samp.hub.disconnectGXmlElement::name
  359 + GXmlText::table.load.votableGXmlElement::name
  360 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  361 + GXmlText::script.aladin.sendGXmlElement::name
  362 + GXmlText::samp.hub.event.registerGXmlElement::name
  363 + GXmlText::table.select.rowListGXmlElement::name
  364 + GXmlText::table.highlight.rowGXmlElement::name
  365 + GXmlText::table.load.fitsGXmlElement::name
  366 + GXmlText::samp.app.pingGXmlElement::name
  367 + GXmlText::coord.pointAt.skyGXmlElement::name
  368 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  369 + GXmlText::image.load.fitsGXmlElement::name
  370 + GXmlText::samp.hub.disconnectGXmlElement::name
  371 + GXmlText::table.load.votableGXmlElement::name
  372 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  373 + GXmlText::script.aladin.sendGXmlElement::name
  374 + GXmlText::samp.hub.event.registerGXmlElement::name
  375 + GXmlText::table.select.rowListGXmlElement::name
  376 + GXmlText::table.highlight.rowGXmlElement::name
  377 + GXmlText::table.load.fitsGXmlElement::name
  378 + GXmlText::samp.app.pingGXmlElement::name
  379 + GXmlText::coord.pointAt.skyGXmlElement::name
  380 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  381 + GXmlText::image.load.fitsGXmlElement::name
  382 + GXmlText::samp.hub.disconnectGXmlElement::name
  383 + GXmlText::table.load.votableGXmlElement::name
  384 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  385 + GXmlText::script.aladin.sendGXmlElement::name
  386 + GXmlText::samp.hub.event.registerGXmlElement::name
  387 + GXmlText::table.select.rowListGXmlElement::name
  388 + GXmlText::table.highlight.rowGXmlElement::name
  389 + GXmlText::table.load.fitsGXmlElement::name
  390 + GXmlText::samp.app.pingGXmlElement::name
  391 + GXmlText::coord.pointAt.skyGXmlElement::name
  392 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  393 + GXmlText::image.load.fitsGXmlElement::name
  394 + GXmlText::samp.hub.disconnectGXmlElement::name
  395 + GXmlText::table.load.votableGXmlElement::name
  396 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  397 + GXmlText::script.aladin.sendGXmlElement::name
  398 + GXmlText::samp.hub.event.registerGXmlElement::name
  399 + GXmlText::table.select.rowListGXmlElement::name
  400 + GXmlText::table.highlight.rowGXmlElement::name
  401 + GXmlText::table.load.fitsGXmlElement::name
  402 + GXmlText::samp.app.pingGXmlElement::name
  403 + GXmlText::coord.pointAt.skyGXmlElement::name
  404 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  405 + GXmlText::image.load.fitsGXmlElement::name
  406 + GXmlText::samp.hub.disconnectGXmlElement::name
  407 + GXmlText::table.load.votableGXmlElement::name
  408 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  409 + GXmlText::script.aladin.sendGXmlElement::name
  410 + GXmlText::samp.hub.event.registerGXmlElement::name
  411 + GXmlText::table.select.rowListGXmlElement::name
  412 + GXmlText::table.highlight.rowGXmlElement::name
  413 + GXmlText::table.load.fitsGXmlElement::name
  414 + GXmlText::samp.app.pingGXmlElement::name
  415 + GXmlText::coord.pointAt.skyGXmlElement::name
  416 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  417 + GXmlText::image.load.fitsGXmlElement::name
  418 + GXmlText::samp.hub.disconnectGXmlElement::name
  419 + GXmlText::table.load.votableGXmlElement::name
  420 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  421 + GXmlText::script.aladin.sendGXmlElement::name
  422 + GXmlText::samp.hub.event.registerGXmlElement::name
  423 + GXmlText::table.select.rowListGXmlElement::name
  424 + GXmlText::table.highlight.rowGXmlElement::name
  425 + GXmlText::table.load.fitsGXmlElement::name
  426 + GXmlText::samp.app.pingGXmlElement::name
  427 + GXmlText::coord.pointAt.skyGXmlElement::name
  428 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  429 + GXmlText::image.load.fitsGXmlElement::name
  430 + GXmlText::samp.hub.disconnectGXmlElement::name
  431 + GXmlText::table.load.votableGXmlElement::name
  432 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  433 + GXmlText::script.aladin.sendGXmlElement::name
  434 + GXmlText::samp.hub.event.registerGXmlElement::name
  435 + GXmlText::table.select.rowListGXmlElement::name
  436 + GXmlText::table.highlight.rowGXmlElement::name
  437 + GXmlText::table.load.fitsGXmlElement::name
  438 + GXmlText::samp.app.pingGXmlElement::name
  439 + GXmlText::coord.pointAt.skyGXmlElement::name
  440 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  441 + GXmlText::image.load.fitsGXmlElement::name
  442 + GXmlText::samp.hub.disconnectGXmlElement::name
  443 + GXmlText::table.load.votableGXmlElement::name
  444 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  445 + GXmlText::script.aladin.sendGXmlElement::name
  446 + GXmlText::samp.hub.event.registerGXmlElement::name
  447 + GXmlText::table.select.rowListGXmlElement::name
  448 + GXmlText::table.highlight.rowGXmlElement::name
  449 + GXmlText::table.load.fitsGXmlElement::name
  450 + GXmlText::samp.app.pingGXmlElement::name
  451 + GXmlText::coord.pointAt.skyGXmlElement::name
  452 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  453 + GXmlText::image.load.fitsGXmlElement::name
  454 + GXmlText::samp.hub.disconnectGXmlElement::name
  455 + GXmlText::table.load.votableGXmlElement::name
  456 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  457 + GXmlText::script.aladin.sendGXmlElement::name
  458 + GXmlText::samp.hub.event.registerGXmlElement::name
  459 + GXmlText::table.select.rowListGXmlElement::name
  460 + GXmlText::table.highlight.rowGXmlElement::name
  461 + GXmlText::table.load.fitsGXmlElement::name
  462 + GXmlText::samp.app.pingGXmlElement::name
  463 + GXmlText::coord.pointAt.skyGXmlElement::name
  464 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  465 + GXmlText::image.load.fitsGXmlElement::name
  466 + GXmlText::samp.hub.disconnectGXmlElement::name
  467 + GXmlText::table.load.votableGXmlElement::name
  468 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  469 + GXmlText::script.aladin.sendGXmlElement::name
  470 + GXmlText::samp.hub.event.registerGXmlElement::name
  471 + GXmlText::table.select.rowListGXmlElement::name
  472 + GXmlText::table.highlight.rowGXmlElement::name
  473 + GXmlText::table.load.fitsGXmlElement::name
  474 + GXmlText::samp.app.pingGXmlElement::name
  475 + GXmlText::coord.pointAt.skyGXmlElement::name
  476 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  477 + GXmlText::image.load.fitsGXmlElement::name
  478 + GXmlText::samp.hub.disconnectGXmlElement::name
  479 + GXmlText::table.load.votableGXmlElement::name
  480 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  481 + GXmlText::script.aladin.sendGXmlElement::name
  482 + GXmlText::samp.hub.event.registerGXmlElement::name
  483 + GXmlText::table.select.rowListGXmlElement::name
  484 + GXmlText::table.highlight.rowGXmlElement::name
  485 + GXmlText::table.load.fitsGXmlElement::name
  486 + GXmlText::samp.app.pingGXmlElement::name
  487 + GXmlText::coord.pointAt.skyGXmlElement::name
  488 + GXmlText::samp.hub.event.shutdownGXmlElement::name
  489 + GXmlText::image.load.fitsGXmlElement::name
  490 + GXmlText::samp.hub.disconnectGXmlElement::name
  491 + GXmlText::table.load.votableGXmlElement::name
  492 + GXmlText::samp.hub.event.unregisterGXmlElement::name
  493 + GXmlText::script.aladin.send
0 494 \ No newline at end of file
... ...
src/vo/GVOApp.cpp
... ... @@ -182,12 +182,22 @@ std::string GVOApp::print(const GChatter&amp; chatter) const
182 182 {
183 183 // Initialise result string
184 184 std::string result;
185   -
  185 + std::list<std::string> temp;
  186 + temp = registered_calls;
  187 +
186 188 // Continue only if chatter is not silent
187 189 if (chatter != SILENT) {
188 190  
189 191 // Append header
190 192 result.append("=== GVOApp ===");
  193 + result.append(m_id);
  194 + result.append("%d",temp.size());
  195 + for (std::list<std::string>::iterator i = temp.begin(); i != temp.end(); ++i) {
  196 + result.append("Method:\n");
  197 + result.append(*i);
  198 + }
  199 +
  200 +
191 201  
192 202 } // endif: chatter was not silent
193 203  
... ... @@ -208,7 +218,7 @@ std::string GVOApp::print(const GChatter&amp; chatter) const
208 218 void GVOApp::init_members(void)
209 219 {
210 220 // Initialise members
211   -
  221 + std::list<std::string> registeredMethods;
212 222 // Return
213 223 return;
214 224 }
... ...
src/vo/GVOHub.cpp
... ... @@ -35,6 +35,7 @@
35 35 #include <unistd.h> // close() function
36 36 #include <netdb.h> // getaddrinfo() function
37 37 #include <sys/socket.h> // socket(), connect() functions
  38 +#include <fstream>
38 39 #include "GVOHub.hpp"
39 40 #include "GVOClient.hpp"
40 41 #include "GException.hpp"
... ... @@ -225,16 +226,30 @@ void GVOHub::register_service(const GXml&amp; xml, const socklen_t&amp; sock)
225 226 // Declare message
226 227 std::string msg = "";
227 228 char buffer[124];
  229 + char privatekey[124];
  230 + int i;
  231 + std::list<GVOApp*>::iterator q;
  232 + std::string content;
228 233 std::string translator = "http://localhost:8001/";
229 234 printf("Message composition\n");
230 235  
231 236 GVOApp* new_app = new GVOApp();
232   - new_app -> m_id = m_nb_clients;
  237 + sprintf(new_app -> m_id,"client-key:%d",m_nb_clients);
  238 + std::cout<< "Nb. of current applications registered:" << std::endl;
  239 + std::cout<< m_connected_apps.size()<< std::endl;
233 240 m_connected_apps.push_front(new_app);
234   - //m_client_id.push_back(m_nb_clients);
  241 + std::cout<< new_app->m_id << std::endl;
  242 + std::cout<< "Nb. of current applications registered:" << std::endl;
  243 + std::cout<< m_connected_apps.size()<< std::endl;
  244 + for( i=0,q=m_connected_apps.begin(); i<m_connected_apps.size(); i++,q++ ) {
  245 + std::cout << "Displaying element of applications list:" << std::endl;
  246 + content = (*q)->print();
  247 + std::cout << content << std::endl;
  248 + }
235 249  
236 250 printf("Message composition 2 \n");
237 251 sprintf(buffer,"<member><name>samp.self-id</name><value><string>client-id:%d</string></value></member>\n",m_nb_clients);
  252 + sprintf(privatekey,"<member><name>samp.private-key</name><value><string>client-key:%d</string></value></member>\n",m_nb_clients);
238 253 printf(buffer);
239 254 m_nb_clients ++;
240 255  
... ... @@ -243,7 +258,8 @@ void GVOHub::register_service(const GXml&amp; xml, const socklen_t&amp; sock)
243 258 msg.append("<methodResponse>\n");
244 259 msg.append("\t<params>\n");
245 260 msg.append("\t\t<param>\n\t\t\t<value>\n\t\t\t\t<struct>\n");
246   - msg.append("<member><name>samp.private-key</name><value><string>client-key:" + m_hub_id + "</string></value></member>\n");
  261 + //msg.append("<member><name>samp.private-key</name><value><string>client-key:" + m_hub_id + "</string></value></member>\n");
  262 + msg.append(privatekey);
247 263 msg.append("<member><name>samp.hub-id</name><value><string>client-id:" + m_hub_id + "</string></value></member>\n");
248 264 msg.append(buffer);
249 265 msg.append("<member><name>samp.url-translator</name><value><string>" + translator + "</string></value></member>\n");
... ... @@ -290,12 +306,10 @@ void GVOHub::register_metadata(const GXml&amp; xml,const socklen_t&amp; sock)
290 306 printf("Client Metadata received\n");
291 307 // Search for metadata values to store
292 308 std::string client_name = get_response_value(xml, "samp.name");
293   - //std::cout("Client Metadata : \n" + client_name.c_str());
294 309 printf("\nClient Metadata : Name %s\n", client_name.c_str());
295 310 sprintf(buffer,"Client number: %d\n",m_nb_clients);
296 311 printf(buffer);
297 312 fflush(stdout);
298   - //m_client_name.push_back(client_name.c_str());
299 313 // Declare message
300 314 std::string msg = "";
301 315  
... ... @@ -325,12 +339,44 @@ void GVOHub::register_metadata(const GXml&amp; xml,const socklen_t&amp; sock)
325 339 ***************************************************************************/
326 340 void GVOHub::declare_subscriptions(const GXml& xml,const socklen_t& sock)
327 341 {
  342 + std::list<std::string>::iterator p;
  343 + std::list<GVOApp*>::iterator q;
  344 + int i;
  345 + std::ofstream myfile;
  346 + std::string content;
328 347 printf("Declare Subscriptions\n");
329   - std::string client_subscriptions = get_response_value(xml, "samp.hub.event.subscriptions");
330   - printf("\nClient subscriptions: %s\n", client_subscriptions.c_str());
331   - // Declare message
  348 + std::list<std::string> client_subscriptions = get_registrations(xml, "samp.hub.declareSubscriptions");
  349 +
  350 + for( i=0,p=client_subscriptions.begin(); i<client_subscriptions.size()-1; i++,p++ ) {
  351 + myfile.open ("registrations.txt", std::ios::out | std::ios::app);
  352 + myfile << *p;
  353 + myfile.close();
  354 + std::cout << "Client registered to following methods calls:" << std::endl;
  355 + std::cout << *p << std::endl;
  356 +
  357 + }
  358 + std::string method_called = "";
  359 + //const GXmlNode* node = xml.element("methodCall", 0);
  360 + const GXmlNode* ptr = xml.element("methodCall", 0)->element("params", 0)->element("param", 0)->element("value", 0);
  361 + if (ptr != NULL) {
  362 + const GXmlText* text = static_cast<const GXmlText*>((*ptr)[0]);
  363 + if (text != NULL) {
  364 + method_called = text->text();
  365 + std::cout << "current app calling is:" << std::endl;
  366 + std::cout << method_called << std::endl;
  367 + }
  368 + }
  369 +
  370 + std::cout<< "Nb. of current applications registered:" << std::endl;
  371 + std::cout<< m_connected_apps.size()<< std::endl;
  372 + for( i=0,q=m_connected_apps.begin(); i<m_connected_apps.size(); i++,q++ ) {
  373 + std::cout << "Displaying element of applications list:" << std::endl;
  374 + content = (*q)->print();
  375 + std::cout << content << std::endl;
  376 + }
  377 +
332 378 std::string msg = "";
333   -
  379 +
334 380 // Set methodResponse elts
335 381 msg.append("<?xml version=\"1.0\"?>\n");
336 382 msg.append("<methodResponse>\n");
... ... @@ -617,15 +663,15 @@ void GVOHub::handle_request(const socklen_t&amp; sock)
617 663 if (method_called.compare("samp.hub.ping") == 0) {
618 664 ping_service(sock);
619 665 }
620   - if (method_called.compare("samp.hub.getMetadata") == 0) {
621   - ping_service(sock);
622   - }
623 666 if (method_called.compare("samp.hub.declareSubscriptions") == 0) {
624 667 declare_subscriptions(xml,sock);
625 668 }
626 669 if (method_called.compare("samp.hub.getSubscriptions") == 0) {
627 670 ping_service(sock);
628 671 }
  672 + if (method_called.compare("samp.hub.setXmlrpcCallback") == 0) {
  673 + ping_service(sock);
  674 + }
629 675 if (method_called.compare("samp.hub.getRegisteredClients") == 0) {
630 676 ping_service(sock);
631 677 }
... ... @@ -650,6 +696,9 @@ void GVOHub::handle_request(const socklen_t&amp; sock)
650 696 if (method_called.compare("samp.hub.reply") == 0) {
651 697 ping_service(sock);
652 698 }
  699 + if (method_called.compare("samp.hub.getMetadata") == 0) {
  700 + ping_service(sock);
  701 + }
653 702 // Return
654 703 return;
655 704 }
... ... @@ -777,8 +826,8 @@ std::string GVOHub::get_response_value(const GXml&amp; xml,
777 826 if (node != NULL) {
778 827 int num = node->elements("member");
779 828 for (int i = 0; i < num; ++i) {
780   - std::cout << i << std::endl;
781   - std::cout << *(node->element("member", i)) << std::cout;
  829 + /*std::cout << i << std::endl;
  830 + std::cout << *(node->element("member", i)) << std::cout;*/
782 831 const GXmlNode* member = node->element("member", i);
783 832 //const GXmlNode* member_name = member->element("name", 0);
784 833 std::string one_name;
... ... @@ -798,7 +847,59 @@ std::string GVOHub::get_response_value(const GXml&amp; xml,
798 847 // Return value
799 848 return value;
800 849 }
  850 +/***********************************************************************//**
  851 + * @brief Returns value for a SAMP client query parameter
  852 + *
  853 + * @param[in] xml client query XML document.
  854 + * @param[in] name Parameter name.
  855 + * @return Parameter value.
  856 + *
  857 + * Returns value for a SAMP client query parameter. If the specified
  858 + * parameter was not found or if the response structure is not compliant,
  859 + * an empty string is returned.
  860 + ***************************************************************************/
  861 +std::list<std::string> GVOHub::get_registrations(const GXml& xml,
  862 + const std::string& name) const
  863 +{
  864 + // Declare value
  865 + std::list<std::string> value;
  866 +
  867 + // Search for value of specified member
  868 + const GXmlNode* node = xml.element("methodCall", 0);
  869 + const GXmlNode* subnode;
  870 + const GXmlText* subtext;
  871 + if (node != NULL) {
  872 + node = node->element("params", 0);
  873 + if (node != NULL) {
  874 + node = node->element("param", 1);
  875 + if (node != NULL) {
  876 + node = node->element("value", 0);
  877 + if (node != NULL) {
  878 + node = node->element("struct", 0);
  879 + if (node != NULL) {
  880 + int num = node->elements("member");
  881 + for (int i = 0; i < num; ++i) {
  882 + std::cout << i << std::endl;
  883 + std::cout << "Affichage du membre\n";
  884 + std::cout << *(node->element("member", i)) << std::cout;
  885 + subnode = node->element("member", i);
  886 + subnode = subnode->element("name", 0);
  887 + std::cout << "\nsubnode" << std::endl;
  888 + std::cout << node->element("member",i)->element("name", 0)->print(NORMAL,0) << std::cout;
  889 + value.push_front(node->element("member",i)->element("name", 0)->print(NORMAL,0));
  890 + std::cout << "\nFin Affichage du membre\n";
  891 + }
  892 + }
  893 + }
  894 +
  895 + }
  896 +
  897 + }
  898 + }
801 899  
  900 + // Return value
  901 + return value;
  902 +}
802 903 /***********************************************************************//**
803 904 * @brief Extract name / value pair from XML node
804 905 *
... ...