IMB3.TEventEntry.HandleStreamEvent C# (CSharp) Method

HandleStreamEvent() private method

private HandleStreamEvent ( TEventKind aEventKind, TByteBuffer aPayload ) : void
aEventKind TEventKind
aPayload IMB3.ByteBuffers.TByteBuffer
return void
        private void HandleStreamEvent(TEventKind aEventKind, TByteBuffer aPayload) {
            Int32 streamID;
            string streamName;
            Stream stream;
            switch (aEventKind) {
                case TEventKind.ekStreamHeader:
                    if (OnStreamCreate != null) {
                        aPayload.Read(out streamID);
                        aPayload.Read(out streamName);
                        stream = OnStreamCreate(this, streamName);
                        if (stream != null)
                            FStreamCache.Cache(streamID, stream, streamName);
                    }
                    break;
                case TEventKind.ekStreamBody:
                    aPayload.Read(out streamID);
                    stream = FStreamCache.Find(streamID, out streamName);
                    if (stream != null)
                        stream.Write(aPayload.Buffer, aPayload.ReadCursor, aPayload.ReadAvailable);
                    break;
                case TEventKind.ekStreamTail:
                    aPayload.Read(out streamID);
                    stream = FStreamCache.Find(streamID, out streamName);
                    if (stream != null) {
                        stream.Write(aPayload.Buffer, aPayload.ReadCursor, aPayload.ReadAvailable);
                        if (OnStreamEnd != null)
                            OnStreamEnd(this, ref stream, streamName);
                        stream.Close();
                        FStreamCache.Remove(streamID);
                    }
                    break;
            }
        }