protected virtual void OnReceive(ClusterMessageType type)
{
uint streamId;
string roomName=null;
Variant message;
uint appId;
switch (type)
{
case ClusterMessageType.SharedObjectTrack:
appId = InputBuffer.Reader.Read7BitValue();
var soName = InputBuffer.Reader.ReadString();
var version = InputBuffer.Reader.Read7BitValue();
var isPersistent = InputBuffer.Reader.ReadBoolean();
message = Deserialize();
Logger.INFO("SharedObjectTrack:{0},{1}", appId, soName);
GetRoom(appId).SOManager.Process(this, soName, isPersistent, message);
break;
case ClusterMessageType.BroadCast:
appId = InputBuffer.Reader.Read7BitValue();
message = Deserialize();
Logger.INFO("ReceiveBroadcast from {1}:{0}", message, appId);
GetRoom(appId).Broadcast(this, message);
break;
case ClusterMessageType.Call:
appId = InputBuffer.Reader.Read7BitValue();
var functionName = InputBuffer.Reader.ReadString();
message = Deserialize();
GetRoom(appId).CallFunction(functionName, this, message);
break;
case ClusterMessageType.Audio:
FeedData(true);
break;
case ClusterMessageType.Video:
FeedData(false);
break;
case ClusterMessageType.StopPublish:
streamId = InputBuffer.Reader.Read7BitValue();
Logger.INFO("StopPublish:" + streamId);
if (InStreams.ContainsKey(streamId))
{
InStreams[streamId].Dispose();
InStreams.Remove(streamId);
}
break;
case ClusterMessageType.StreamMessage:
streamId = InputBuffer.Reader.Read7BitValue();
var length = (int)InputBuffer.Reader.Read7BitValue();
var buffer = new byte[length];
InputBuffer.Reader.Read(buffer, 0, length);
//message = Deserialize();
if (InStreams.ContainsKey(streamId))
{
InStreams[streamId].SendStreamMessage(new BufferWithOffset(buffer));
}
break;
case ClusterMessageType.Unknow:
Logger.WARN("Unknow Type!");
break;
default:
Logger.WARN("Unknow Type :"+type);
break;
}
}