public static void handle(GmqParser parser, GmqMessageHandler[] handlers) { ulong msgID; parser.parseUnsignedInteger(out msgID); GmqMessageHandler handler = find_handler(msgID, handlers); if (handler != null) { handler._delegate(parser, msgID); } else { throw new Exception(); } }
static GmqMessageHandler find_handler(ulong msgID, GmqMessageHandler[] handlers) { // TODO improve GmqMessageHandler defaultHandler = null; for (int i = 0; i != handlers.Length; ++i) { if (msgID == handlers[i].msgID) { return(handlers[i]); } else if (handlers[i].msgID == GmqMessageHandler.DefaultHandler) { defaultHandler = handlers[i]; } } return(defaultHandler); }