pynetdicom.dul.DULServiceProvider

class pynetdicom.dul.DULServiceProvider(assoc)[source][source]

The DICOM Upper Layer Service Provider.

artim_timer

The ARTIM timer

Type:timer.Timer
association

The DUL’s current Association

Type:association.Association
socket

A wrapped socket.socket object used to communicate with the peer.

Type:transport.AssociationSocket
to_provider_queue

Queue of PDUs from the DUL service user to be processed by the DUL provider

Type:queue.Queue
to_user_queue

Queue of primitives from the DUL service to be processed by the DUL user

Type:queue.Queue
event_queue

List of queued events to be processed by the state machine

Type:queue.Queue
state_machine

The DICOM Upper Layer’s State Machine

Type:fsm.StateMachine
__init__(assoc)[source][source]
Parameters:assoc (association.Association) – The DUL’s parent Association instance.

Methods

__init__(assoc)
param assoc:The DUL’s parent Association instance.
getName()
idle_timer_expired() Checks if the idle timer has expired
isAlive() Return whether the thread is alive.
isDaemon()
is_alive() Return whether the thread is alive.
join([timeout]) Wait until the thread terminates.
kill_dul() Immediately interrupts the thread
peek_next_pdu() Check the next PDU to be processed.
receive_pdu([wait, timeout]) Get the next item to be processed out of the queue of items sent from the DUL service provider to the service user
run() The main threading.Thread run loop.
send_pdu(primitive) Place a primitive in the provider queue to be sent to the peer.
setDaemon(daemonic)
setName(name)
start() Start the thread’s activity.
stop_dul() Interrupts the thread if state is “Sta1”

Attributes

daemon A boolean value indicating whether this thread is a daemon thread.
ident Thread identifier of this thread or None if it has not been started.
name A string used for identification purposes only.
network_timeout Return the network_timeout.
daemon

A boolean value indicating whether this thread is a daemon thread.

This must be set before start() is called, otherwise RuntimeError is raised. Its initial value is inherited from the creating thread; the main thread is not a daemon thread and therefore all threads created in the main thread default to daemon = False.

The entire Python program exits when no alive non-daemon threads are left.

ident

Thread identifier of this thread or None if it has not been started.

This is a nonzero integer. See the get_ident() function. Thread identifiers may be recycled when a thread exits and another thread is created. The identifier is available even after the thread has exited.

idle_timer_expired()[source][source]

Checks if the idle timer has expired

Returns:True if the idle timer has expired, False otherwise.
Return type:bool
isAlive()[source]

Return whether the thread is alive.

This method returns True just before the run() method starts until just after the run() method terminates. The module function enumerate() returns a list of all alive threads.

is_alive()[source]

Return whether the thread is alive.

This method returns True just before the run() method starts until just after the run() method terminates. The module function enumerate() returns a list of all alive threads.

join(timeout=None)[source]

Wait until the thread terminates.

This blocks the calling thread until the thread whose join() method is called terminates – either normally or through an unhandled exception or until the optional timeout occurs.

When the timeout argument is present and not None, it should be a floating point number specifying a timeout for the operation in seconds (or fractions thereof). As join() always returns None, you must call isAlive() after join() to decide whether a timeout happened – if the thread is still alive, the join() call timed out.

When the timeout argument is not present or None, the operation will block until the thread terminates.

A thread can be join()ed many times.

join() raises a RuntimeError if an attempt is made to join the current thread as that would cause a deadlock. It is also an error to join() a thread before it has been started and attempts to do so raises the same exception.

kill_dul()[source][source]

Immediately interrupts the thread

name

A string used for identification purposes only.

It has no semantics. Multiple threads may be given the same name. The initial name is set by the constructor.

network_timeout

Return the network_timeout.

peek_next_pdu()[source][source]

Check the next PDU to be processed.

receive_pdu(wait=False, timeout=None)[source][source]

Get the next item to be processed out of the queue of items sent from the DUL service provider to the service user

Parameters:
  • wait (bool, optional) – If wait is True and timeout is None, blocks until an item is available. If timeout is a positive number, blocks at most timeout seconds. Otherwise returns an item if one is immediately available.
  • timeout (int or None) – See the definition of wait
Returns:

  • queue_item – The next object in the to_user_queue.
  • None – If the queue is empty.

run()[source][source]

The main threading.Thread run loop. Runs constantly, checking the connection for incoming data. When incoming data is received it categorises it and add its to the to_user_queue.

send_pdu(primitive)[source][source]

Place a primitive in the provider queue to be sent to the peer.

Primitives are converted to the corresponding PDU and encoded before sending.

Parameters:- pdu_primitives class (primitive) – A service primitive, one of A_ASSOCIATE, A_RELEASE, A_ABORT, A_P_ABORT or P_DATA.
start()[source]

Start the thread’s activity.

It must be called at most once per thread object. It arranges for the object’s run() method to be invoked in a separate thread of control.

This method will raise a RuntimeError if called more than once on the same thread object.

stop_dul()[source][source]

Interrupts the thread if state is “Sta1”

Returns:True if Sta1, False otherwise
Return type:bool