diff options
author | David Robillard <d@drobilla.net> | 2011-04-19 20:41:24 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-04-19 20:41:24 +0000 |
commit | c9683eb916ff52ab6907773360c655d776b24f23 (patch) | |
tree | 39696902060bf6b3dbba156c1d315f4e69f7ce28 /src/shared/OSCSender.cpp | |
parent | 6ec78b5a9eb499646d7fa6ccb306378426008e9d (diff) | |
download | ingen-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.cpp | 13 |
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); |