Пример #1
0
void
SocketIMEngineGlobal::init_transaction (Transaction &trans)
{
    trans.clear ();
    trans.put_command (SCIM_TRANS_CMD_REQUEST);
    trans.put_data (m_socket_magic_key);
}
Пример #2
0
    bool prepare                (int icid)
    {
        if (!m_socket.is_connected ()) return false;

        int cmd;
        uint32 data;

        if (m_send_refcount <= 0) {
            m_current_icid = icid;
            m_send_trans.clear ();
            m_send_trans.put_command (SCIM_TRANS_CMD_REQUEST);
            m_send_trans.put_data (m_socket_magic_key);
            m_send_trans.put_data ((uint32) icid);

            m_send_trans.get_command (cmd);
            m_send_trans.get_data (data);
            m_send_trans.get_data (data);
            m_send_refcount = 0;
        }

        if (m_current_icid == icid) {
            m_send_refcount ++;
            return true;
        }
        return false;
    }
Пример #3
0
static Eina_Bool ecore_ise_input_handler (void *data, Ecore_Fd_Handler *fd_handler)
{
    int cmd;
    int timeout = 0;
    Transaction trans;

    if (fd_handler == NULL)
        return ECORE_CALLBACK_RENEW;

    int fd = ecore_main_fd_handler_fd_get (fd_handler);
    if (_imcontrol_client.is_connected () &&
        isf_socket_wait_for_data_internal (fd, timeout) > 0) {
        trans.clear ();
        if (!trans.read_from_socket (fd, timeout)) {
            IMFCONTROLERR ("%s:: read_from_socket() may be timeout \n", __FUNCTION__);
            _isf_imf_control_finalize ();
            return ECORE_CALLBACK_CANCEL;
        }

        if (trans.get_command (cmd) && cmd == SCIM_TRANS_CMD_REQUEST) {
            while (trans.get_command (cmd)) {
                ecore_ise_process_data (trans, cmd);
            }
        }
        return ECORE_CALLBACK_RENEW;
    }
    IMFCONTROLERR ("ecore_ise_input_handler is failed!!!\n");
    _isf_imf_control_finalize ();
    return ECORE_CALLBACK_CANCEL;
}
Пример #4
0
void get_helper_list (const Socket &client)
{
    HelperRepository::iterator it = __helpers.begin ();

    __send_trans.clear ();
    __send_trans.put_command (SCIM_TRANS_CMD_REPLY);
    __send_trans.put_data ((uint32)__helpers.size ());

    for (; it != __helpers.end (); ++it) {
        __send_trans.put_data (it->first.uuid);
        __send_trans.put_data (it->first.name);
        __send_trans.put_data (it->first.icon);
        __send_trans.put_data (it->first.description);
        __send_trans.put_data (it->first.option);
    }

    __send_trans.write_to_socket (client);
}