public void sendMessage(ChatUser toUser, String textMessage)
    {
        ChatDialogMessage dialogMessage = new ChatDialogMessage(textMessage, systemController.getUserInfo().userId, -1);
        if (dialogs.ContainsKey(toUser.userId))
        {
            dialogs[toUser.userId].messages.Add(dialogMessage);
        }
        else
        {
            ChatDialogWithUser dialog = new ChatDialogWithUser();
            dialog.withUser = toUser;
            dialog.messages.Add(dialogMessage);
            dialogs.Add(toUser.userId, dialog);
        }

        DataMessage message = new DataMessage(Ids.Services.GAMES, Ids.Actions.SimpleChat.SEND_MESSAGE, systemController.getUserInfo().session);
        message.createWriter()
            .writerInt32(GameId)
            .writerInt32(toUser.userId)
            .writerInt32(myCallback)
            .writerString(textMessage)
            .closeWriter();

        connection.addMessageToSend(message);
    }
    private bool onReceiveMessage(DataMessage message)
    {
        message.createReader();
        int userId = message.readInt32();
        string userMessage = message.readString();
        message.closeReader();

        ChatUser user = getUser(userId);
        if (user == null)
        {
            user = new ChatUser();
            user.setUnknown(userId);
            users.Add(userId, user);
            requestUserInfo(userId);
        }

        ChatDialogMessage dialogMessage = new ChatDialogMessage(userMessage, user.userId, -1);
        if (dialogs.ContainsKey(userId))
        {
            dialogs[userId].messages.Add(dialogMessage);
        }
        else
        {
            ChatDialogWithUser dialog = new ChatDialogWithUser();
            dialog.withUser = user;
            dialog.messages.Add(dialogMessage);
            dialogs.Add(userId, dialog);
        }
        postUpdate(UiUpdates.ReceivedMessage, dialogMessage);
        return false;
    }