private async Task ProcessMessage(RTMPMessage msg, CancellationToken cancel_token)
{
switch (msg.MessageType) {
case RTMPMessageType.SetChunkSize:
await OnSetChunkSize(new SetChunkSizeMessage(msg), cancel_token);
break;
case RTMPMessageType.Abort:
await OnAbort(new AbortMessage(msg), cancel_token);
break;
case RTMPMessageType.Ack:
//Do nothing
break;
case RTMPMessageType.UserControl:
await OnUserControl(new UserControlMessage(msg), cancel_token);
break;
case RTMPMessageType.SetWindowSize:
await OnSetWindowSize(new SetWindowSizeMessage(msg), cancel_token);
break;
case RTMPMessageType.SetPeerBandwidth:
await OnSetPeerBandwidth(new SetPeerBandwidthMessage(msg), cancel_token);
break;
case RTMPMessageType.Audio:
await OnAudio(msg, cancel_token);
break;
case RTMPMessageType.Video:
await OnVideo(msg, cancel_token);
break;
case RTMPMessageType.DataAMF3:
await OnData(new DataAMF3Message(msg), cancel_token);
break;
case RTMPMessageType.DataAMF0:
await OnData(new DataAMF0Message(msg), cancel_token);
break;
case RTMPMessageType.CommandAMF3:
await OnCommand(new CommandAMF3Message(msg), cancel_token);
break;
case RTMPMessageType.CommandAMF0:
await OnCommand(new CommandAMF0Message(msg), cancel_token);
break;
case RTMPMessageType.Aggregate:
await OnAggregate(new AggregateMessage(msg), cancel_token);
break;
case RTMPMessageType.SharedObjectAMF3:
case RTMPMessageType.SharedObjectAMF0:
//TODO:Not implemented
break;
default:
//TODO:Unknown message
break;
}
}