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