1.2.0#
Fixes#
Fixed
network_timeoutnot working when acting as the association requestor and an A-ABORT not being sent when the timeout expired. (#286)Fixed changing
network_timeoutvalue not propagating to the actual timer.All DIMSE service requests should now properly abort the association if no response is received within the DIMSE timeout window and return/yield expected values. (#119)
Any outgoing primitives are now sent to the peer before incoming PDUs are processed (#120)
Fixed not setting requestor presentation context roles to False when only one role is specified during Role Selection negotiation. (#293)
Enhancements#
Added
_configmodule and the ability to skip the dataset decoding step in C-STORE operations by setting_config.DECODE_STORE_DATASETSto False (#282)Consolidated and improved the robustness of the transport related code (#42):
Added
transportmoduleAdded
AssociationSocketclass that wraps a clientsocket.socketto provide integration with the Association state machine. In particular all receive and send operations should emit state machine event ‘Evt17’ when the connection is closed. (#204)Added
AssociationServer, andThreadedAssociationServerclasses to provide association acceptor services.fsm.AE_1is now properly implemented and state machine event ‘Evt2’ is now emitted in a non-trivial manner.Added
AE.start_server()which allows operation in both blocking and non-blocking modes.Added
AE.shutdown()which allows the user to shutdown all non-blocking association servers that may be running.Support for TLS added via the
tls_argskeyword parameter forAE.associate()andssl_contextkeyword parameter forAE.start_server()(#175, #71)It should now be possible to both request a C-MOVE operation and act as the destination for the request’s C-STORE sub-operations over a new association within the same AE instance by running a non-blocking Storage SCP. (#5, #181)
Received P-DATA primitives are now processed when received rather than when processing is requested.
Added
DIMSEServiceProvider.get_msg(),DIMSEServiceProvider.receive_primitive(),DIMSEServiceProvider.peek_msg()andDIMSEServiceProvider.msg_queueto be used with the new P-DATA processing.Time required to start an association improved significantly.
Implemented C-CANCEL support
Added
ServiceClass.is_cancelled()method to allow checking whether a C-CANCEL message corresponding to a message ID value has been received.Added ‘cancelled’ key to the
infoparameter passed toAE.on_c_get(),AE.on_c_find()andAE.on_c_move(). The corresponding value is a callable function (is_cancelled()) that takes a Message ID value and returns True if a C-CANCEL message with a corresponding Message ID Being Responded To value has been received.
Added thread names (
threadtype@timestamp).Added
build_role()to simplify creating SCP/SCU Role Selection Negotiation items.
Changes#
AE.quit(),DIMSEMessage.ID,ACSE.is_released()andACSE.release_association()removed as per planned deprecation.AE.start()is deprecated and will be removed in v1.3, useAE.start_server()instead.AE.stop()is deprecated and will be removed in v1.3, useAE.shutdown()instead.The
AE.portproperty andportargument forAE()are deprecated and will be removed in v1.3. Use theaddressparameter forAE.start_server()and thebind_addresskeyword parameter forAE.associate()instead.The
AE.local_socketattribute is deprecated and will be removed in v1.3.The
AE.addressattribute is deprecated and will be removed in v1.3.The
AE.bind_addrattribute is deprecated and will be removed in v1.3. Use theaddressparameter forAE.start_server()and thebind_addresskeyword parameter forAE.associate()instead.Changed the default DIMSE timeout to 30 s.
Changed the default number of maximum associations to 10.
The
acse_timeoutparameter toACSE()andACSE.acse_timeoutattribute removed, theAssociation.acse_timeoutvalue is used instead.AE.active_associationschanged from an attribute to a property and returns a list of all the AE’s active Association threads.AE.associate()is now synchronous until association negotiation has completed or the connection closed (#108).Removed
DIMSEServiceProvider.receive_msg().Association.send_c_cancel_get(),send_c_cancel_find()andsend_c_cancel_move()are deprecated and will be removed in v1.3. UseAssociation.send_c_cancel()instead.Removed
AE.on_c_get_cancel(),AE.on_c_find_cancel(),AE.on_c_move_cancel().