summaryrefslogtreecommitdiffstats
path: root/src/shared/OSCSender.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-04-19 20:41:24 +0000
committerDavid Robillard <d@drobilla.net>2011-04-19 20:41:24 +0000
commitc9683eb916ff52ab6907773360c655d776b24f23 (patch)
tree39696902060bf6b3dbba156c1d315f4e69f7ce28 /src/shared/OSCSender.cpp
parent6ec78b5a9eb499646d7fa6ccb306378426008e9d (diff)
downloadingen-c9683eb916ff52ab6907773360c655d776b24f23.tar.gz
ingen-c9683eb916ff52ab6907773360c655d776b24f23.tar.bz2
ingen-c9683eb916ff52ab6907773360c655d776b24f23.zip
Make maximum UDP packet size a runtime parameter (--packet-size, -k).
git-svn-id: http://svn.drobilla.net/lad/trunk/ingen@3170 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/shared/OSCSender.cpp')
-rw-r--r--src/shared/OSCSender.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/shared/OSCSender.cpp b/src/shared/OSCSender.cpp
index 58b9ddae..6c07551b 100644
--- a/src/shared/OSCSender.cpp
+++ b/src/shared/OSCSender.cpp
@@ -15,10 +15,12 @@
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <cassert>
+#include <assert.h>
#include <unistd.h>
#include <stdarg.h>
+
#include "raul/log.hpp"
+
#include "OSCSender.hpp"
#include "ingen-config.h"
@@ -28,9 +30,10 @@ using namespace Raul;
namespace Ingen {
namespace Shared {
-OSCSender::OSCSender()
+OSCSender::OSCSender(size_t max_packet_size)
: _bundle(NULL)
, _address(NULL)
+ , _max_packet_size(max_packet_size)
, _enabled(true)
{
}
@@ -82,17 +85,13 @@ OSCSender::send(const char *path, const char *types, ...)
void
OSCSender::send_message(const char* path, lo_message msg)
{
- // FIXME: size? liblo doesn't export this.
- // Don't want to exceed max UDP packet size (good default value?)
- static const size_t MAX_BUNDLE_SIZE = 1024;
-
if (!_enabled) {
lo_message_free(msg);
return;
}
if (_bundle) {
- if (lo_bundle_length(_bundle) + lo_message_length(msg, path) > MAX_BUNDLE_SIZE) {
+ if (lo_bundle_length(_bundle) + lo_message_length(msg, path) > _max_packet_size) {
warn << "Maximum bundle size reached, bundle split" << endl;
lo_send_bundle(_address, _bundle);
lo_bundle_free_messages(_bundle);