Go to the documentation of this file.
25 #ifndef PIPEWIRE_PROTOCOL_H
26 #define PIPEWIRE_PROTOCOL_H
50 #define PW_TYPE_INFO_Protocol "PipeWire:Protocol"
51 #define PW_TYPE_INFO_PROTOCOL_BASE PW_TYPE_INFO_Protocol ":"
61 void (*done_callback) (
void *
data,
int result),
70 #define pw_protocol_client_connect(c,p,cb,d) ((c)->connect(c,p,cb,d))
71 #define pw_protocol_client_connect_fd(c,fd,cl) ((c)->connect_fd(c,fd,cl))
72 #define pw_protocol_client_steal_fd(c) ((c)->steal_fd(c))
73 #define pw_protocol_client_disconnect(c) ((c)->disconnect(c))
74 #define pw_protocol_client_destroy(c) ((c)->destroy(c))
75 #define pw_protocol_client_set_paused(c,p) ((c)->set_paused(c,p))
88 #define pw_protocol_server_destroy(l) ((l)->destroy(l))
93 #define PW_PROTOCOL_MARSHAL_FLAG_IMPL (1 << 0)
95 uint32_t n_client_methods;
96 uint32_t n_server_methods;
97 const void *client_marshal;
104 #define PW_VERSION_PROTOCOL_IMPLEMENTATION 0
108 struct pw_core *core,
111 struct pw_impl_core *core,
116 #define PW_VERSION_PROTOCOL_EVENTS 0
122 #define pw_protocol_new_client(p,...) (pw_protocol_get_implementation(p)->new_client(p,__VA_ARGS__))
123 #define pw_protocol_add_server(p,...) (pw_protocol_get_implementation(p)->add_server(p,__VA_ARGS__))
124 #define pw_protocol_ext(p,type,method,...) (((type*)pw_protocol_get_extension(p))->method( __VA_ARGS__))
126 struct pw_protocol *
pw_protocol_new(
struct pw_context *context,
const char *
name,
size_t user_data_size);
Definition: module-filter-chain.c:176
struct pw_core * core
Definition: protocol.h:57
uint32_t version
Definition: protocol.h:117
Definition: protocol.h:53
uint32_t flags
version
Definition: protocol.h:94
user data to add to an object
Definition: filter.c:75
bool spa_streq(const char *s1, const char *s2)
Definition: string.h:50
void pw_protocol_destroy(struct pw_protocol *protocol)
Definition: protocol.c:103
#define spa_list_for_each(pos, head, member)
Definition: list.h:111
int pw_protocol_add_marshal(struct pw_protocol *protocol, const struct pw_protocol_marshal *marshal)
Definition: protocol.c:142
#define SPA_EXPORT
Definition: defs.h:208
const struct pw_protocol_implementation * pw_protocol_get_implementation(struct pw_protocol *protocol)
Definition: protocol.c:90
#define pw_protocol_client_destroy(c)
Definition: protocol.h:74
#define NAME
Definition: protocol.c:34
void spa_hook_list_append(struct spa_hook_list *list, struct spa_hook *hook, const void *funcs, void *data)
Append a hook.
Definition: hook.h:316
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition: defs.h:159
struct pw_context * pw_protocol_get_context(struct pw_protocol *protocol)
Definition: protocol.c:77
#define SPA_CONTAINER_OF(p, t, m)
Definition: defs.h:170
int(* connect_fd)(struct pw_protocol_client *client, int fd, bool close)
Definition: protocol.h:63
#define spa_list_consume(pos, head, member)
Definition: list.h:96
struct pw_impl_core * core
Definition: protocol.h:81
void(* disconnect)(struct pw_protocol_client *client)
Definition: protocol.h:65
struct spa_list client_list
list of clients of this protocol
Definition: protocol.h:83
struct pw_protocol * protocol
the owner protocol
Definition: protocol.h:55
void spa_list_remove(struct spa_list *elem)
Definition: list.h:69
void pw_protocol_add_listener(struct pw_protocol *protocol, struct spa_hook *listener, const struct pw_protocol_events *events, void *data)
Definition: protocol.c:132
void(* destroy)(struct pw_protocol_client *client)
Definition: protocol.h:66
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:295
Definition: protocol.h:103
Definition: protocol.h:77
void spa_list_init(struct spa_list *list)
Definition: list.h:44
#define spa_list_for_each_safe(pos, tmp, head, member)
Definition: list.h:129
const struct pw_protocol_marshal * pw_protocol_get_marshal(struct pw_protocol *protocol, const char *type, uint32_t version, uint32_t flags)
Definition: protocol.c:163
Definition: utils/dict.h:48
struct pw_protocol * pw_context_find_protocol(struct pw_context *context, const char *name)
Definition: protocol.c:179
struct pw_protocol * protocol
the owner protocol
Definition: protocol.h:79
void * pw_protocol_get_user_data(struct pw_protocol *protocol)
Definition: protocol.c:83
void(* destroy)(struct pw_protocol_server *listen)
Definition: protocol.h:85
const void * client_demarshal
Definition: protocol.h:100
#define pw_log_debug(...)
Definition: src/pipewire/log.h:89
Definition: module-protocol-native.c:103
int(* set_paused)(struct pw_protocol_client *client, bool paused)
Definition: protocol.h:67
uint32_t version
Definition: protocol.h:105
const void * server_demarshal
Definition: protocol.h:98
void(* destroy)(void *data)
Definition: protocol.h:119
Definition: protocol.h:115
Definition: module-protocol-native.c:126
struct pw_control this
Definition: control.c:34
Definition: protocol.h:90
const void * server_marshal
Definition: protocol.h:99
const void * pw_protocol_get_extension(struct pw_protocol *protocol)
Definition: protocol.c:97
void spa_hook_list_init(struct spa_hook_list *list)
Initialize a hook list to the empty list.
Definition: hook.h:305
struct pw_protocol * pw_protocol_new(struct pw_context *context, const char *name, size_t user_data_size)
Definition: protocol.c:48
#define pw_protocol_server_destroy(l)
Definition: protocol.h:88
const char * type
interface type
Definition: protocol.h:91
uint32_t version
version
Definition: protocol.h:92
int(* steal_fd)(struct pw_protocol_client *client)
Definition: protocol.h:64
int(* connect)(struct pw_protocol_client *client, const struct spa_dict *props, void(*done_callback)(void *data, int result), void *data)
Definition: protocol.h:59
void spa_hook_list_clean(struct spa_hook_list *list)
Remove all hooks from the list.
Definition: hook.h:344
#define spa_list_append(list, item)
Definition: list.h:81