'''
''' stellt den Erben "Server" und "Client" 2 verschiedene
''' Message-Events zur Verfügung, und ein Event-Raisendes Dispose
'''
Public MustInherit Class ManagedPipe : Implements IDisposable
Public Delegate Sub EventHandlerWithOneArgument(Of T0)(Sender As T0)
'''
''' Zur Ausgabe chat-verwaltungstechnischer Status-Informationen
'''
Public Event StatusMessage As EventHandler(Of DataEventArgs)
''' Zur Ausgabe von Chat-Messages
Public Event RetriveData As EventHandler(Of DataEventArgs)
Public Event Disposed As EventHandlerWithOneArgument(Of ManagedPipe)
Private _IsDisposed As Boolean = False
Protected MustOverride Sub Dispose(disposing As Boolean)
Public MustOverride Sub Send(bytes As Byte())
Public MustOverride Function SendAsnyc(bytes As Byte()) As Task
Protected Sub OnStatusMessage(ByVal e As DataEventArgs)
RaiseEvent StatusMessage(Me, e)
End Sub
Protected Sub OnRetriveData(ByVal e As DataEventArgs)
RaiseEvent RetriveData(Me, e)
End Sub
Public Sub RemoveFrom(Of T As ManagedPipe)(ByVal Coll As ICollection(Of T))
Coll.Remove(DirectCast(Me, T))
End Sub
Public ReadOnly Property IsDisposed() As Boolean
Get
Return _IsDisposed
End Get
End Property
Public Sub AddTo(Of T As ManagedPipe)(ByVal Coll As ICollection(Of T))
Coll.Add(Me)
End Sub
Public Sub Dispose() Implements IDisposable.Dispose
If _IsDisposed Then Return
_IsDisposed = True
Dispose(True) ' rufe die erzwungenen Überschreibungen von Sub Dispose(Boolean)
RaiseEvent Disposed(Me)
GC.SuppressFinalize(Me)
End Sub
End Class