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
    Modifier and Type | Field and Description
    --- | ---
    `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

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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()`