/* PipeWire AGL Cluster IPC * * Copyright © 2021 Collabora Ltd. * @author Julian Bouzas * * SPDX-License-Identifier: MIT */ #ifndef __ICIPC_SENDER_H__ #define __ICIPC_SENDER_H__ #include #include #include #include "defs.h" #ifdef __cplusplus extern "C" { #endif struct icipc_sender; typedef void (*icipc_sender_lost_conn_func_t)( struct icipc_sender *self, int receiver_fd, void *data); typedef void (*icipc_sender_reply_func_t)( struct icipc_sender *self, const uint8_t *buffer, size_t size, void *data); ICIPC_API struct icipc_sender *icipc_sender_new( const char *path, size_t buffer_size, icipc_sender_lost_conn_func_t lost_func, void *lost_data, size_t user_size); ICIPC_API void icipc_sender_free(struct icipc_sender *self); ICIPC_API bool icipc_sender_connect(struct icipc_sender *self); ICIPC_API void icipc_sender_disconnect(struct icipc_sender *self); ICIPC_API bool icipc_sender_is_connected(struct icipc_sender *self); ICIPC_API bool icipc_sender_send( struct icipc_sender *self, const uint8_t *buffer, size_t size, icipc_sender_reply_func_t reply, void *data); /* for subclasses only */ ICIPC_API void *icipc_sender_get_user_data(struct icipc_sender *self); #ifdef __cplusplus } #endif #endif