mirror of
https://github.com/google/pebble.git
synced 2025-05-28 22:13:13 +00:00
59 lines
2.8 KiB
C
59 lines
2.8 KiB
C
/*
|
|
* Copyright 2024 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stddef.h>
|
|
#include <stdint.h>
|
|
|
|
typedef struct AppInboxConsumerInfo AppInboxConsumerInfo;
|
|
|
|
//! @param data Pointer to the available data.
|
|
//! @param length The length of the available data.
|
|
//! @param consumer_info Opaque context object to be passed into app_inbox_consume(). It is NOT
|
|
//! mandatory for the handler to call app_inbox_consume().
|
|
typedef void (*AppInboxMessageHandler)(const uint8_t *data, size_t length,
|
|
AppInboxConsumerInfo *consumer_info);
|
|
|
|
typedef void (*AppInboxDroppedHandler)(uint32_t num_dropped_messages);
|
|
|
|
//! Opaque reference to an app inbox.
|
|
typedef struct AppInbox AppInbox;
|
|
|
|
//! @param min_num_messages The minimum number of messages that the inbox should be able to hold
|
|
//! if the total payload size is exactly buffer_size. This is used to calculate how much additional
|
|
//! buffer space has to be allocated for message header overhead.
|
|
//! @param message_handler The callback that will handle received messages (required).
|
|
//! @param dropped_handler The callback that will handle dropped messages (optional, use NULL if
|
|
//! not needed).
|
|
//! @note The system only allows certain handlers, see prv_tag_for_event_handlers()
|
|
//! in app_inbox_service.c.
|
|
//! @return An opaque value that can be used with app_inbox_destroy_and_deregister, or NULL
|
|
//! if the process failed.
|
|
AppInbox *app_inbox_create_and_register(size_t buffer_size, uint32_t min_num_messages,
|
|
AppInboxMessageHandler message_handler,
|
|
AppInboxDroppedHandler dropped_handler);
|
|
|
|
//! @param app_inbox_ref The app inbox to destroy, pass in the value that
|
|
//! app_inbox_create_and_register returned.
|
|
//! @return The number of messages that were dropped, plus the ones that were still waiting
|
|
//! to be consumed.
|
|
uint32_t app_inbox_destroy_and_deregister(AppInbox *app_inbox_ref);
|
|
|
|
//! Call this function from a AppInboxMessageHandler to immediately consume the message and free
|
|
//! up the space in the buffer that was occupied by the message.
|
|
//! @param consume_info The opaque context object as passed into the AppInboxMessageHandler.
|
|
void app_inbox_consume(AppInboxConsumerInfo *consume_info);
|