CSharpRTMP.Core.Protocols.Rtmp.SOManager.ProcessSharedObjectPrimitive C# (CSharp) Method

ProcessSharedObjectPrimitive() private method

private ProcessSharedObjectPrimitive ( BaseRTMPProtocol pFrom, SO pSO, string name, Variant request, int primitiveId ) : bool
pFrom BaseRTMPProtocol
pSO SO
name string
request Variant
primitiveId int
return bool
        private bool ProcessSharedObjectPrimitive(BaseRTMPProtocol pFrom, SO pSO, string name, Variant request,
            int primitiveId)
        {
            var primitive = request[Defines.RM_SHAREDOBJECT,Defines.RM_SHAREDOBJECT_PRIMITIVES][ primitiveId];
            switch ((byte)primitive[Defines.RM_SHAREDOBJECTPRIMITIVE_TYPE])
            {
                case Defines.SOT_CS_CONNECT:
                    pSO.RegisterProtocol(pFrom);
                    return true;
                case Defines.SOT_CS_DISCONNECT:
                    UnRegisterProtocol(pFrom);
                    return true;
                case Defines.SOT_CSC_DELETE_DATA:
                    pSO.UnSet(primitive[Defines.RM_SHAREDOBJECTPRIMITIVE_PAYLOAD],pFrom);
                    return true;
                case Defines.SOT_CS_SET_ATTRIBUTE:
                    if (pSO == null)
                    {
                        Logger.FATAL("SO is null");
                        return false;
                    }
                    foreach (KeyValuePair<string,Variant> item in primitive [Defines.RM_SHAREDOBJECTPRIMITIVE_PAYLOAD])
                    {
                        pSO.Set(item.Key, item.Value.Clone(), pFrom);
                    }
                    return true;
                case Defines.SOT_BW_SEND_MESSAGE:
                    pSO?.Send(primitive, pFrom);
                    return true;
                default:
                    Logger.FATAL("SO primitive not allowed here");
                    return false;
            }
        }