CSharpRTMP.Core.Protocols.Cluster.OutboundClusterProtocol.OnReceive C# (CSharp) Method

OnReceive() protected method

protected OnReceive ( ClusterMessageType type ) : void
type ClusterMessageType
return void
        protected override void OnReceive(ClusterMessageType type)
        {
            switch (type)
            {
                case ClusterMessageType.Publish:
                    var appId = InputBuffer.Reader.Read7BitValue();
                    var streamName = InputBuffer.Reader.ReadString();
                    Logger.INFO(appId + ":Publish:" + streamName);
                    var streamType = InputBuffer.Reader.ReadUInt64();
                    var streamId = InputBuffer.Reader.Read7BitValue();
                    var chunkSize = InputBuffer.Reader.Read7BitValue();
                    var publishType = InputBuffer.Reader.ReadString();
                    var streamManager = GetRoom(appId).StreamsManager;
                    var getWaitings = streamManager.GetWaitingSubscribers(streamName, streamType).ToArray();
                    if (getWaitings.Length>0)
                    {
                        var inStream = new InClusterStream(appId, this, streamName, streamType, chunkSize);
                        InStreams[streamId] = inStream;
                        foreach (var pBaseOutStream in getWaitings)
                        {
                            pBaseOutStream.Link(inStream);
                        }
                    }
                    else
                    {
                        if (publishType == "append" || publishType == "record")
                        {
                            var inStream = new InClusterStream(appId, this, streamName, streamType, chunkSize);
                            InStreams[streamId] = inStream;
                            streamManager.CreateOutFileStream(this, inStream, publishType == "append");
                        }
                        else
                            Send(ClusterMessageType.NoSubscriber, o =>
                            {
                                o.Write7BitValue(appId);
                                o.Write(streamName);
                            });
                    }
                    break;
                default:
                    base.OnReceive(type);
                    break;
            }
        }
OutboundClusterProtocol