Пример #1
0
/** 
* @brief Get the unique serial of this message.  Do not confuse with
* LSMessageGetResponseToken().
* 
* @param  message 
* 
* @retval
*/
LSMessageToken
LSMessageGetToken(LSMessage *message)
{
    _LSErrorIfFail(NULL != message, NULL);

    LSMessageToken serial = _LSTransportMessageGetToken(message->transport_msg);
    return serial;
}
Пример #2
0
/**
 *******************************************************************************
 * @brief Save a serial (token) in the queue and map.
 *
 * @attention locks the serial lock
 *
 * @param  serial_info  IN  serial info
 * @param  serial       IN  message serial (token) to save
 * @param  lserror      OUT set on error
 *
 * @retval  true on success
 * @retval  false on failure
 *******************************************************************************
 */
bool
_LSTransportSerialSave(_LSTransportSerial *serial_info, _LSTransportMessage *message, LSError *lserror)
{
    LSMessageToken serial = _LSTransportMessageGetToken(message);
    _LSTransportSerialListItem *item = _LSTransportSerialListItemNew(serial, message);

    SERIAL_INFO_LOCK(&serial_info->lock);

    g_queue_push_tail(serial_info->queue, item);
    GList *list = g_queue_peek_tail_link(serial_info->queue);

    LS_ASSERT(list != NULL);

    _LSTransportSerialMapEntry *map_entry = _LSTransportSerialMapEntryNew(serial, list);

    LS_ASSERT(NULL == g_hash_table_lookup(serial_info->map, &map_entry->serial));

    g_hash_table_insert(serial_info->map, &map_entry->serial, map_entry);

    SERIAL_INFO_UNLOCK(&serial_info->lock);

    return true;
}