@startuml
class NormOutputStream {
    - _normStream : NormStream?
    - _closed : bool
    - _closeLock : object
    - _bufferIsFull : bool
    + NormOutputStream(address:string, port:int)
    + OpenDebugLog(filename:string) : void
    + CloseDebugLog() : void
    + SetDebugLevel(level:int) : void
    + SetMessageTrace(messageTrace:bool) : void
    + SetMulticastInterface(multicastInterface:string) : void
    + SetEcnSupport(ecnEnable:bool, ignoreLoss:bool) : void
    + SetTtl(ttl:byte) : void
    + SetTos(tos:byte) : void
    + SetCongestionControl(ccEnabled:bool, ccAdjustRate:bool) : void
    + SetTxRateBounds(minTxRate:double, maxTxRate:double) : void
    + TxRate : double <<get>> <<set>>
    + GrttEstimate : double <<get>> <<set>>
    + SetGroupSize(groupSize:long) : void
    + SetAutoParity(autoParity:short) : void
    + SetBackoffFactor(backoffFactor:double) : void
    + SetAutoFlush(flushMode:NormFlushMode) : void
    + SetPushEnable(pushEnable:bool) : void
    + MarkEom() : void
    + AddNormEventListener(normEventListener:INormEventListener) : void
    + RemoveNormEventListener(normEventListener:INormEventListener) : void
    - FireNormEventOccured(normEvent:NormEvent) : void
    + Open(sessionId:int, bufferSpace:long, segmentSize:int, blockSize:short, numParity:short, repairWindow:long) : void
    + <<override>> Close() : void
    + IsClosed : bool <<get>>
    + Write(b:int) : void
    + <<override>> Write(buffer:byte[], offset:int, count:int) : void
    - ProcessEvent() : void
    + <<override>> Flush() : void
    + <<override>> Read(buffer:byte[], offset:int, count:int) : int
    + <<override>> Seek(offset:long, origin:SeekOrigin) : long
    + <<override>> SetLength(value:long) : void
    + <<override>> CanRead : bool <<get>>
    + <<override>> CanSeek : bool <<get>>
    + <<override>> CanWrite : bool <<get>>
    + <<override>> Length : long <<get>>
    + <<override>> Position : long <<get>> <<set>>
}
class "List`1"<T> {
}
Stream <|-- NormOutputStream
NormOutputStream --> "_normInstance" NormInstance
NormOutputStream --> "_normSession" NormSession
NormOutputStream --> "_normEventListeners<INormEventListener>" "List`1"
@enduml
