CSharpRTMP.Core.Protocols.Rtmp.BaseRTMPAppProtocolHandler.SendRTMPMessage C# (CSharp) Method

SendRTMPMessage() protected method

protected SendRTMPMessage ( BaseRTMPProtocol pTo, AmfMessage message, bool trackResponse = false, bool recycleMessageBody = true ) : bool
pTo BaseRTMPProtocol
message AmfMessage
trackResponse bool
recycleMessageBody bool
return bool
        protected bool SendRTMPMessage(BaseRTMPProtocol pTo,  AmfMessage message, bool trackResponse = false, bool recycleMessageBody = true)
        {
            switch (message.MessageType)
            {
                case Defines.RM_HEADER_MESSAGETYPE_INVOKE:
                    if (message.InvokeFunction != Defines.RM_INVOKE_FUNCTION_RESULT)
                    {
                        if (!_nextInvokeId.ContainsKey(pTo.Id))
                        {
                            Logger.FATAL("Unable to get next invoke ID");
                            return false;
                        }
                        if (trackResponse)
                        {
                            uint invokeId = _nextInvokeId[pTo.Id];
                            _nextInvokeId[pTo.Id] = invokeId + 1;
                            message.InvokeId = invokeId;
                            if (!_resultMessageTracking.ContainsKey(pTo.Id))
                                _resultMessageTracking[pTo.Id] = new Dictionary<uint, AmfMessage>();
                            //do not store stupid useless amount of data needed by onbwcheck
                            if (message.InvokeFunction == Defines.RM_INVOKE_FUNCTION_ONBWCHECK)
                                _resultMessageTracking[pTo.Id][invokeId] = _onBWCheckStrippedMessage;
                            else
                                _resultMessageTracking[pTo.Id][invokeId] = message;
                            recycleMessageBody = false;
                        }
                        else
                        {
                             message.InvokeId = 0;
                        }
                        //return pTo.SendMessage(message,true);
                    }
                    return pTo.SendMessage( message, true, recycleMessageBody);
                case Defines.RM_HEADER_MESSAGETYPE_FLEXSTREAMSEND:
                case Defines.RM_HEADER_MESSAGETYPE_WINACKSIZE:
                case Defines.RM_HEADER_MESSAGETYPE_PEERBW:
                case Defines.RM_HEADER_MESSAGETYPE_USRCTRL:
                case Defines.RM_HEADER_MESSAGETYPE_ABORTMESSAGE:
                    return pTo.SendMessage( message, true, recycleMessageBody);
                default:
                    Logger.FATAL("Unable to send message:\n{0}", message.ToString());
                    return false;
            }
        }