/** * @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; }
/** ******************************************************************************* * @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; }