in sdk/clients/protobuf-client/csharp/src/WebPubSubProtobufProtocolHelper.cs [79:122]
public static void WriteMessage(WebPubSubMessage message, IBufferWriter<byte> output)
{
switch (message)
{
case SequenceAckMessage sequenceAck:
new UpstreamMessage { SequenceAckMessage = new UpstreamMessage.Types.SequenceAckMessage { SequenceId = sequenceAck.SequenceId } }.WriteTo(output);
break;
case JoinGroupMessage joinGroupMessage:
var joinGroup = new UpstreamMessage.Types.JoinGroupMessage { Group = joinGroupMessage.Group };
if (joinGroupMessage.AckId.HasValue)
{
joinGroup.AckId = joinGroupMessage.AckId.Value;
}
new UpstreamMessage { JoinGroupMessage = joinGroup}.WriteTo(output);
break;
case LeaveGroupMessage leaveGroupMessage:
var leaveGroup = new UpstreamMessage.Types.LeaveGroupMessage { Group = leaveGroupMessage.Group };
if (leaveGroupMessage.AckId.HasValue)
{
leaveGroup.AckId = leaveGroupMessage.AckId.Value;
}
new UpstreamMessage { LeaveGroupMessage = leaveGroup}.WriteTo(output);
break;
case SendToGroupMessage sendToGroupMessage:
var groupMessage = new UpstreamMessage.Types.SendToGroupMessage { Group = sendToGroupMessage.Group, NoEcho = sendToGroupMessage.NoEcho };
if (sendToGroupMessage.AckId.HasValue)
{
groupMessage.AckId = sendToGroupMessage.AckId.Value;
}
groupMessage.Data = WriteData(sendToGroupMessage.DataType, sendToGroupMessage.Data);
new UpstreamMessage { SendToGroupMessage= groupMessage}.WriteTo(output);
break;
case SendEventMessage sendEventMessage:
var eventMessage = new UpstreamMessage.Types.EventMessage { Event = sendEventMessage.EventName};
if (sendEventMessage.AckId.HasValue)
{
eventMessage.AckId = sendEventMessage.AckId.Value;
}
eventMessage.Data = WriteData(sendEventMessage.DataType, sendEventMessage.Data);
new UpstreamMessage { EventMessage = eventMessage }.WriteTo(output);
break;
}
}