public static bool Interpret(IMessage message, IClientService service) { switch (message.Header) { case MessageHeaders.ON_LOGIN_FAILED: service.OnLoginFailed(); break; case MessageHeaders.ON_LOGIN_SUCCEEDED: MessageHelper.ResolveMessage(message, reader => service.OnLoginSucceeded(reader.ReadUserId(), reader.ReadArray((Func<User>)reader.ReadUser))); break; case MessageHeaders.ON_USER_LOGINED: MessageHelper.ResolveMessage(message, reader => service.OnUserLogined(reader.ReadUser())); break; case MessageHeaders.ON_USER_EXITED: MessageHelper.ResolveMessage(message, reader => service.OnUserExited(reader.ReadUserId())); break; case MessageHeaders.ON_MESSAGE_RECEIVED: MessageHelper.ResolveMessage(message, reader => service.OnMessageReceived(reader.ReadUserId(), reader.ReadString())); break; case MessageHeaders.ON_BROADCAST_RECEIVED: MessageHelper.ResolveMessage(message, reader => service.OnBroadcastReceived(reader.ReadUserId(), reader.ReadString())); break; case MessageHeaders.ON_USER_STATE_CHANGED: MessageHelper.ResolveMessage(message, reader => service.OnUserStateChanged(reader.ReadUserId(), reader.ReadUserState())); break; case MessageHeaders.ON_USER_INFO_CHANGED: MessageHelper.ResolveMessage(message, reader => service.OnUserInfoChanged(reader.ReadUserId(), reader.ReadUserState(), reader.ReadString())); break; default: return false; } return true; }