22 #include <sys/types.h>
27 #pragma GCC diagnostic ignored "-Wunused-parameter"
31 #include <lo/lo_osc_types.h>
32 #define LO_TT_IMMEDIATE lo_get_tt_immediate()
33 lo_timetag lo_get_tt_immediate() { lo_timetag tt = {0U,1U};
return tt; }
46 #define OSC_REPLY( value ) lo_send_from( ((NSM::Client*)user_data)->nsm_addr, ((NSM::Client*)user_data)->_server, LO_TT_IMMEDIATE, "/reply", "ss", path, value )
48 #define OSC_REPLY_ERR( errcode, value ) lo_send_from( ((NSM::Client*)user_data)->nsm_addr, ((NSM::Client*)user_data)->_server, LO_TT_IMMEDIATE, "/error", "sis", path, errcode, value )
68 lo_server_thread_free(
_st );
74 Client::announce (
const char *application_name,
const char *capabilities,
const char *process_name )
77 lo_address to = lo_address_new_from_url(
nsm_url );
84 int pid = (int)getpid();
86 lo_send_from( to,
_server, LO_TT_IMMEDIATE,
"/nsm/server/announce",
"sssiii",
94 lo_address_free( to );
102 lo_send_from(
nsm_addr,
_server, LO_TT_IMMEDIATE,
"/nsm/client/progress",
"f", p );
111 lo_send_from(
nsm_addr,
_server, LO_TT_IMMEDIATE,
"/nsm/client/is_dirty",
"" );
120 lo_send_from(
nsm_addr,
_server, LO_TT_IMMEDIATE,
"/nsm/client/is_clean",
"" );
129 lo_send_from(
nsm_addr,
_server, LO_TT_IMMEDIATE,
"/nsm/client/message",
"is", priority, msg );
139 lo_send_message_from(
nsm_addr,
_server,
"/nsm/server/broadcast", msg );
146 if ( lo_server_wait(
_server, timeout ) )
147 while ( lo_server_recv_noblock(
_server, 0 ) ) {}
153 lo_server_thread_start(
_st );
159 lo_server_thread_stop(
_st );
167 lo_address addr = lo_address_new_from_url( nsm_url );
168 int proto = lo_address_get_protocol( addr );
169 lo_address_free( addr );
171 _server = lo_server_new_with_proto( NULL, proto, NULL );
191 lo_address addr = lo_address_new_from_url( nsm_url );
192 int proto = lo_address_get_protocol( addr );
193 lo_address_free( addr );
195 _st = lo_server_thread_new_with_proto( NULL, proto, NULL );
216 Client::osc_broadcast (
const char *path,
const char *types, lo_arg **argv,
int argc, lo_message msg,
void *user_data )
218 return ((
NSM::Client*)user_data)->command_broadcast( path, msg );
222 Client::osc_save (
const char *path,
const char *types, lo_arg **argv,
int argc, lo_message msg,
void *user_data )
224 char *out_msg = NULL;
226 int r = ((
NSM::Client*)user_data)->command_save(&out_msg);
240 Client::osc_open (
const char *path,
const char *types, lo_arg **argv,
int argc, lo_message msg,
void *user_data )
242 char *out_msg = NULL;
249 int r = ((
NSM::Client*)user_data)->command_open( &argv[0]->s, &argv[1]->s, &argv[2]->s, &out_msg);
273 Client::osc_error (
const char *path,
const char *types, lo_arg **argv,
int argc, lo_message msg,
void *user_data )
275 if ( strcmp( &argv[0]->s,
"/nsm/server/announce" ) )
291 if ( strcmp( &argv[0]->s,
"/nsm/server/announce" ) )
298 nsm->
nsm_addr = lo_address_new_from_url( lo_address_get_url( lo_message_get_source( msg ) ));
char * _session_manager_name
static int osc_broadcast(const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data)
void announce(const char *appliction_name, const char *capabilities, const char *process_name)
void message(int priority, const char *msg)
virtual void command_active(bool)
static int osc_open(const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data)
static int osc_session_is_loaded(const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data)
static int osc_error(const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data)
void check(int timeout=0)
virtual void command_session_is_loaded(void)
int init(const char *nsm_url)
static int osc_save(const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data)
void broadcast(lo_message msg)
int init_thread(const char *nsm_url)
#define OSC_REPLY_ERR(errcode, value)
static int osc_announce_reply(const char *path, const char *types, lo_arg **argv, int argc, lo_message msg, void *user_data)