O2 2.0
A communication protocol for interactive music and media applications.
discovery.h
1/* discovery.h -- discovery protocol
2 *
3 * Roger B. Dannenberg
4 * April 2020
5 */
6
7#ifndef DISCOVERY_H
8#define DISCOVERY_H
9
10#define O2_DY_INFO 50
11#define O2_DY_HUB 51
12#define O2_DY_REPLY 52
13#define O2_DY_CALLBACK 53
14#define O2_DY_CONNECT 54
15
16// we need to successfully allocate one port from the list. This number is
17// how many ports to search.
18#define PORT_MAX 16
19
20extern SOCKET o2_discovery_socket;
21extern Fds_info *o2_udp_server;
22
23#ifndef O2_NO_HUB
24extern char o2_hub_addr[O2_MAX_PROCNAME_LEN]; // @public:internal:port of hub
25 // if any, otherwise empty string. Non-empty turns off broadcasting.
26#endif
27
33O2err o2_discovery_initialize(void);
34void o2_discovery_init_phase2();
35
36O2err o2_discovery_finish(void);
37
38#ifndef O2_NO_O2DISCOVERY
47void o2_discovery_send_handler(o2_msg_data_ptr msg, const char *types,
48 O2arg_ptr *argv, int argc, const void *user_data);
49
50void o2_send_discovery_at(O2time when);
51#endif
52
53O2err o2_send_services(Proxy_info *proc);
54
55void o2_discovery_handler(o2_msg_data_ptr msg, const char *types,
56 O2arg_ptr *argv, int argc, const void *user_data);
57
58void o2_discovery_init_handler(o2_msg_data_ptr msg, const char *types,
59 O2arg_ptr *argv, int argc, const void *user_data);
60
61
62void o2_hub_handler(o2_msg_data_ptr msg, const char *types,
63 O2arg_ptr *argv, int argc, const void *user_data);
64
65void o2_services_handler(o2_msg_data_ptr msg, const char *types,
66 O2arg_ptr *argv, int argc, const void *user_data);
67
68// call this if you have a (padded) O2string for name:
69O2err o2_discovered_a_remote_process_name(const char *name, int version,
70 const char *internal_ip, int tcp_port, int udp_port, int dy);
71
72// call this if you have just individual address components OR if
73// dy is O2_CALLBACK:
74O2err o2_discovered_a_remote_process(int version, const char *public_ip,
75 const char *internal_ip, int tcp_port, int udp_port, int dy);
76
77O2message_ptr o2_make_dy_msg(Proc_info *proc, bool tcp_flag, bool swap_flag,
78 int dy_flag);
79
80#endif /* DISCOVERY_H */
Definition: o2network.h:147
Definition: processes.h:20
Definition: o2node.h:291
double O2time
O2 timestamps are doubles representing seconds since the approximate start time of the ensemble.
Definition: o2.h:625
O2err
return values used generally by O2 functions
Definition: o2.h:329
an O2 message container
Definition: o2.h:690
data part of an O2 message
Definition: o2.h:638
union of all O2 parameter types
Definition: o2.h:764