private static IMessage PayloadFromProtobuf(this ProtocolExchange protocolExchange) { switch (protocolExchange.MessageCase) { case ProtocolExchange.MessageOneofCase.CreateRoomRequest: return(new Messages.CreateRoomRequest(protocolExchange.CreateRoomRequest.RoomName)); case ProtocolExchange.MessageOneofCase.CreateRoomResponse: return(new Messages.CreateRoomResponse(protocolExchange.CreateRoomResponse.Room.FromProtobuf())); case ProtocolExchange.MessageOneofCase.ListRoomRequest: return(new Messages.ListRoomsRequest()); case ProtocolExchange.MessageOneofCase.ListRoomResponse: return(new Messages.ListRoomsResponse(protocolExchange.ListRoomResponse.Rooms .Select(room => room.FromProtobuf()) .ToList())); case ProtocolExchange.MessageOneofCase.JoinRoomRequest: return(new Messages.JoinRoomRequest(protocolExchange.JoinRoomRequest.RoomId)); case ProtocolExchange.MessageOneofCase.JoinRoomResponse: return(new Messages.JoinRoomResponse(protocolExchange.JoinRoomResponse.Room.FromProtobuf(), protocolExchange.JoinRoomResponse.Messages .Select(message => message.FromProtobuf()) .ToList())); case ProtocolExchange.MessageOneofCase.LeaveRoomRequest: return(new Messages.LeaveRoomRequest(protocolExchange.LeaveRoomRequest.Room.FromProtobuf())); case ProtocolExchange.MessageOneofCase.LeaveRoomResponse: return(new Messages.LeaveRoomResponse(protocolExchange.LeaveRoomResponse.Room.FromProtobuf())); case ProtocolExchange.MessageOneofCase.ChatError: return(new ChatErrorResponse(protocolExchange.ChatError.Message)); default: throw new ArgumentOutOfRangeException(); } }
private static ExchangeMessage FromProtobuf(this ProtocolExchange protocolExchange) { return(new ExchangeMessage(protocolExchange.ExchangeId, protocolExchange.PayloadFromProtobuf())); }