aboutsummaryrefslogtreecommitdiffstats
path: root/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp
diff options
context:
space:
mode:
authormick grierson <mickgrierson@gmail.com>2015-06-29 16:01:29 +0100
committermick grierson <mickgrierson@gmail.com>2015-06-29 16:01:29 +0100
commitbc8d2ebccb48531c7d32d63c608561e495cbd7a3 (patch)
tree19c21a5cd23427126c7639697c705dada452a308 /ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp
parentb86dfa8f6f99713ee4605c30ebb1a58309aaeb8a (diff)
updating examples
Diffstat (limited to 'ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp')
-rwxr-xr-xofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp192
1 files changed, 0 insertions, 192 deletions
diff --git a/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp b/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp
deleted file mode 100755
index e19e6a4..0000000
--- a/ofxMaxim/ofxMaximExample_0.8.4_OSX_Granular/ofxOsc/src/ofxOscSender.cpp
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
-
- Copyright (c) 2007-2009, Damian Stewart
- All rights reserved.
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- * Neither the name of the developer nor the
- names of its contributors may be used to endorse or promote products
- derived from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY DAMIAN STEWART ''AS IS'' AND ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- DISCLAIMED. IN NO EVENT SHALL DAMIAN STEWART BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-
-#include "ofxOscSender.h"
-#include "ofUtils.h"
-#include "ofParameterGroup.h"
-
-
-#include "UdpSocket.h"
-
-#include <assert.h>
-
-ofxOscSender::ofxOscSender()
-{
- socket = NULL;
-}
-
-ofxOscSender::~ofxOscSender()
-{
- if ( socket )
- shutdown();
-}
-
-void ofxOscSender::setup( std::string hostname, int port )
-{
- if ( socket )
- shutdown();
-
- socket = new UdpTransmitSocket( IpEndpointName( hostname.c_str(), port ) );
-}
-
-void ofxOscSender::shutdown()
-{
- if ( socket )
- delete socket;
- socket = NULL;
-}
-
-void ofxOscSender::sendBundle( ofxOscBundle& bundle )
-{
- //setting this much larger as it gets trimmed down to the size its using before being sent.
- //TODO: much better if we could make this dynamic? Maybe have ofxOscBundle return its size?
- static const int OUTPUT_BUFFER_SIZE = 327680;
- char buffer[OUTPUT_BUFFER_SIZE];
- osc::OutboundPacketStream p(buffer, OUTPUT_BUFFER_SIZE );
-
- // serialise the bundle
- appendBundle( bundle, p );
-
- socket->Send( p.Data(), p.Size() );
-}
-
-void ofxOscSender::sendMessage( ofxOscMessage& message )
-{
- //setting this much larger as it gets trimmed down to the size its using before being sent.
- //TODO: much better if we could make this dynamic? Maybe have ofxOscMessage return its size?
- static const int OUTPUT_BUFFER_SIZE = 327680;
- char buffer[OUTPUT_BUFFER_SIZE];
- osc::OutboundPacketStream p( buffer, OUTPUT_BUFFER_SIZE );
-
- // serialise the message
- p << osc::BeginBundleImmediate;
- appendMessage( message, p );
- p << osc::EndBundle;
-
- socket->Send( p.Data(), p.Size() );
-}
-
-void ofxOscSender::sendParameter( const ofAbstractParameter & parameter){
- if(!parameter.isSerializable()) return;
- if(parameter.type()==typeid(ofParameterGroup).name()){
- string address = "/";
- const vector<string> hierarchy = parameter.getGroupHierarchyNames();
- for(int i=0;i<(int)hierarchy.size()-1;i++){
- address+=hierarchy[i] + "/";
- }
- ofxOscBundle bundle;
- appendParameter(bundle,parameter,address);
- sendBundle(bundle);
- }else{
- string address = "";
- const vector<string> hierarchy = parameter.getGroupHierarchyNames();
- for(int i=0;i<(int)hierarchy.size()-1;i++){
- address+= "/" + hierarchy[i];
- }
- if(address.length()) address += "/";
- ofxOscMessage msg;
- appendParameter(msg,parameter,address);
- sendMessage(msg);
- }
-}
-
-
-void ofxOscSender::appendParameter( ofxOscBundle & _bundle, const ofAbstractParameter & parameter, string address){
- if(parameter.type()==typeid(ofParameterGroup).name()){
- ofxOscBundle bundle;
- const ofParameterGroup & group = static_cast<const ofParameterGroup &>(parameter);
- for(int i=0;i<group.size();i++){
- const ofAbstractParameter & p = group[i];
- if(p.isSerializable()){
- appendParameter(bundle,p,address+group.getEscapedName()+"/");
- }
- }
- _bundle.addBundle(bundle);
- }else{
- if(parameter.isSerializable()){
- ofxOscMessage msg;
- appendParameter(msg,parameter,address);
- _bundle.addMessage(msg);
- }
- }
-}
-
-void ofxOscSender::appendParameter( ofxOscMessage & msg, const ofAbstractParameter & parameter, string address){
- msg.setAddress(address+parameter.getEscapedName());
- if(parameter.type()==typeid(ofParameter<int>).name()){
- msg.addIntArg(parameter.cast<int>());
- }else if(parameter.type()==typeid(ofParameter<float>).name()){
- msg.addFloatArg(parameter.cast<float>());
- }else if(parameter.type()==typeid(ofParameter<bool>).name()){
- msg.addIntArg(parameter.cast<bool>());
- }else{
- msg.addStringArg(parameter.toString());
- }
-}
-
-void ofxOscSender::appendBundle( ofxOscBundle& bundle, osc::OutboundPacketStream& p )
-{
- // recursively serialise the bundle
- p << osc::BeginBundleImmediate;
- for ( int i=0; i<bundle.getBundleCount(); i++ )
- {
- appendBundle( bundle.getBundleAt( i ), p );
- }
- for ( int i=0; i<bundle.getMessageCount(); i++ )
- {
- appendMessage( bundle.getMessageAt( i ), p );
- }
- p << osc::EndBundle;
-}
-
-void ofxOscSender::appendMessage( ofxOscMessage& message, osc::OutboundPacketStream& p )
-{
- p << osc::BeginMessage( message.getAddress().c_str() );
- for ( int i=0; i< message.getNumArgs(); ++i )
- {
- if ( message.getArgType(i) == OFXOSC_TYPE_INT32 )
- p << message.getArgAsInt32( i );
- else if ( message.getArgType(i) == OFXOSC_TYPE_INT64 )
- p << (osc::int64)message.getArgAsInt64( i );
- else if ( message.getArgType( i ) == OFXOSC_TYPE_FLOAT )
- p << message.getArgAsFloat( i );
- else if ( message.getArgType( i ) == OFXOSC_TYPE_STRING )
- p << message.getArgAsString( i ).c_str();
- else if ( message.getArgType( i ) == OFXOSC_TYPE_BLOB ){
- ofBuffer buff = message.getArgAsBlob(i);
- osc::Blob b(buff.getBinaryBuffer(), (unsigned long)buff.size());
- p << b;
- }else
- {
- ofLogError("ofxOscSender") << "appendMessage(): bad argument type " << message.getArgType( i );
- assert( false );
- }
- }
- p << osc::EndMessage;
-}