Class AssociationOutputStream

java.lang.Object
java.io.OutputStream
com.pixelmed.network.AssociationOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class AssociationOutputStream extends OutputStream

A specialized java.io.OutputStream which buffers and fragments data which is written to it into PDUs and sends them over the supplied OutputStream which is (presumably) that of the java.net.Socket of an established Association.

This stream buffers data that is written to it and when it is either flushed or closed or reaches the specified maximum PDU size, writes data (not command) PDU's to the supplied output stream.

Need to take care with "last fragment" flag ... that cannot be set until close() is called, and if the buffer is empty at that time, a zero length PDU will be sent.

  • Constructor Summary

    Constructors
    Constructor
    Description
    AssociationOutputStream(OutputStream out, int maxPDUSize, int presentationContextID)
    Construct a PDU buffering OutputStream on top of another OutputStream
    AssociationOutputStream(OutputStream out, int maxPDUSize, int presentationContextID, int debugLevel)
    Construct a PDU buffering OutputStream on top of another OutputStream
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Sets the last fragment flag and flushes (which sends a zero length PDU if necessary, and pads to an even length, if necessary).
    void
    Do nothing.
    void
    write(byte[] b)
    Buffer the supplied data, flushing (actually sending) PDUs when the buffer is filled.
    void
    write(byte[] b, int off, int len)
    Buffer the supplied data, flushing (actually sending) PDUs when the buffer is filled.
    void
    write(int i)
    Buffer the supplied data, flushing (actually sending) PDUs when the buffer is filled.

    Methods inherited from class java.io.OutputStream

    nullOutputStream

    Methods inherited from class java.lang.Object

    clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AssociationOutputStream

      public AssociationOutputStream(OutputStream out, int maxPDUSize, int presentationContextID, int debugLevel) throws DicomNetworkException
      Construct a PDU buffering OutputStream on top of another OutputStream
      Parameters:
      out - where to send the buffered output
      maxPDUSize - how large to make the buffer (i.e. the PDU) size
      presentationContextID - included in the header of each PDU
      debugLevel - ignored
      Throws:
      DicomNetworkException
    • AssociationOutputStream

      public AssociationOutputStream(OutputStream out, int maxPDUSize, int presentationContextID) throws DicomNetworkException
      Construct a PDU buffering OutputStream on top of another OutputStream
      Parameters:
      out - where to send the buffered output
      maxPDUSize - how large to make the buffer (i.e. the PDU) size
      presentationContextID - included in the header of each PDU
      Throws:
      DicomNetworkException
  • Method Details

    • write

      public void write(int i) throws IOException
      Buffer the supplied data, flushing (actually sending) PDUs when the buffer is filled.
      Specified by:
      write in class OutputStream
      Parameters:
      i -
      Throws:
      IOException
    • write

      public void write(byte[] b) throws IOException
      Buffer the supplied data, flushing (actually sending) PDUs when the buffer is filled.
      Overrides:
      write in class OutputStream
      Parameters:
      b -
      Throws:
      IOException
    • write

      public void write(byte[] b, int off, int len) throws IOException
      Buffer the supplied data, flushing (actually sending) PDUs when the buffer is filled.
      Overrides:
      write in class OutputStream
      Parameters:
      b -
      off -
      len -
      Throws:
      IOException
    • close

      public void close() throws IOException
      Sets the last fragment flag and flushes (which sends a zero length PDU if necessary, and pads to an even length, if necessary). Does NOT actually close the underlying stream, since that may well be used for other operations later.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream
      Throws:
      IOException
    • flush

      public void flush() throws IOException
      Do nothing.
      Specified by:
      flush in interface Flushable
      Overrides:
      flush in class OutputStream
      Throws:
      IOException