1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace SocketIOClient.Messages
- {
- public static class MessageFactory
- {
- private static IMessage CreateMessage(MessageType type)
- {
- switch (type)
- {
- case MessageType.Opened:
- return new OpenedMessage();
- case MessageType.Ping:
- return new PingMessage();
- case MessageType.Pong:
- return new PongMessage();
- case MessageType.Connected:
- return new ConnectedMessage();
- case MessageType.Disconnected:
- return new DisconnectedMessage();
- case MessageType.EventMessage:
- return new EventMessage();
- case MessageType.AckMessage:
- return new ClientAckMessage();
- case MessageType.ErrorMessage:
- return new ErrorMessage();
- case MessageType.BinaryMessage:
- return new BinaryMessage();
- case MessageType.BinaryAckMessage:
- return new ClientBinaryAckMessage();
- }
- return null;
- }
- public static IMessage CreateMessage(int eio, string msg)
- {
- var enums = Enum.GetValues(typeof(MessageType));
- foreach (MessageType item in enums)
- {
- string prefix = ((int)item).ToString();
- if (msg.StartsWith(prefix))
- {
- IMessage result = CreateMessage(item);
- if (result != null)
- {
- result.Eio = eio;
- result.Read(msg.Substring(prefix.Length));
- return result;
- }
- }
- }
- return null;
- }
- public static OpenedMessage CreateOpenedMessage(string msg)
- {
- var openedMessage = new OpenedMessage();
- if (msg[0] == '0')
- {
- openedMessage.Eio = 4;
- openedMessage.Read(msg.Substring(1));
- }
- else
- {
- openedMessage.Eio = 3;
- int index = msg.IndexOf(':');
- openedMessage.Read(msg.Substring(index + 2));
- }
- return openedMessage;
- }
- }
- }
|