Утром кодил и захотел с кем-нибудь поделиться кодом для обработки входящих сообщений. Обратите внимание на маленькие функции — каждая делает ровно одно.
Обработчики хранятся в мапе, ключ к ним определяется в messageType(), и всё это объединяется в processMessage()