Skip to content

Standalone igtl Client #6

@christiana

Description

@christiana

I have been considering how to extract a full standalone igtl Client from the OpenIGTLinkIF repo, as discussed in Boston (http://wiki.na-mic.org/Wiki/index.php/2016_Winter_Project_Week/Projects/TrackedUltrasoundStandardization).

For testing and possibly for use in applications, we would like the GUI from OpenIGTLink as Slicer-independent code. There should also be possible to reuse more basic parts of the library, either the full Client (no GUI), or only the converter classes. Suggested dependencies below:
igtlclient_uml

All the Slicer-independent code could ultimately be included in the OpenIGTLink repo itself, every module as a conditional build.

The Client itself can be separated from Slicer like shown in the diagram:
igtlclient_uml

The main idea is to remove the inheritance from MRMLNode ( currently Connector, Converterts and Devices all are MRMLNodes), and instead use aggregation, i.e. Slicer will listen to the Client and create MRMLNodes wrapping the igtl devices/connectors as needed. The Converters could be an implementation detail hidden from external users. The Manager would contain much of the code currently present in vtkSlicerOpenIGTLinkIFLogic. A data layer duplicating some of MRML's features would have to be implemented (i.e. the Nodes), but this can be made as simple as possible, with no persistence (for now).

I am very interested in comments to this proposal, in particular:

  • Do this (first) design outlined look sound, what can be improved?
  • Who is interested in the resulting code, and at what level?
  • Can the result eventually be merged back into Slicer? This determines whether or not we should refactor the Slicer binding layer or simply extract the code of interest.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions