@startuml
class NormInputStream {
    - _normStream : NormStream?
    - _closed : bool
    - _closeLock : object
    - _bufferIsEmpty : bool
    - _receivedEof : bool
    + NormInputStream(address:string, port:int)
    + OpenDebugLog(fileName:string) : void
    + CloseDebugLog() : void
    + NormSetDebugLevel(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
    + setSilentReceiver(silent:bool, maxDelay:int) : void
    + SetDefaultUnicastNack(defaultUnicastNack:bool) : void
    + SeekMsgStart() : void
    + AddNormEventListener(normEventListener:INormEventListener) : void
    + RemoveNormEventListener(normEventListener:INormEventListener) : void
    - FireNormEventOccured(normEvent:NormEvent) : void
    + Open(bufferSpace:long) : void
    + <<override>> Close() : void
    + IsClosed : bool <<get>>
    + Read() : int
    + <<override>> Read(buffer:byte[], offset:int, count:int) : int
    - ProcessEvent() : void
    + <<override>> Flush() : void
    + <<override>> Write(buffer:byte[], offset:int, count:int) : void
    + <<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 <|-- NormInputStream
NormInputStream --> "_normInstance" NormInstance
NormInputStream --> "_normSession" NormSession
NormInputStream --> "_normEventListeners<INormEventListener>" "List`1"
@enduml
