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);
}
}