public static IPCMessage.IIPCMessage FromRawIPCMessage(RawIPCMessage rawmsg) { IPCMessage.IIPCMessage ret; switch (rawmsg.MessageName) { case "Chat": ret = new IPCMessage.ChatIPCMessage(); break; case "ChannelList": ret = new IPCMessage.ChannelListIPCMessage(); break; case "ChannelSelect": ret = new IPCMessage.ChannelSelectIPCMessage(); break; case "CurrentChannel": ret = new IPCMessage.CurrentChannelIPCMessage(); break; case "Time": ret = new IPCMessage.TimeIPCMessage(); break; case "Close": ret = new IPCMessage.CloseIPCMessage(); break; case "SetChatOpacity": ret = new IPCMessage.SetChatOpacityIPCMessage(); break; case "Command": ret = new IPCMessage.CommandIPCMessage(); break; default: throw new IPCMessage.IPCMessageDecodeException("不明なMessageNameです: " + rawmsg.ToString()); } ret.Decode(rawmsg.Contents); return(ret); }
private async void collectServiceModule_NewChatProduced(IEnumerable <Chat> newChats) { foreach (Chat chat in newChats) { applyChatModRule(chat); if (ChatPreserveCount.Value > 0) { while (chats.Count >= ChatPreserveCount.Value) { chats.RemoveAt(0); } } chats.Add(chat); if (!chat.Ng) { IPC.IPCMessage.ChatIPCMessage msg = new IPC.IPCMessage.ChatIPCMessage { Chat = chat }; await ipc.Send(msg); } } }