Action #1229

Feature #591: Investigate how GammaLib can be made VO compliant.

Design and implement GVOHub class

Added by Knödlseder Jürgen almost 10 years ago. Updated over 7 years ago.

Status:ClosedStart date:06/19/2014
Priority:UrgentDue date:01/30/2015
Assigned To:Louge Thierry% Done:

100%

Category:-
Target version:-
Duration: 226

Description

The GVOHub class should implement an instance of a VO Hub respecting the SAMP protocol. As GammaLib is a standalone library, the class cannot depend on any library providing VO support. The VO Hub protocols and functions have to be implemented natively. This requires some thinking about how to organize the class, including identification of need for support classes and/or functions.

The GXml class may be used here for example for XML protocol handling (writing and reading/parsing).

Note also that the GUrl base class exists that describes a media independent interface. For the moment, GUrlFile and GUrlString exist for writing information in either a file or a string. Using this class, the client does not need to know into which media it writes or from which media it reads. Maybe it is possible to implement a GUrlSocket class that allows reading or writing over a socket. In that case, the GXml class could be used for XML exchange over sockets.

activity diagram.png - Diagramme minimum d'activités du hub. (16 KB) Louge Thierry, 06/27/2014 04:11 PM

class diagram.png - Diagramme de classe, à étoffer selon les besoins du code (40.2 KB) Louge Thierry, 06/27/2014 04:11 PM

GVOHub.hpp Magnifier (4.06 KB) Louge Thierry, 06/27/2014 04:11 PM

GVOHub.cpp Magnifier (9.91 KB) Louge Thierry, 06/27/2014 04:11 PM

AladinDialogueAvecHub.txt Magnifier (8.34 KB) Louge Thierry, 02/27/2015 10:33 AM

Activity%20diagram Class%20diagram

Recurrence

No recurrence.

History

#1 Updated by Knödlseder Jürgen almost 10 years ago

  • Assigned To set to Louge Thierry

#2 Updated by Knödlseder Jürgen almost 10 years ago

  • Description updated (diff)

#3 Updated by Louge Thierry almost 10 years ago

  • % Done changed from 0 to 10

Premières ébauches de design et de code produites. Pas encore de compilation.

#4 Updated by Louge Thierry almost 10 years ago

Very first design and beginning of coding available. No compilation tried so far.

#5 Updated by Louge Thierry almost 10 years ago

L’inclusion du minimum de code produit dans Gammalib (avec une librairie “style gammalib”, et les spécificités du C++ par rapport au C) est en cours pour une version minimum fonctionnelle (ouverture du hub, contact par un client)

#6 Updated by Louge Thierry almost 10 years ago

  • Status changed from New to In Progress
  • % Done changed from 10 to 20

Compilation de la classe GVOHub ok avec GVOHub.hpp, mais en mode permissif (les int des descripteurs de sockets en c correspondent à un type particulier en C++). Suite des opérations: Créer un fichier de tests sous le répertoire de tests de gammalib pour tester l’ouverture du hub puis implémenter les opérations nécessaires à son fonctionnement.

#7 Updated by Louge Thierry almost 10 years ago

  • % Done changed from 20 to 50

#8 Updated by Brau-Nogué Sylvie almost 10 years ago

  • Priority changed from Normal to High

#9 Updated by Knödlseder Jürgen over 9 years ago

  • Priority changed from High to Urgent

You should now really concentrate on this one so that we can close the action within the next weeks.

#10 Updated by Knödlseder Jürgen over 9 years ago

  • Due date set to 12/31/2014

#11 Updated by Knödlseder Jürgen over 9 years ago

  • Due date changed from 12/31/2014 to 01/30/2015

#12 Updated by Knödlseder Jürgen over 9 years ago

Skeleton finished, different clients have their own socket.

What is now missing is the passing of information between clients following the protocols.

#13 Updated by Knödlseder Jürgen over 9 years ago

Note that the following VO applications have an internal Hub:
  • TOPCAT
  • Alladin
  • VOSpec

It should be checked whether GVOHub is compatible with these Hubs, e.g. if they work the same way. The current GVOClient code leads for example to an exception when trying to connect to the VOSpec Hub. Connection to TOPCAT and Alladin seam to work.

Looks like the VOSpec hub does not work as it replies

HTTP/1.0 200 OK
Content-Length: 475
Content-Type: text/xml

<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
  <fault>
    <value>
      <struct>
        <member>
          <name>faultCode</name>
          <value>
            <int>1</int>
          </value>
        </member>
        <member>
          <name>faultString</name>
          <value>org.astrogrid.samp.xmlrpc.internal.XmlRpcFormatException: Unknown XML-RPC method samp.hub.register</value>
        </member>
      </struct>
    </value>
  </fault>
</methodResponse>

Here is the response from Alladin:

HTTP/1.0 200 OK
Content-Length: 529
Content-Type: text/xml

<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>samp.hub-id</name>
            <value>hub</value>
          </member>
          <member>
            <name>samp.self-id</name>
            <value>c2</value>
          </member>
          <member>
            <name>samp.private-key</name>
            <value>k:2_mmjoxbunxuargmid</value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>

HTTP/1.0 200 OK
Content-Length: 144
Content-Type: text/xml

<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
  <params>
    <param>
      <value></value>
    </param>
  </params>
</methodResponse>

And here from TOPCAT:

HTTP/1.0 200 OK
Content-Length: 529
Content-Type: text/xml

<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
  <params>
    <param>
      <value>
        <struct>
          <member>
            <name>samp.hub-id</name>
            <value>hub</value>
          </member>
          <member>
            <name>samp.self-id</name>
            <value>c2</value>
          </member>
          <member>
            <name>samp.private-key</name>
            <value>k:3_sigvjlgtrvxgupyu</value>
          </member>
        </struct>
      </value>
    </param>
  </params>
</methodResponse>

HTTP/1.0 200 OK
Content-Length: 144
Content-Type: text/xml

<?xml version='1.0' encoding='UTF-8'?>
<methodResponse>
  <params>
    <param>
      <value></value>
    </param>
  </params>
</methodResponse>

#14 Updated by Louge Thierry about 9 years ago

GVOHub is callable, reached by Aladin and Topcat (Aladin dialog with hub provided in file). Current actions are to serve the clients through SAMP protocol implementation, keeping record of registered clients in a list of GVOApp objects, GVOApp being a class for applications registered in the hub.
Different client doesn’t have their own sockets anymore, as SAMP through XML-RPC works in disconnected mode.

#15 Updated by Knödlseder Jürgen almost 9 years ago

  • Status changed from In Progress to Feedback
  • % Done changed from 80 to 100

A version of the GVOHub class is now merged into the devel branch. The functionality of the Hub may not be complete yet, but registration, unregistrating and ping from a client works.

#16 Updated by Knödlseder Jürgen about 8 years ago

  • Precedes deleted (Action #780: Display skymap using Aladdin)

#17 Updated by Knödlseder Jürgen over 7 years ago

  • Status changed from Feedback to Closed

Close this now

Also available in: Atom PDF