diff --git a/include/GVOApp.hpp b/include/GVOApp.hpp index 52a99fd..e425bb8 100644 --- a/include/GVOApp.hpp +++ b/include/GVOApp.hpp @@ -76,9 +76,9 @@ protected: // Protected data area std::string m_name; //!< Client name - std::string m_id; //!< Id assigned to client by the hub + char m_id[32]; //!< Id assigned to client by the hub std::list registered_calls; //!< Calls for which is registered the application. - + std::list::iterator iterator_calls; }; diff --git a/include/GVOHub.hpp b/include/GVOHub.hpp index 3dd4688..a43747e 100644 --- a/include/GVOHub.hpp +++ b/include/GVOHub.hpp @@ -61,11 +61,7 @@ public: GVOHub* clone(void) const; void start(void); std::string print(const GChatter& chatter = NORMAL) const; - //void connect(void); - //void disconnect(void); - //bool has_hub(void) const; - //bool is_connected(void) const; - //GXml response(void) const; + protected: // Protected methods @@ -74,8 +70,6 @@ protected: void free_members(void); void init_hub(void); void start_hub(void); - //bool find_hub(void); - //void connect_to_hub(void); void register_service(const GXml& xml,const socklen_t& sock); void ping_service(const socklen_t& sock); void unregister(const socklen_t& sock); @@ -86,6 +80,7 @@ protected: void post_string(const std::string& string) const; std::string receive_string(void) const; std::string get_response_value(const GXml& xml, const std::string& name) const; + std::list get_registrations(const GXml& xml, const std::string& name) const; void get_name_value_pair(const GXmlNode* node, std::string& name, std::string& value) const; std::string get_hub_lockfile(void) const; @@ -98,11 +93,8 @@ protected: std::string m_version; //!< The version of the SAMP Standard Profile implemented by the hub std::string m_client_key; //!< Private client key std::string m_hub_id; //!< Hub identifier used by the hub when it sends message itself rather than forwarding from others - //std::string m_client_id; //!< Client identifier int m_socket; //!< Hub socket int m_nb_clients; //!< Number of already registered clients - //std::vector m_client_id; //!< Id assigned to client by the hub. - //std::vector m_client_name; std::list m_connected_apps; //!< list of apps connected to the hub }; diff --git a/registrations.txt b/registrations.txt new file mode 100644 index 0000000..02a6f08 --- /dev/null +++ b/registrations.txt @@ -0,0 +1,493 @@ +GXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.sendGXmlElement::name + GXmlText::samp.hub.event.registerGXmlElement::name + GXmlText::table.select.rowListGXmlElement::name + GXmlText::table.highlight.rowGXmlElement::name + GXmlText::table.load.fitsGXmlElement::name + GXmlText::samp.app.pingGXmlElement::name + GXmlText::coord.pointAt.skyGXmlElement::name + GXmlText::samp.hub.event.shutdownGXmlElement::name + GXmlText::image.load.fitsGXmlElement::name + GXmlText::samp.hub.disconnectGXmlElement::name + GXmlText::table.load.votableGXmlElement::name + GXmlText::samp.hub.event.unregisterGXmlElement::name + GXmlText::script.aladin.send \ No newline at end of file diff --git a/src/vo/GVOApp.cpp b/src/vo/GVOApp.cpp index 6fefe95..5b3ab49 100644 --- a/src/vo/GVOApp.cpp +++ b/src/vo/GVOApp.cpp @@ -182,12 +182,22 @@ std::string GVOApp::print(const GChatter& chatter) const { // Initialise result string std::string result; - + std::list temp; + temp = registered_calls; + // Continue only if chatter is not silent if (chatter != SILENT) { // Append header result.append("=== GVOApp ==="); + result.append(m_id); + result.append("%d",temp.size()); + for (std::list::iterator i = temp.begin(); i != temp.end(); ++i) { + result.append("Method:\n"); + result.append(*i); + } + + } // endif: chatter was not silent @@ -208,7 +218,7 @@ std::string GVOApp::print(const GChatter& chatter) const void GVOApp::init_members(void) { // Initialise members - + std::list registeredMethods; // Return return; } diff --git a/src/vo/GVOHub.cpp b/src/vo/GVOHub.cpp index 6649a15..00afe11 100644 --- a/src/vo/GVOHub.cpp +++ b/src/vo/GVOHub.cpp @@ -35,6 +35,7 @@ #include // close() function #include // getaddrinfo() function #include // socket(), connect() functions +#include #include "GVOHub.hpp" #include "GVOClient.hpp" #include "GException.hpp" @@ -225,16 +226,30 @@ void GVOHub::register_service(const GXml& xml, const socklen_t& sock) // Declare message std::string msg = ""; char buffer[124]; + char privatekey[124]; + int i; + std::list::iterator q; + std::string content; std::string translator = "http://localhost:8001/"; printf("Message composition\n"); GVOApp* new_app = new GVOApp(); - new_app -> m_id = m_nb_clients; + sprintf(new_app -> m_id,"client-key:%d",m_nb_clients); + std::cout<< "Nb. of current applications registered:" << std::endl; + std::cout<< m_connected_apps.size()<< std::endl; m_connected_apps.push_front(new_app); - //m_client_id.push_back(m_nb_clients); + std::cout<< new_app->m_id << std::endl; + std::cout<< "Nb. of current applications registered:" << std::endl; + std::cout<< m_connected_apps.size()<< std::endl; + for( i=0,q=m_connected_apps.begin(); iprint(); + std::cout << content << std::endl; + } printf("Message composition 2 \n"); sprintf(buffer,"samp.self-idclient-id:%d\n",m_nb_clients); + sprintf(privatekey,"samp.private-keyclient-key:%d\n",m_nb_clients); printf(buffer); m_nb_clients ++; @@ -243,7 +258,8 @@ void GVOHub::register_service(const GXml& xml, const socklen_t& sock) msg.append("\n"); msg.append("\t\n"); msg.append("\t\t\n\t\t\t\n\t\t\t\t\n"); - msg.append("samp.private-keyclient-key:" + m_hub_id + "\n"); + //msg.append("samp.private-keyclient-key:" + m_hub_id + "\n"); + msg.append(privatekey); msg.append("samp.hub-idclient-id:" + m_hub_id + "\n"); msg.append(buffer); msg.append("samp.url-translator" + translator + "\n"); @@ -290,12 +306,10 @@ void GVOHub::register_metadata(const GXml& xml,const socklen_t& sock) printf("Client Metadata received\n"); // Search for metadata values to store std::string client_name = get_response_value(xml, "samp.name"); - //std::cout("Client Metadata : \n" + client_name.c_str()); printf("\nClient Metadata : Name %s\n", client_name.c_str()); sprintf(buffer,"Client number: %d\n",m_nb_clients); printf(buffer); fflush(stdout); - //m_client_name.push_back(client_name.c_str()); // Declare message std::string msg = ""; @@ -325,12 +339,44 @@ void GVOHub::register_metadata(const GXml& xml,const socklen_t& sock) ***************************************************************************/ void GVOHub::declare_subscriptions(const GXml& xml,const socklen_t& sock) { + std::list::iterator p; + std::list::iterator q; + int i; + std::ofstream myfile; + std::string content; printf("Declare Subscriptions\n"); - std::string client_subscriptions = get_response_value(xml, "samp.hub.event.subscriptions"); - printf("\nClient subscriptions: %s\n", client_subscriptions.c_str()); - // Declare message + std::list client_subscriptions = get_registrations(xml, "samp.hub.declareSubscriptions"); + + for( i=0,p=client_subscriptions.begin(); ielement("params", 0)->element("param", 0)->element("value", 0); + if (ptr != NULL) { + const GXmlText* text = static_cast((*ptr)[0]); + if (text != NULL) { + method_called = text->text(); + std::cout << "current app calling is:" << std::endl; + std::cout << method_called << std::endl; + } + } + + std::cout<< "Nb. of current applications registered:" << std::endl; + std::cout<< m_connected_apps.size()<< std::endl; + for( i=0,q=m_connected_apps.begin(); iprint(); + std::cout << content << std::endl; + } + std::string msg = ""; - + // Set methodResponse elts msg.append("\n"); msg.append("\n"); @@ -617,15 +663,15 @@ void GVOHub::handle_request(const socklen_t& sock) if (method_called.compare("samp.hub.ping") == 0) { ping_service(sock); } - if (method_called.compare("samp.hub.getMetadata") == 0) { - ping_service(sock); - } if (method_called.compare("samp.hub.declareSubscriptions") == 0) { declare_subscriptions(xml,sock); } if (method_called.compare("samp.hub.getSubscriptions") == 0) { ping_service(sock); } + if (method_called.compare("samp.hub.setXmlrpcCallback") == 0) { + ping_service(sock); + } if (method_called.compare("samp.hub.getRegisteredClients") == 0) { ping_service(sock); } @@ -650,6 +696,9 @@ void GVOHub::handle_request(const socklen_t& sock) if (method_called.compare("samp.hub.reply") == 0) { ping_service(sock); } + if (method_called.compare("samp.hub.getMetadata") == 0) { + ping_service(sock); + } // Return return; } @@ -777,8 +826,8 @@ std::string GVOHub::get_response_value(const GXml& xml, if (node != NULL) { int num = node->elements("member"); for (int i = 0; i < num; ++i) { - std::cout << i << std::endl; - std::cout << *(node->element("member", i)) << std::cout; + /*std::cout << i << std::endl; + std::cout << *(node->element("member", i)) << std::cout;*/ const GXmlNode* member = node->element("member", i); //const GXmlNode* member_name = member->element("name", 0); std::string one_name; @@ -798,7 +847,59 @@ std::string GVOHub::get_response_value(const GXml& xml, // Return value return value; } +/***********************************************************************//** + * @brief Returns value for a SAMP client query parameter + * + * @param[in] xml client query XML document. + * @param[in] name Parameter name. + * @return Parameter value. + * + * Returns value for a SAMP client query parameter. If the specified + * parameter was not found or if the response structure is not compliant, + * an empty string is returned. + ***************************************************************************/ +std::list GVOHub::get_registrations(const GXml& xml, + const std::string& name) const +{ + // Declare value + std::list value; + + // Search for value of specified member + const GXmlNode* node = xml.element("methodCall", 0); + const GXmlNode* subnode; + const GXmlText* subtext; + if (node != NULL) { + node = node->element("params", 0); + if (node != NULL) { + node = node->element("param", 1); + if (node != NULL) { + node = node->element("value", 0); + if (node != NULL) { + node = node->element("struct", 0); + if (node != NULL) { + int num = node->elements("member"); + for (int i = 0; i < num; ++i) { + std::cout << i << std::endl; + std::cout << "Affichage du membre\n"; + std::cout << *(node->element("member", i)) << std::cout; + subnode = node->element("member", i); + subnode = subnode->element("name", 0); + std::cout << "\nsubnode" << std::endl; + std::cout << node->element("member",i)->element("name", 0)->print(NORMAL,0) << std::cout; + value.push_front(node->element("member",i)->element("name", 0)->print(NORMAL,0)); + std::cout << "\nFin Affichage du membre\n"; + } + } + } + + } + + } + } + // Return value + return value; +} /***********************************************************************//** * @brief Extract name / value pair from XML node *