com.pixelmed.network

## Class CompositeResponseHandler

- java.lang.Object
- - com.pixelmed.network.ReceivedDataHandler
  - - com.pixelmed.network.CompositeResponseHandler

Direct Known Subclasses:
  MoveSOPClassSCU.CMoveResponseHandler, StorageSOPClassSCU.CStoreResponseHandler, VerificationSOPClassSCU.CEchoResponseHandler

    public abstract class CompositeResponseHandler
    extends ReceivedDataHandler

This abstract class provides a mechanism to process each PDU of a composite response as it is received, such as for evaluating the status of the response for success.

Typically a private sub-class would be declared and instantiated with overriding methods to evaluate the success or failure of a storage or query or retrieve response.

See Also:
  `ReceivedDataHandler`, `StorageSOPClassSCU`, `FindSOPClassSCU`

### Field Summary

Fields
`protected boolean` `allowData`
`protected byte[]` `commandReceived`
`protected byte[]` `dataReceived`
`protected int` `status`
`protected boolean` `success`

### Fields inherited from class com.pixelmed.network.ReceivedDataHandler

`debugLevel, done, release`

### Constructor Summary

Constructors
Constructor and Description
`CompositeResponseHandler(int debugLevel)` Construct a handler to process each PDU of a composite response as it is received, evaluating the status of the response for success.

### Method Summary

Methods
`static java.lang.String` `dumpAttributeListFromCommandOrData(byte[] bytes, java.lang.String transferSyntaxUID)` Extract an `AttributeList` from the concatenated bytes that have been assembled from one or more PDUs and which make up an entire Command or Dataset.
`protected abstract void` `evaluateStatusAndSetSuccess(AttributeList list)` Extract the status information from a composite response and set the status flag accordingly.
`static AttributeList` `getAttributeListFromCommandOrData(byte[] bytes, java.lang.String transferSyntaxUID, int debugLevel)` Extract an `AttributeList` from the concatenated bytes that have been assembled from one or more PDUs and which make up an entire Command or Dataset.
`int` `getStatus()` Get the response status Valid only after first calling `evaluateStatusAndSetSuccess()`
`protected void` `makeUseOfDataSet(AttributeList list)` Ignore any data set in the composite response (unless this method is overridden).
`void` `sendPDataIndication(PDataPDU pdata, Association association)` The code handling the reception of data on an `Association` calls this method to indicate that a PDU has been received (a P-DATA-INDICATION).
`boolean` `wasSuccessful()` Does the response include an indication of success ?

### Methods inherited from class com.pixelmed.network.ReceivedDataHandler

`dumpPDVList, isDone, isToBeReleased, setDone, setRelease`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### commandReceived

    protected byte[] commandReceived

#### dataReceived

    protected byte[] dataReceived

#### success

    protected boolean success

#### allowData

    protected boolean allowData

#### status

    protected int status

### Constructor Detail

#### CompositeResponseHandler

    public CompositeResponseHandler(int debugLevel)

Construct a handler to process each PDU of a composite response as it is received, evaluating the status of the response for success.

Parameters:
  `debugLevel` - 0 for no debugging, > 0 for increasingly verbose debugging

### Method Detail

#### getAttributeListFromCommandOrData

    public static AttributeList getAttributeListFromCommandOrData(byte[] bytes,
                                                  java.lang.String transferSyntaxUID,
                                                  int debugLevel)
                                                           throws DicomNetworkException,
                                                                  DicomException,
                                                                  java.io.IOException

Extract an `AttributeList` from the concatenated bytes that have been assembled from one or more PDUs and which make up an entire Command or Dataset.

Parameters:
  `bytes` - the concatenated PDU bytes up to and including the last fragment
  `transferSyntaxUID` - the Transfer Syntax to use to interpret the bytes
  `debugLevel` - integer debug level
Throws:
  `java.io.IOException`
  `DicomException`
  `DicomNetworkException`

#### dumpAttributeListFromCommandOrData

    public static java.lang.String dumpAttributeListFromCommandOrData(byte[] bytes,
                                                      java.lang.String transferSyntaxUID)
                                                               throws DicomNetworkException,
                                                                      DicomException,
                                                                      java.io.IOException

Extract an `AttributeList` from the concatenated bytes that have been assembled from one or more PDUs and which make up an entire Command or Dataset.

Parameters:
  `bytes` - the concatenated PDU bytes up to and including the last fragment
  `transferSyntaxUID` - the Transfer Syntax to use to interpret the bytes
Throws:
  `java.io.IOException`
  `DicomException`
  `DicomNetworkException`

#### sendPDataIndication

    public void sendPDataIndication(PDataPDU pdata,
                           Association association)
                             throws DicomNetworkException,
                                    DicomException,
                                    java.io.IOException

The code handling the reception of data on an `Association` calls this method to indicate that a PDU has been received (a P-DATA-INDICATION).

Specified by:
  `sendPDataIndication` in class `ReceivedDataHandler`
Parameters:
  `pdata` - the PDU that was received
  `association` - the association on which the PDU was received
Throws:
  `java.io.IOException`
  `DicomException`
  `DicomNetworkException`

#### evaluateStatusAndSetSuccess

    protected abstract void evaluateStatusAndSetSuccess(AttributeList list)

Extract the status information from a composite response and set the status flag accordingly.

Parameters:
  `list` - the list of Attributes extracted from the bytes of the PDU(s)

#### makeUseOfDataSet

    protected void makeUseOfDataSet(AttributeList list)

Ignore any data set in the composite response (unless this method is overridden).

Parameters:
  `list` - the list of Attributes extracted from the bytes of the PDU(s)

#### wasSuccessful

    public boolean wasSuccessful()

Does the response include an indication of success ?

#### getStatus

    public int getStatus()

Get the response status Valid only after first calling `evaluateStatusAndSetSuccess()`