Medical Imaging Interaction Toolkit
2023.12.00
Medical Imaging Interaction Toolkit
|
Interface for all OpenIGTLink Devices. More...
#include <mitkIGTLDevice.h>
Public Types | |
enum | IGTLDeviceState { Setup, Ready, Running } |
Type for state variable. The IGTLDevice is always in one of these states. More... | |
Public Member Functions | |
mitkClassMacroItkParent (IGTLDevice, itk::Object) | |
IGTLDevice (bool ReadFully) | |
virtual bool | OpenConnection ()=0 |
Opens a connection to the device. More... | |
virtual bool | CloseConnection () |
Closes the connection to the device. More... | |
virtual bool | StopCommunication () |
Stops the communication between the two devices. More... | |
bool | StartCommunication () |
Starts the communication between the two devices. More... | |
void | RunCommunication (void(IGTLDevice::*ComFunction)(void), std::mutex &mutex) |
Continuously calls the given function. More... | |
void | SendMessage (mitk::IGTLMessage::Pointer msg) |
Adds the given message to the sending queue. More... | |
IGTLDeviceState | GetState () const |
Returns current object state (Setup, Ready or Running) More... | |
igtl::MessageBase::Pointer | GetNextCommand () |
Returns the oldest message in the command queue. More... | |
igtl::ImageMessage::Pointer | GetNextImage2dMessage () |
Returns the oldest message in the receive queue. More... | |
igtl::ImageMessage::Pointer | GetNextImage3dMessage () |
igtl::TransformMessage::Pointer | GetNextTransformMessage () |
igtl::TrackingDataMessage::Pointer | GetNextTrackingDataMessage () |
igtl::StringMessage::Pointer | GetNextStringMessage () |
igtl::MessageBase::Pointer | GetNextMiscMessage () |
virtual void | SetPortNumber (int _arg) |
Sets the port number of the device. More... | |
virtual int | GetPortNumber () |
Returns the port number of the device. More... | |
virtual void | SetHostname (std::string _arg) |
Sets the ip/hostname of the device. More... | |
virtual std::string | GetHostname () |
Returns the ip/hostname of the device. More... | |
virtual std::string | GetName () const |
Returns the name of this device. More... | |
virtual void | SetName (std::string _arg) |
Sets the name of this device. More... | |
virtual void | SetReadFully (bool _arg) |
Advises this IGTL Device to always block until the whole message is read. More... | |
virtual mitk::IGTLMessageQueue::Pointer | GetMessageQueue () const |
Returns a const reference to the receive queue. More... | |
virtual mitk::IGTLMessageFactory::Pointer | GetMessageFactory () |
Returns the message factory. More... | |
void | ThreadStartSending () |
start method for the sending thread. More... | |
void | ThreadStartReceiving () |
start method for the receiving thread. More... | |
void | ThreadStartConnecting () |
start method for the connection thread. More... | |
virtual bool | TestConnection () |
TestConnection() tries to connect to a IGTL device on the current ip and port. More... | |
bool | SendRTSMessage (const char *type) |
Send RTS message of given type. More... | |
void | EnableNoBufferingMode (mitk::IGTLMessageQueue::Pointer queue, bool enable=true) |
Sets the buffering mode of the given queue. More... | |
void | EnableNoBufferingMode (bool enable=true) |
virtual unsigned int | GetNumberOfConnections ()=0 |
Returns the number of connections of this device. More... | |
virtual bool | GetLogMessages () |
virtual void | SetLogMessages (bool _arg) |
Protected Member Functions | |
unsigned int | SendMessagePrivate (mitk::IGTLMessage::Pointer msg, igtl::Socket::Pointer socket) |
Sends a message. More... | |
virtual void | Receive ()=0 |
Call this method to receive a message. More... | |
unsigned int | ReceivePrivate (igtl::Socket *device) |
Call this method to receive a message from the given device. More... | |
virtual void | Send ()=0 |
Call this method to send a message. The message will be read from the queue. More... | |
virtual void | Connect () |
Call this method to check for other devices that want to connect to this one. More... | |
virtual void | StopCommunicationWithSocket (igtl::Socket *socket)=0 |
Stops the communication with the given socket. More... | |
void | SetState (IGTLDeviceState state) |
change object state More... | |
IGTLDevice () | |
~IGTLDevice () override | |
Protected Attributes | |
IGTLDeviceState | m_State |
std::string | m_Name |
bool | m_StopCommunication |
std::mutex | m_StopCommunicationMutex |
std::mutex | m_SendingFinishedMutex |
std::mutex | m_ReceivingFinishedMutex |
std::mutex | m_ConnectingFinishedMutex |
std::mutex | m_StateMutex |
std::string | m_Hostname |
int | m_PortNumber |
igtl::Socket::Pointer | m_Socket |
mitk::IGTLMessageQueue::Pointer | m_MessageQueue |
mitk::IGTLMessageFactory::Pointer | m_MessageFactory |
bool | m_LogMessages |
Interface for all OpenIGTLink Devices.
Defines the methods that are common for all devices using OpenIGTLink. It can open/close a connection, start/stop a communication and send/receive messages.
It uses message queues to store the incoming and outgoing mails. They are configurable, you can set buffering on and off.
The device is in one of three different states: Setup, Ready or Running. Setup is the initial state. From this state on you can call OpenConnection() and arrive in the Ready state. From the Ready state you call StartCommunication() to arrive in the Running state. Now the device is continuosly checking for new connections, receiving messages and sending messages. This runs in a seperate thread. To stop the communication call StopCommunication() (to arrive in Ready state) or CloseConnection() (to arrive in the Setup state).
Definition at line 62 of file mitkIGTLDevice.h.
Type for state variable. The IGTLDevice is always in one of these states.
Enumerator | |
---|---|
Setup | |
Ready | |
Running |
Definition at line 74 of file mitkIGTLDevice.h.
mitk::IGTLDevice::IGTLDevice | ( | bool | ReadFully | ) |
|
protected |
|
overrideprotected |
|
virtual |
Closes the connection to the device.
This may only be called if there is currently a connection to the device, but device is not running (e.g. object is in Ready state)
Reimplemented in mitk::IGTLServer.
|
protectedvirtual |
Call this method to check for other devices that want to connect to this one.
In case of a client this method is doing nothing. In case of a server it is checking for other devices and if there is one it establishes a connection.
Reimplemented in mitk::IGTLServer.
void mitk::IGTLDevice::EnableNoBufferingMode | ( | bool | enable = true | ) |
void mitk::IGTLDevice::EnableNoBufferingMode | ( | mitk::IGTLMessageQueue::Pointer | queue, |
bool | enable = true |
||
) |
Sets the buffering mode of the given queue.
|
virtual |
Returns the ip/hostname of the device.
|
virtual |
|
virtual |
Returns the message factory.
|
virtual |
Returns a const reference to the receive queue.
|
virtual |
Returns the name of this device.
igtl::MessageBase::Pointer mitk::IGTLDevice::GetNextCommand | ( | ) |
Returns the oldest message in the command queue.
igtl::ImageMessage::Pointer mitk::IGTLDevice::GetNextImage2dMessage | ( | ) |
Returns the oldest message in the receive queue.
igtl::ImageMessage::Pointer mitk::IGTLDevice::GetNextImage3dMessage | ( | ) |
igtl::MessageBase::Pointer mitk::IGTLDevice::GetNextMiscMessage | ( | ) |
igtl::StringMessage::Pointer mitk::IGTLDevice::GetNextStringMessage | ( | ) |
igtl::TrackingDataMessage::Pointer mitk::IGTLDevice::GetNextTrackingDataMessage | ( | ) |
igtl::TransformMessage::Pointer mitk::IGTLDevice::GetNextTransformMessage | ( | ) |
|
pure virtual |
Returns the number of connections of this device.
Implemented in mitk::IGTLServer, and mitk::IGTLClient.
|
virtual |
Returns the port number of the device.
IGTLDeviceState mitk::IGTLDevice::GetState | ( | ) | const |
Returns current object state (Setup, Ready or Running)
mitk::IGTLDevice::mitkClassMacroItkParent | ( | IGTLDevice | , |
itk::Object | |||
) |
|
pure virtual |
Opens a connection to the device.
This may only be called if there is currently no connection to the device. If OpenConnection() is successful, the object will change from Setup state to Ready state.
Implemented in mitk::IGTLServer, and mitk::IGTLClient.
|
protectedpure virtual |
Call this method to receive a message.
The message will be saved in the receive queue.
Implemented in mitk::IGTLServer, and mitk::IGTLClient.
|
protected |
Call this method to receive a message from the given device.
The message will be saved in the receive queue.
device | the socket that connects this device with the other one. |
IGTL_STATUS_OK | a message or a command was received |
IGTL_STATUS_NOT_PRESENT | the socket is not connected anymore |
IGTL_STATUS_TIME_OUT | the socket timed out |
IGTL_STATUS_CHECKSUM_ERROR | the checksum of the received msg was incorrect |
IGTL_STATUS_UNKNOWN_ERROR | an unknown error occurred |
void mitk::IGTLDevice::RunCommunication | ( | void(IGTLDevice::*)(void) | ComFunction, |
std::mutex & | mutex | ||
) |
Continuously calls the given function.
This may only be called if the device is in Running state and only from a seperate thread.
ComFunction | function pointer that specifies the method to be executed |
mutex | the mutex that corresponds to the function pointer |
|
protectedpure virtual |
Call this method to send a message. The message will be read from the queue.
Implemented in mitk::IGTLServer, and mitk::IGTLClient.
void mitk::IGTLDevice::SendMessage | ( | mitk::IGTLMessage::Pointer | msg | ) |
Adds the given message to the sending queue.
This may only be called after the connection to the device has been established with a call to OpenConnection(). Note that the message is not send directly. This method just adds it to the send queue.
msg | The message to be added to the sending queue |
|
protected |
Sends a message.
This may only be called after the connection to the device has been established with a call to OpenConnection(). This method uses the given socket to send the given MessageReceivedEvent
msg | the message to be sent |
socket | the socket used to communicate with the other device |
IGTL_STATUS_OK | the message was sent |
IGTL_STATUS_UNKONWN_ERROR | the message was not sent because an unknown error occurred |
bool mitk::IGTLDevice::SendRTSMessage | ( | const char * | type | ) |
Send RTS message of given type.
|
virtual |
Sets the ip/hostname of the device.
|
virtual |
|
virtual |
Sets the name of this device.
|
virtual |
Sets the port number of the device.
|
virtual |
Advises this IGTL Device to always block until the whole message is read.
|
protected |
change object state
bool mitk::IGTLDevice::StartCommunication | ( | ) |
Starts the communication between the two devices.
This may only be called if the device is in Ready state.
|
virtual |
Stops the communication between the two devices.
This may only be called if the device is in Running state.
|
protectedpure virtual |
Stops the communication with the given socket.
Implemented in mitk::IGTLServer, and mitk::IGTLClient.
|
virtual |
TestConnection() tries to connect to a IGTL device on the current ip and port.
TestConnection() tries to connect to a IGTL server on the current ip and port and returns which device it has found.
mitk::Exception | Throws an exception if there are errors while connecting to the device. |
void mitk::IGTLDevice::ThreadStartConnecting | ( | ) |
start method for the connection thread.
void mitk::IGTLDevice::ThreadStartReceiving | ( | ) |
start method for the receiving thread.
void mitk::IGTLDevice::ThreadStartSending | ( | ) |
start method for the sending thread.
|
protected |
mutex used to make sure that the connect thread is just started once
Definition at line 338 of file mitkIGTLDevice.h.
|
protected |
the hostname or ip of the device
Definition at line 343 of file mitkIGTLDevice.h.
|
protected |
Definition at line 355 of file mitkIGTLDevice.h.
|
protected |
A message factory that provides the New() method for all msg types
Definition at line 353 of file mitkIGTLDevice.h.
|
protected |
The message receive queue
Definition at line 350 of file mitkIGTLDevice.h.
|
protected |
the name of this device
Definition at line 327 of file mitkIGTLDevice.h.
|
protected |
the port number of the device
Definition at line 345 of file mitkIGTLDevice.h.
|
protected |
mutex used to make sure that the receive thread is just started once
Definition at line 336 of file mitkIGTLDevice.h.
|
protected |
mutex used to make sure that the send thread is just started once
Definition at line 334 of file mitkIGTLDevice.h.
|
protected |
the socket used to communicate with other IGTL devices
Definition at line 347 of file mitkIGTLDevice.h.
|
protected |
current object state (Setup, Ready or Running)
Definition at line 325 of file mitkIGTLDevice.h.
|
mutableprotected |
mutex to control access to m_State
Definition at line 340 of file mitkIGTLDevice.h.
|
protected |
signal used to stop the thread
Definition at line 330 of file mitkIGTLDevice.h.
|
protected |
mutex to control access to m_StopCommunication
Definition at line 332 of file mitkIGTLDevice.h.