<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>liblo: High-level OSC API</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.2-20100208 --> <div class="contents"> <h1>High-level OSC API</h1><table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Data Structures</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><a class="el" href="structlo__timetag.html">lo_timetag</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">A structure to store OSC TimeTag values. <a href="structlo__timetag.html#_details">More...</a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">union </td><td class="memItemRight" valign="bottom"><a class="el" href="unionlo__arg.html">lo_arg</a></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Union used to read values from incoming messages. <a href="unionlo__arg.html#_details">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Defines</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gafa8cfc08b763b0c039fb64a73c4c77da">LO_TT_IMMEDIATE</a> ((<a class="el" href="structlo__timetag.html">lo_timetag</a>){0U,0U})</td></tr> <tr><td colspan="2"><h2>Enumerations</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga11838c576b0197c255ce805fd7434736">lo_type</a> { <br/> <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a4ba0490216baf238719e1200325b037d">LO_INT32</a> = 'i', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ab3245e1b7edacde57f71d200840b0aa3">LO_FLOAT</a> = 'f', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a6121bddbedc79af47d86a8a25af47ad2">LO_STRING</a> = 's', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a140f48c944b6c888846b8109ceaeb98b">LO_BLOB</a> = 'b', <br/> <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736acfabb7d6ec1d4f9d033227de24c76b30">LO_INT64</a> = 'h', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a0516741a260e7109d2b0ed0c92beddbe">LO_TIMETAG</a> = 't', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a0ca92c843dfb45f4edabdefd60cdeca6">LO_DOUBLE</a> = 'd', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a4ae18ed5170672498406c36b16e7a948">LO_SYMBOL</a> = 'S', <br/> <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736af93c0cdf731b1edf4b9d44ad7d7dba26">LO_CHAR</a> = 'c', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ad295b5f7669a7220102082e20fd14ec0">LO_MIDI</a> = 'm', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ace8c12ac58d6aaee426dc41cfa609009">LO_TRUE</a> = 'T', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736ae85a45e7bc3999069d82da7245d172f4">LO_FALSE</a> = 'F', <br/> <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a80fcaab02318c562b094ca407f81d2b3">LO_NIL</a> = 'N', <a class="el" href="group__liblo.html#gga11838c576b0197c255ce805fd7434736a9b77e96b653de1f91344549b9b9a0273">LO_INFINITUM</a> = 'I' <br/> }</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight"><p>An enumeration of the OSC types liblo can send and receive. </p> <a href="group__liblo.html#ga11838c576b0197c255ce805fd7434736">More...</a><br/></td></tr> <tr><td colspan="2"><h2>Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gae5af61a02ab08871d3ea070c8f770cfe">lo_address_new</a> (const char *host, const char *port)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Declare an OSC destination, given IP address and port number. <a href="#gae5af61a02ab08871d3ea070c8f770cfe"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga1af2cb3c80393cba838f64dfcdc35620">lo_address_new_from_url</a> (const char *url)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a lo_address object from an OSC URL. <a href="#ga1af2cb3c80393cba838f64dfcdc35620"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga82b9a2d1d30214114eb5298f43aebac5">lo_address_free</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free the memory used by the lo_address object. <a href="#ga82b9a2d1d30214114eb5298f43aebac5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987">lo_send</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> targ, const char *path, const char *type,...)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Send a OSC formatted message to the address specified. <a href="#gafa4253874f97c2c16254ac57d2b7c987"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaa4a314562b09e2fd00749a5d0b4d0955">lo_send_from</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> targ, <a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a> from, <a class="el" href="structlo__timetag.html">lo_timetag</a> ts, const char *path, const char *type,...)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Send a OSC formatted message to the address specified, from the same socket as the specificied server. <a href="#gaa4a314562b09e2fd00749a5d0b4d0955"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga42ec6437789c7516c5b7909d8504751a">lo_send_timestamped</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> targ, <a class="el" href="structlo__timetag.html">lo_timetag</a> ts, const char *path, const char *type,...)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Send a OSC formatted message to the address specified, scheduled to be dispatch at some time in the future. <a href="#ga42ec6437789c7516c5b7909d8504751a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga407e1694a2ec58ee5b90c6390e0a5d53">lo_address_errno</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> a)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the error number from the last failed lo_send or lo_address_new call. <a href="#ga407e1694a2ec58ee5b90c6390e0a5d53"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gace321bfb9e529d8640e96e894db5400c">lo_address_errstr</a> (<a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> a)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the error string from the last failed lo_send or lo_address_new call. <a href="#gace321bfb9e529d8640e96e894db5400c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gabe3e0c31189adfd7624de6c507b610ba">lo_server_thread_new</a> (const char *port, <a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> err_h)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new server thread to handle incoming OSC messages. <a href="#gabe3e0c31189adfd7624de6c507b610ba"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga6713cedfb0b2c4f066ec8a19366bf095">lo_server_thread_new_with_proto</a> (const char *port, int proto, <a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> err_h)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new server thread to handle incoming OSC messages, specifying protocol. <a href="#ga6713cedfb0b2c4f066ec8a19366bf095"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gad72be3f2a81b9583ad69dd007080c0e5">lo_server_thread_free</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free memory taken by a server thread. <a href="#gad72be3f2a81b9583ad69dd007080c0e5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a66faedf5da13231d8c0166870477dce5">lo_method</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gacff9c90a8efc400448276b2d20831010">lo_server_thread_add_method</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st, const char *path, const char *typespec, <a class="el" href="lo__types_8h.html#a3b1c86c0925d05e13b5438ce8fe80a6c">lo_method_handler</a> h, void *user_data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add an OSC method to the specifed server thread. <a href="#gacff9c90a8efc400448276b2d20831010"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga072edf53338bc807444c4b510643a828">lo_server_thread_del_method</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st, const char *path, const char *typespec)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete an OSC method from the specifed server thread. <a href="#ga072edf53338bc807444c4b510643a828"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga6187bacbdd21975bf9d34f5d6de66ba8">lo_server_thread_start</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Start the server thread. <a href="#ga6187bacbdd21975bf9d34f5d6de66ba8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga639e6b7a05852aa9cf089cc8e01b98e7">lo_server_thread_stop</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Stop the server thread. <a href="#ga639e6b7a05852aa9cf089cc8e01b98e7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933">lo_server_thread_get_port</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the port number that the server thread has bound to. <a href="#ga22f4b18eeac41490647ab9fe2333f933"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gac2805a7cbdd9465be4ca5101c569faf0">lo_server_thread_get_url</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return a URL describing the address of the server thread. <a href="#gac2805a7cbdd9465be4ca5101c569faf0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gab968d51fa6e0d4bea92e3f84f5556161">lo_server_thread_get_server</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the lo_server for a lo_server_thread. <a href="#gab968d51fa6e0d4bea92e3f84f5556161"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga7bc3d8361b65e3ad112a1da956d9114e">lo_server_thread_events_pending</a> (<a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> st)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return true if there are scheduled events (eg. from bundles) waiting to be dispatched by the thread. <a href="#ga7bc3d8361b65e3ad112a1da956d9114e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaffb2348c70cb0e1214fd50bdc7574c39">lo_blob_new</a> (int32_t size, const void *data)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new OSC blob type. <a href="#gaffb2348c70cb0e1214fd50bdc7574c39"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gaa46ef058cfdf14a16936c062ebac19b9">lo_blob_free</a> (<a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free the memory taken by a blob. <a href="#gaa46ef058cfdf14a16936c062ebac19b9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#gab6c9184f0a54f19319d8a6409487b466">lo_blob_datasize</a> (<a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the ammount of valid data in a lo blob object. <a href="#gab6c9184f0a54f19319d8a6409487b466"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="group__liblo.html#ga064e3435301e0df338b75023a7ebf38e">lo_blob_dataptr</a> (<a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> b)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return a pointer to the start of the blob data to allow contents to be changed. <a href="#ga064e3435301e0df338b75023a7ebf38e"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Defines the high-level API functions neccesary to implement OSC support. Should be adequate for most applications, but ig you require lower level control you can use the functions defined in <a class="el" href="lo__lowlevel_8h.html">lo_lowlevel.h</a>. </p> <hr/><h2>Define Documentation</h2> <a class="anchor" id="gafa8cfc08b763b0c039fb64a73c4c77da"></a><!-- doxytag: member="lo_osc_types.h::LO_TT_IMMEDIATE" ref="gafa8cfc08b763b0c039fb64a73c4c77da" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">#define LO_TT_IMMEDIATE ((<a class="el" href="structlo__timetag.html">lo_timetag</a>){0U,0U})</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Enumeration Type Documentation</h2> <a class="anchor" id="ga11838c576b0197c255ce805fd7434736"></a><!-- doxytag: member="lo_osc_types.h::lo_type" ref="ga11838c576b0197c255ce805fd7434736" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">enum <a class="el" href="group__liblo.html#ga11838c576b0197c255ce805fd7434736">lo_type</a></td> </tr> </table> </div> <div class="memdoc"> <p>An enumeration of the OSC types liblo can send and receive. </p> <p>The value of the enumeration is the typechar used to tag messages and to specify arguemnts with <a class="el" href="group__liblo.html#gafa4253874f97c2c16254ac57d2b7c987" title="Send a OSC formatted message to the address specified.">lo_send()</a>. </p> <dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a4ba0490216baf238719e1200325b037d"></a><!-- doxytag: member="LO_INT32" ref="gga11838c576b0197c255ce805fd7434736a4ba0490216baf238719e1200325b037d" args="" -->LO_INT32</em> </td><td> <p>32 bit signed integer. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ab3245e1b7edacde57f71d200840b0aa3"></a><!-- doxytag: member="LO_FLOAT" ref="gga11838c576b0197c255ce805fd7434736ab3245e1b7edacde57f71d200840b0aa3" args="" -->LO_FLOAT</em> </td><td> <p>32 bit IEEE-754 float. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a6121bddbedc79af47d86a8a25af47ad2"></a><!-- doxytag: member="LO_STRING" ref="gga11838c576b0197c255ce805fd7434736a6121bddbedc79af47d86a8a25af47ad2" args="" -->LO_STRING</em> </td><td> <p>Standard C, NULL terminated string. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a140f48c944b6c888846b8109ceaeb98b"></a><!-- doxytag: member="LO_BLOB" ref="gga11838c576b0197c255ce805fd7434736a140f48c944b6c888846b8109ceaeb98b" args="" -->LO_BLOB</em> </td><td> <p>OSC binary blob type. Accessed using the lo_blob_*() functions. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736acfabb7d6ec1d4f9d033227de24c76b30"></a><!-- doxytag: member="LO_INT64" ref="gga11838c576b0197c255ce805fd7434736acfabb7d6ec1d4f9d033227de24c76b30" args="" -->LO_INT64</em> </td><td> <p>64 bit signed integer. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a0516741a260e7109d2b0ed0c92beddbe"></a><!-- doxytag: member="LO_TIMETAG" ref="gga11838c576b0197c255ce805fd7434736a0516741a260e7109d2b0ed0c92beddbe" args="" -->LO_TIMETAG</em> </td><td> <p>OSC TimeTag type, represented by the <a class="el" href="structlo__timetag.html" title="A structure to store OSC TimeTag values.">lo_timetag</a> structure. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a0ca92c843dfb45f4edabdefd60cdeca6"></a><!-- doxytag: member="LO_DOUBLE" ref="gga11838c576b0197c255ce805fd7434736a0ca92c843dfb45f4edabdefd60cdeca6" args="" -->LO_DOUBLE</em> </td><td> <p>64 bit IEEE-754 double. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a4ae18ed5170672498406c36b16e7a948"></a><!-- doxytag: member="LO_SYMBOL" ref="gga11838c576b0197c255ce805fd7434736a4ae18ed5170672498406c36b16e7a948" args="" -->LO_SYMBOL</em> </td><td> <p>Standard C, NULL terminated, string. Used in systems which distinguish strings and symbols. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736af93c0cdf731b1edf4b9d44ad7d7dba26"></a><!-- doxytag: member="LO_CHAR" ref="gga11838c576b0197c255ce805fd7434736af93c0cdf731b1edf4b9d44ad7d7dba26" args="" -->LO_CHAR</em> </td><td> <p>Standard C, 8 bit, char variable. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ad295b5f7669a7220102082e20fd14ec0"></a><!-- doxytag: member="LO_MIDI" ref="gga11838c576b0197c255ce805fd7434736ad295b5f7669a7220102082e20fd14ec0" args="" -->LO_MIDI</em> </td><td> <p>A 4 byte MIDI packet. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ace8c12ac58d6aaee426dc41cfa609009"></a><!-- doxytag: member="LO_TRUE" ref="gga11838c576b0197c255ce805fd7434736ace8c12ac58d6aaee426dc41cfa609009" args="" -->LO_TRUE</em> </td><td> <p>Sybol representing the value True. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736ae85a45e7bc3999069d82da7245d172f4"></a><!-- doxytag: member="LO_FALSE" ref="gga11838c576b0197c255ce805fd7434736ae85a45e7bc3999069d82da7245d172f4" args="" -->LO_FALSE</em> </td><td> <p>Sybol representing the value False. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a80fcaab02318c562b094ca407f81d2b3"></a><!-- doxytag: member="LO_NIL" ref="gga11838c576b0197c255ce805fd7434736a80fcaab02318c562b094ca407f81d2b3" args="" -->LO_NIL</em> </td><td> <p>Sybol representing the value Nil. </p> </td></tr> <tr><td valign="top"><em><a class="anchor" id="gga11838c576b0197c255ce805fd7434736a9b77e96b653de1f91344549b9b9a0273"></a><!-- doxytag: member="LO_INFINITUM" ref="gga11838c576b0197c255ce805fd7434736a9b77e96b653de1f91344549b9b9a0273" args="" -->LO_INFINITUM</em> </td><td> <p>Sybol representing the value Infinitum. </p> </td></tr> </table> </dd> </dl> </div> </div> <hr/><h2>Function Documentation</h2> <a class="anchor" id="ga407e1694a2ec58ee5b90c6390e0a5d53"></a><!-- doxytag: member="lo.h::lo_address_errno" ref="ga407e1694a2ec58ee5b90c6390e0a5d53" args="(lo_address a)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lo_address_errno </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td> <td class="paramname"> <em>a</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the error number from the last failed lo_send or lo_address_new call. </p> </div> </div> <a class="anchor" id="gace321bfb9e529d8640e96e894db5400c"></a><!-- doxytag: member="lo.h::lo_address_errstr" ref="gace321bfb9e529d8640e96e894db5400c" args="(lo_address a)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* lo_address_errstr </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td> <td class="paramname"> <em>a</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the error string from the last failed lo_send or lo_address_new call. </p> </div> </div> <a class="anchor" id="ga82b9a2d1d30214114eb5298f43aebac5"></a><!-- doxytag: member="lo.h::lo_address_free" ref="ga82b9a2d1d30214114eb5298f43aebac5" args="(lo_address t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lo_address_free </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td> <td class="paramname"> <em>t</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Free the memory used by the lo_address object. </p> </div> </div> <a class="anchor" id="gae5af61a02ab08871d3ea070c8f770cfe"></a><!-- doxytag: member="lo.h::lo_address_new" ref="gae5af61a02ab08871d3ea070c8f770cfe" args="(const char *host, const char *port)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> lo_address_new </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>host</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>port</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Declare an OSC destination, given IP address and port number. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>host</em> </td><td>An IP address or number, or NULL for the local machine. </td></tr> <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>a decimal port number or service name.</td></tr> </table> </dd> </dl> <p>The lo_address object may be used as the target of OSC messages.</p> <p>Note: if you wish to receive replies from the target of this address, you must first create a lo_server_thread or lo_server object which will receive the replies. The last lo_server(_thread) object creted will be the receiver. </p> </div> </div> <a class="anchor" id="ga1af2cb3c80393cba838f64dfcdc35620"></a><!-- doxytag: member="lo.h::lo_address_new_from_url" ref="ga1af2cb3c80393cba838f64dfcdc35620" args="(const char *url)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> lo_address_new_from_url </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>url</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a lo_address object from an OSC URL. </p> <p>example: osc.udp://localhost:4444/my/path/ </p> </div> </div> <a class="anchor" id="ga064e3435301e0df338b75023a7ebf38e"></a><!-- doxytag: member="lo.h::lo_blob_dataptr" ref="ga064e3435301e0df338b75023a7ebf38e" args="(lo_blob b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* lo_blob_dataptr </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> </td> <td class="paramname"> <em>b</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return a pointer to the start of the blob data to allow contents to be changed. </p> </div> </div> <a class="anchor" id="gab6c9184f0a54f19319d8a6409487b466"></a><!-- doxytag: member="lo.h::lo_blob_datasize" ref="gab6c9184f0a54f19319d8a6409487b466" args="(lo_blob b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">uint32_t lo_blob_datasize </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> </td> <td class="paramname"> <em>b</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the ammount of valid data in a lo blob object. </p> <p>If you want to know the storage size, use <a class="el" href="group__liblolowlevel.html#gaf793bbd32346a91d7d680d91ae68d1bd" title="Return the storage size, in bytes, of the given argument.">lo_arg_size()</a>. </p> </div> </div> <a class="anchor" id="gaa46ef058cfdf14a16936c062ebac19b9"></a><!-- doxytag: member="lo.h::lo_blob_free" ref="gaa46ef058cfdf14a16936c062ebac19b9" args="(lo_blob b)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lo_blob_free </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> </td> <td class="paramname"> <em>b</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Free the memory taken by a blob. </p> </div> </div> <a class="anchor" id="gaffb2348c70cb0e1214fd50bdc7574c39"></a><!-- doxytag: member="lo.h::lo_blob_new" ref="gaffb2348c70cb0e1214fd50bdc7574c39" args="(int32_t size, const void *data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#a8e780f8c09e3e4dd737fe249f11d16fc">lo_blob</a> lo_blob_new </td> <td>(</td> <td class="paramtype">int32_t </td> <td class="paramname"> <em>size</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new OSC blob type. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>The ammount of space to allocate in the blob structure. </td></tr> <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>The data that will be used to initialise the blob, should be size bytes long. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="gafa4253874f97c2c16254ac57d2b7c987"></a><!-- doxytag: member="lo.h::lo_send" ref="gafa4253874f97c2c16254ac57d2b7c987" args="(lo_address targ, const char *path, const char *type,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lo_send </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td> <td class="paramname"> <em>targ</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Send a OSC formatted message to the address specified. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>targ</em> </td><td>The target OSC address </td></tr> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>The OSC path the message will be delivered to </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>The types of the data items in the message, types are defined in lo_types_common.h </td></tr> <tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>The data values to be transmitted. The types of the arguments passed here must agree with the types specified in the type parameter.</td></tr> </table> </dd> </dl> <p>example:<br/> lo_send(t, "/foo/bar", "ff", 0.1f, 23.0f);</p> <p>returns -1 on failure. </p> </div> </div> <a class="anchor" id="gaa4a314562b09e2fd00749a5d0b4d0955"></a><!-- doxytag: member="lo.h::lo_send_from" ref="gaa4a314562b09e2fd00749a5d0b4d0955" args="(lo_address targ, lo_server from, lo_timetag ts, const char *path, const char *type,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lo_send_from </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td> <td class="paramname"> <em>targ</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a> </td> <td class="paramname"> <em>from</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structlo__timetag.html">lo_timetag</a> </td> <td class="paramname"> <em>ts</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Send a OSC formatted message to the address specified, from the same socket as the specificied server. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>targ</em> </td><td>The target OSC address </td></tr> <tr><td valign="top"></td><td valign="top"><em>from</em> </td><td>The server to send message from (can be NULL to use new socket) </td></tr> <tr><td valign="top"></td><td valign="top"><em>ts</em> </td><td>The OSC timetag timestamp at which the message will be processed (can be LO_TT_IMMEDIATE if you don't want to attach a timetag) </td></tr> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>The OSC path the message will be delivered to </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>The types of the data items in the message, types are defined in lo_types_common.h </td></tr> <tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>The data values to be transmitted. The types of the arguments passed here must agree with the types specified in the type parameter.</td></tr> </table> </dd> </dl> <p>example:<br/> serv = lo_server_new(NULL, err);<br/> lo_server_add_method(serv, "/reply", "ss", reply_handler, NULL); lo_send_from(t, serv, LO_TT_IMMEDIATE, "/foo/bar", "ff", 0.1f, 23.0f);</p> <p>on success returns the number of bytes sent, returns -1 on failure. </p> </div> </div> <a class="anchor" id="ga42ec6437789c7516c5b7909d8504751a"></a><!-- doxytag: member="lo.h::lo_send_timestamped" ref="ga42ec6437789c7516c5b7909d8504751a" args="(lo_address targ, lo_timetag ts, const char *path, const char *type,...)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lo_send_timestamped </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#abf9b53223467de596b89e1377b0f3f3d">lo_address</a> </td> <td class="paramname"> <em>targ</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="structlo__timetag.html">lo_timetag</a> </td> <td class="paramname"> <em>ts</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"> </td> <td class="paramname"> <em>...</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Send a OSC formatted message to the address specified, scheduled to be dispatch at some time in the future. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>targ</em> </td><td>The target OSC address </td></tr> <tr><td valign="top"></td><td valign="top"><em>ts</em> </td><td>The OSC timetag timestamp at which the message will be processed </td></tr> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>The OSC path the message will be delivered to </td></tr> <tr><td valign="top"></td><td valign="top"><em>type</em> </td><td>The types of the data items in the message, types are defined in lo_types_common.h </td></tr> <tr><td valign="top"></td><td valign="top"><em>...</em> </td><td>The data values to be transmitted. The types of the arguments passed here must agree with the types specified in the type parameter.</td></tr> </table> </dd> </dl> <p>example:<br/> <a class="el" href="structlo__timetag.html" title="A structure to store OSC TimeTag values.">lo_timetag</a> now;<br/> lo_timetag_now(&now);<br/> lo_send_timestamped(t, now, "/foo/bar", "ff", 0.1f, 23.0f);</p> <p>on success returns the number of bytes sent, returns -1 on failure. </p> </div> </div> <a class="anchor" id="gacff9c90a8efc400448276b2d20831010"></a><!-- doxytag: member="lo.h::lo_server_thread_add_method" ref="gacff9c90a8efc400448276b2d20831010" args="(lo_server_thread st, const char *path, const char *typespec, lo_method_handler h, void *user_data)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#a66faedf5da13231d8c0166870477dce5">lo_method</a> lo_server_thread_add_method </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>typespec</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a3b1c86c0925d05e13b5438ce8fe80a6c">lo_method_handler</a> </td> <td class="paramname"> <em>h</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">void * </td> <td class="paramname"> <em>user_data</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Add an OSC method to the specifed server thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>st</em> </td><td>The server thread the method is to be added to. </td></tr> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>The OSC path to register the method to. If NULL is passed the method will match all paths. </td></tr> <tr><td valign="top"></td><td valign="top"><em>typespec</em> </td><td>The typespec the method accepts. Incoming messages with similar typespecs (e.g. ones with numerical types in the same position) will be coerced to the typespec given here. </td></tr> <tr><td valign="top"></td><td valign="top"><em>h</em> </td><td>The method handler callback function that will be called it a matching message is received </td></tr> <tr><td valign="top"></td><td valign="top"><em>user_data</em> </td><td>A value that will be passed to the callback function, h, when its invoked matching from this method. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga072edf53338bc807444c4b510643a828"></a><!-- doxytag: member="lo.h::lo_server_thread_del_method" ref="ga072edf53338bc807444c4b510643a828" args="(lo_server_thread st, const char *path, const char *typespec)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lo_server_thread_del_method </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>path</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"> <em>typespec</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Delete an OSC method from the specifed server thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>st</em> </td><td>The server thread the method is to be removed from. </td></tr> <tr><td valign="top"></td><td valign="top"><em>path</em> </td><td>The OSC path of the method to delete. If NULL is passed the method will match the generic handler. </td></tr> <tr><td valign="top"></td><td valign="top"><em>typespec</em> </td><td>The typespec the method accepts. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga7bc3d8361b65e3ad112a1da956d9114e"></a><!-- doxytag: member="lo.h::lo_server_thread_events_pending" ref="ga7bc3d8361b65e3ad112a1da956d9114e" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lo_server_thread_events_pending </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return true if there are scheduled events (eg. from bundles) waiting to be dispatched by the thread. </p> </div> </div> <a class="anchor" id="gad72be3f2a81b9583ad69dd007080c0e5"></a><!-- doxytag: member="lo.h::lo_server_thread_free" ref="gad72be3f2a81b9583ad69dd007080c0e5" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lo_server_thread_free </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Free memory taken by a server thread. </p> <p>Frees the memory, and, if currently running will stop the associated thread. </p> </div> </div> <a class="anchor" id="ga22f4b18eeac41490647ab9fe2333f933"></a><!-- doxytag: member="lo.h::lo_server_thread_get_port" ref="ga22f4b18eeac41490647ab9fe2333f933" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int lo_server_thread_get_port </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the port number that the server thread has bound to. </p> </div> </div> <a class="anchor" id="gab968d51fa6e0d4bea92e3f84f5556161"></a><!-- doxytag: member="lo.h::lo_server_thread_get_server" ref="gab968d51fa6e0d4bea92e3f84f5556161" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#a59067bf50cf8abb4371da6f03c9036c9">lo_server</a> lo_server_thread_get_server </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return the lo_server for a lo_server_thread. </p> <p>This function is useful for passing a thread's lo_server to <a class="el" href="group__liblo.html#gaa4a314562b09e2fd00749a5d0b4d0955" title="Send a OSC formatted message to the address specified, from the same socket as the...">lo_send_from()</a>. </p> </div> </div> <a class="anchor" id="gac2805a7cbdd9465be4ca5101c569faf0"></a><!-- doxytag: member="lo.h::lo_server_thread_get_url" ref="gac2805a7cbdd9465be4ca5101c569faf0" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">char* lo_server_thread_get_url </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Return a URL describing the address of the server thread. </p> <p>Return value must be free()'d to reclaim memory. </p> </div> </div> <a class="anchor" id="gabe3e0c31189adfd7624de6c507b610ba"></a><!-- doxytag: member="lo.h::lo_server_thread_new" ref="gabe3e0c31189adfd7624de6c507b610ba" args="(const char *port, lo_err_handler err_h)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> lo_server_thread_new </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>port</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> </td> <td class="paramname"> <em>err_h</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new server thread to handle incoming OSC messages. </p> <p>Server threads take care of the message reception and dispatch by transparently creating a systme thread to handle incoming messages. Use this if you do not want to handle the threading yourself.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>If NULL is passed then an unused port will be chosen by the system, its number may be retreived with <a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933" title="Return the port number that the server thread has bound to.">lo_server_thread_get_port()</a> so it can be passed to clients. Otherwise a decimal port number, service name or UNIX domain socket path may be passed. </td></tr> <tr><td valign="top"></td><td valign="top"><em>err_h</em> </td><td>A function that will be called in the event of an error being raised. The function prototype is defined in <a class="el" href="lo__types_8h.html">lo_types.h</a> </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga6713cedfb0b2c4f066ec8a19366bf095"></a><!-- doxytag: member="lo.h::lo_server_thread_new_with_proto" ref="ga6713cedfb0b2c4f066ec8a19366bf095" args="(const char *port, int proto, lo_err_handler err_h)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> lo_server_thread_new_with_proto </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>port</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>proto</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="lo__types_8h.html#aa5d2e4aa0ff9d4459fcc76e7ed5839fc">lo_err_handler</a> </td> <td class="paramname"> <em>err_h</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new server thread to handle incoming OSC messages, specifying protocol. </p> <p>Server threads take care of the message reception and dispatch by transparently creating a systme thread to handle incoming messages. Use this if you do not want to handle the threading yourself.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>port</em> </td><td>If NULL is passed then an unused port will be chosen by the system, its number may be retreived with <a class="el" href="group__liblo.html#ga22f4b18eeac41490647ab9fe2333f933" title="Return the port number that the server thread has bound to.">lo_server_thread_get_port()</a> so it can be passed to clients. Otherwise a decimal port number, service name or UNIX domain socket path may be passed. </td></tr> <tr><td valign="top"></td><td valign="top"><em>proto</em> </td><td>The protocol to use, should be one of LO_UDP, LO_TCP or LO_UNIX. </td></tr> <tr><td valign="top"></td><td valign="top"><em>err_h</em> </td><td>A function that will be called in the event of an error being raised. The function prototype is defined in <a class="el" href="lo__types_8h.html">lo_types.h</a> </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga6187bacbdd21975bf9d34f5d6de66ba8"></a><!-- doxytag: member="lo.h::lo_server_thread_start" ref="ga6187bacbdd21975bf9d34f5d6de66ba8" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lo_server_thread_start </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Start the server thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>st</em> </td><td>the server thread to start. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ga639e6b7a05852aa9cf089cc8e01b98e7"></a><!-- doxytag: member="lo.h::lo_server_thread_stop" ref="ga639e6b7a05852aa9cf089cc8e01b98e7" args="(lo_server_thread st)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void lo_server_thread_stop </td> <td>(</td> <td class="paramtype"><a class="el" href="lo__types_8h.html#a09996ffb6bde21b8fb6106897b88feae">lo_server_thread</a> </td> <td class="paramname"> <em>st</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Stop the server thread. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>st</em> </td><td>the server thread to start. </td></tr> </table> </dd> </dl> </div> </div> </div> <hr size="1"><address style="text-align: right;"><small> Generated for liblo by <a href="http://www.doxygen.org/ index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.6.2-20100208</small></address> </body> </html>