Coder Social home page Coder Social logo

oscpack's Introduction

oscpack -- Open Sound Control packet manipulation library
A simple C++ library for packing and unpacking OSC packets.
http://www.rossbencina.com/code/oscpack

Copyright (c) 2004-2013 Ross Bencina <[email protected]>


Oscpack is simply a set of C++ classes for packing and unpacking OSC packets. 
Oscpack includes a minimal set of UDP networking classes for Windows and POSIX.
The networking classes are sufficient for writing many OSC applications and servers, 
but you are encouraged to use another networking framework if it better suits your needs. 
Oscpack is not an OSC application framework. It doesn't include infrastructure for 
constructing or routing OSC namespaces, just classes for easily constructing, 
sending, receiving and parsing OSC packets. The library should also be easy to use 
for other transport methods (e.g. serial).

The key goals of the oscpack library are:

    - Be a simple and complete implementation of OSC
    - Be portable to a wide variety of platforms
    - Allow easy development of robust OSC applications 
      (for example it should be impossible to crash a server 
      by sending it malformed packets, and difficult to create 
      malformed packets.)

Here's a quick run down of the key files:

osc/OscReceivedElements -- classes for parsing a packet
osc/OscPrintRecievedElements -- iostream << operators for printing packet elements
osc/OscOutboundPacketStream -- a class for packing messages into a packet
osc/OscPacketListener -- base class for listening to OSC packets on a UdpSocket
ip/IpEndpointName -- class that represents an IP address and port number
ip/UdpSocket -- classes for UDP transmission and listening sockets
tests/OscUnitTests -- unit test program for the OSC modules
tests/OscSendTests -- examples of how to send messages
tests/OscReceiveTest -- example of how to receive the messages sent by OSCSendTests
examples/OscDump -- a program that prints received OSC packets
examples/SimpleSend -- a minimal program to send an OSC message
examples/SimpleReceive -- a minimal program to receive an OSC message

osc/ contains all of the OSC related classes
ip/ contains the networking classes

ip/windows contains the Windows implementation of the networking classes
ip/posix contains the POSIX implementation of the networking classes


Building
--------

The idea is that you will embed this source code in your projects as you 
see fit. The Makefile has an install rule for building a shared library and 
installing headers in usr/local. It can also build a static library.
There is a CMakeLists.txt for building with cmake.

Makefile builds
...............

The Makefile works for Linux and Max OS X. It should also work on other platforms
that have make. Just run:

$ make

You can run "make install" if you like.


Cmake builds
............

There is a CMakeLists.txt file which has been tested with cmake on 
Windows and Linux. It should work on other platforms too.
For example, to generate a Visual Studio 10 project, run cmake 
like this:

> cmake -G "Visual Studio 10"

Run cmake without any parameters to get a list of available generators.


Mingw build batch file
......................

For Windows there is a batch file for doing a simple test build with 
MinGW gcc called make.MinGW32.bat. This will build the test executables 
and oscdump in ./bin and run the unit tests.


Note:

In some rare instances you may need to edit the Makefile or 
osc/OscHostEndianness.h to configure oscpack for the endianness of your 
processor (see the comments at the top of the Makefile for details).



Verification test
-----------------

To run the unit tests:

$ ./bin/OscUnitTests

To run the send and receive tests. Open two terminals. In one run:

$ ./bin/OscReceiveTest

Then in the other terminal run:

$./bin/OscSendTests


You should see an indication that the messages were received 
in the first terminal.

Note that OscSendTests intentionally sends some unexpected
message parameters to test exception handling in the receiver.
You will see some "error while parsing message" messages printed. 

You can use ./bin/OscDump to print out OSC messages received
from any program, including the test programs.


--


If you fix anything or write a set of TCP send/receive classes 
please consider sending me a patch. My email address is 
[email protected]. Thanks :)

For more information about Open Sound Control, see:
http://opensoundcontrol.org/

Thanks to Till Bovermann for helping with POSIX networking code and
Mac compatibility, and to Martin Kaltenbrunner and the rest of the
reacTable team for giving me a reason to finish this library. Thanks
to Merlijn Blaauw for reviewing the interfaces. Thanks to Xavier Oliver
for additional help with Linux builds and POSIX implementation details.

Portions developed at the Music Technology Group, Audiovisual Institute, 
University Pompeu Fabra, Barcelona, during my stay as a visiting
researcher, November 2004 - September 2005.

Thanks to Syneme at the University of Calgary for providing financial 
support for the 1.1.0 update, December 2012 - March 2013.

See the file CHANGES for information about recent updates.

See the file LICENSE for information about distributing and using this code.

###

oscpack's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

oscpack's Issues

Throw osc::OutOfBufferMemoryException in release mode (Win32 VS2010 CL)

Platform :

Windows 7 / CMAKE GUI 2.8.12.2 generated VS2010 express 32bit project.

When the project is set to Release/MinSizeRel/RelWithDebInf

Whenever any message is added after osc::BeginMessage("..."), the error will 
throw.
eg:
osc::OutboundPacketStream p( buffer, OUTPUT_BUFFER_SIZE );
p << osc::BeginMessage( "/test" ) << osc::EndMessage;  // OK
p << osc::BeginMessage( "/test" ) << osc::Nil << osc::EndMessage;  // throw 
error.

Also warning C4702: unreachable code during compilation, in 
OutboundPacketStream << operator overload.
Seems any code after "CheckForAvailableArgumentSpace(X);" won't run.

The warning can be surpressed by turning off the optimization, but the error 
will still throw.

Could I know the direction how to debug it (I'm not an expert in C++, so need 
some advices).

Thanks.

Original issue reported on code.google.com by [email protected] on 13 May 2014 at 5:03

Code assumes 4-character tabs

Another tiny quibble of no great importance.  :-)

Tabs and spaces are used interchangeably, and it's clear that the assumption is 
that one tab is equal to 4 spaces. 

This doesn't work on github, where tabs are 8 characters, nor on my personal 
editor environment, where it appears that tabs are 2 characters.

Best solution - get rid of all embedded tab characters, as they are problematic 
when creating code that will be viewed on the web.

Original issue reported on code.google.com by [email protected] on 10 Jun 2013 at 5:58

Patch from SuperCollider

Seems like SC is not using the latest version of OSCpack so the attached patch 
is a bit garbled, but it does include support for arrays.


Original issue reported on code.google.com by ross.bencina on 29 Oct 2012 at 10:36

Attachments:

EXC_BAD_ACCESS in OscOutboundPacketStream.cpp

What steps will reproduce the problem?
1. Open a new Command line Tool project on XCode 4.7
2. Compile the oscpack library (ip and osc folders)
3. Run the SimpleSend.cpp program

What is the expected output? What do you see instead?
It should send an osc message to SimpleReceive.cpp (on another command line 
project). Build works well but when i do Run, there is a crash in 
OscOutboundPacketStream.cpp at line 191-192:

uint32 *previousElementSizePtr =
                (uint32*)(data_ + *reinterpret_cast<uint32*>(elementSizePtr_));

The problem is: Thread 1: EXC_BAD_ACCESS (code=13, address=0x0)

This crash happens also in OscOutboundPacketStream.cpp at line 324:

EndElement( messageCursor_ );



What version of the product are you using? On what operating system?
I'm using the latest version of oscpack (1.0.2) on Xcode 4.7 on Mac OSX Lion 
10.7.5

Please provide any additional information below.
The compilation of SimpleReceive.cpp works perfectly (Build & Run). No bugs.
Also, address=0x0 means 0 in hex so that should mean that the pointer is NULL 
or something... Thanks for your help.

Original issue reported on code.google.com by [email protected] on 15 Feb 2013 at 9:54

Crash on << osc::EndBundle;

What steps will reproduce the problem?
1. Compile with VST or AU plugin as non-debug with Xcode 4.4.1
2. Load in REAPER for MAC OSX
3. Send Bundle of OSC Messages

What is the expected output? What do you see instead?
I expect the messages to be sent (works fine for a JUCE-based VST-Host, works 
for Cubase, works for Pro tools). When using Reaper on OSX 10.7.5 and when 
compiled with Xcode 4.4.1 for release, it will crash on a call to 
osc::OutboundPacketStream::operator<<(EndBundle). Detailed error message see 
below

What version of the product are you using? On what operating system?
The latest that can be downloaded from this googlecode-project. It crashes only 
when compiled for release (debug compiles run fine!)

Please provide any additional information below.

Okay, now detailed: I write code for a VST plugin with OSC support. I use this 
snippet of code to pack an OSC bundle:
[CODE]
char * buffer = new char[OUTPUT_BUFFER_SIZE];
            osc::OutboundPacketStream p( buffer, OUTPUT_BUFFER_SIZE );

            p << osc::BeginBundleImmediate
                << osc::BeginMessage( "/sys/port" ) 
                << (int) m_socket.get()->getLocalPort() << osc::EndMessage
                << osc::BeginMessage( "/sys/host" ) 
                << "localhost"<< osc::EndMessage
                << osc::BeginMessage( "/sys/prefix" ) 
                << "40h" << osc::EndMessage
                << osc::BeginMessage( "/40h/grid/led/all")
                << 0 << osc::EndMessage
                << osc::EndBundle;

[/CODE]

It runs fine on many hosts on OSX 10.7.5. On REAPER it crashes on the last line 
with a EXC_BAD_ACCESS (SIGSEGV). When build as debug, it won't crash... the 
crash only appears when build as release.

Here is the crash report:


Process:         REAPER [19628]
Path:            /Applications/REAPER64.app/Contents/MacOS/REAPER
Identifier:      com.cockos.reaper
Version:         ??? (4.31)
Code Type:       X86-64 (Native)
Parent Process:  launchd [259]

Date/Time:       2012-12-03 11:10:30.865 +0100
OS Version:      Mac OS X 10.7.5 (11G63)
Report Version:  9

Interval Since Last Report:          590957 sec
Crashes Since Last Report:           41
Per-App Interval Since Last Report:  3405 sec
Per-App Crashes Since Last Report:   6

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 0000000100000000-0000000100773000 [ 7628K] r-x/rwx SM=COW  /Applications/REAPER64.app/Contents/MacOS/REAPER

Application Specific Information:
objc[19628]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.johannesneumann-net.r7      0x00000001165859e6 
osc::OutboundPacketStream::EndElement(char*) + 20
1   com.johannesneumann-net.r7      0x0000000116585d2c 
osc::OutboundPacketStream::operator<<(osc::BundleTerminator const&) + 34

[...]

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000104bcd000  rbx: 0x00007fff5fbfe0c0  rcx: 0x6830343004bcd000  rdx: 0x0000000000000000
  rdi: 0x00007fff5fbfe0c0  rsi: 0x0000000104bcd080  rbp: 0x00007fff5fbfdfd0  rsp: 0x00007fff5fbfdfd0
   r8: 0x0000000100a57600   r9: 0x00000000000008f0  r10: 0x0000000000000000  r11: 0x0000000104bcd07a
  r12: 0x000000011a604800  r13: 0x00007fff5fbfe108  r14: 0x000000011a604770  r15: 0x000000011a60d390
  rip: 0x00000001165859e6  rfl: 0x0000000000010206  cr2: 0x000000011658608a
Logical CPU: 6

 [...]

Original issue reported on code.google.com by [email protected] on 3 Dec 2012 at 10:16

Provide a way to get the automatically-selected port number

I started with the code in SimpleReceive.cpp, and instead of specifying port 
7000, I changed the port specification to IpEndpointName::ANY_PORT, so that the 
system automatically chooses an available port.

However, I couldn't find a way to retrieve the actual port number assigned by 
the system.

The attached patch provides a UdpSocket::Port() method, which can be called 
after Bind() to retrieve the port.

Original issue reported on code.google.com by smokris on 4 Jan 2014 at 9:31

Attachments:

Can't compile on Ubuntu 10.10

What steps will reproduce the problem?
1. Download 1.0.2
2. run make

What version of the product are you using? On what operating system?
Using 1.0.2 on Ubuntu 10.10


Please provide any additional information below.
This is the output that I get after running make:

g++ -Wall -O3 -I./ -DOSC_HOST_LITTLE_ENDIAN   -c -o tests/OscUnitTests.o 
tests/OscUnitTests.cpp
tests/OscUnitTests.cpp: In function ‘void osc::assertEqual_(const T*, const 
T*, const char*, const char*, const char*, int) [with T = char]’:
tests/OscUnitTests.cpp:82: error: ‘strcmp’ was not declared in this scope
tests/OscUnitTests.cpp: In function ‘char* osc::NewMessageBuffer(const char*, 
long unsigned int)’:
tests/OscUnitTests.cpp:102: error: ‘memcpy’ was not declared in this scope
tests/OscUnitTests.cpp: In function ‘void osc::test1()’:
tests/OscUnitTests.cpp:116: error: ‘strcmp’ was not declared in this scope
tests/OscUnitTests.cpp: In function ‘void osc::test3()’:
tests/OscUnitTests.cpp:313: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:322: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:322: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:323: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:323: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:324: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:324: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:326: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:326: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:327: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:327: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:329: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:329: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:331: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:331: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:333: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:333: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:335: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:335: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:337: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:337: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:339: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:339: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:341: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:341: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:343: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:343: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:348: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:361: error: ‘memcmp’ was not declared in this scope
tests/OscUnitTests.cpp:365: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:365: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:367: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:367: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:373: error: ‘memset’ was not declared in this scope
make: *** [tests/OscUnitTests.o] Error 1

Original issue reported on code.google.com by [email protected] on 8 Mar 2011 at 11:46

64bit types defined as long long are incorrect in 64bit platforms

long long doesn't have a defined size only double of a long which in 64bit 
platforms seems to be 128.

both osc::int64 and osc::uint64 should be defined as int64_t and uint64_t 
otherwise their size is incorrect in some platforms and might lead to errors 
when reading them from other software.

see also: https://github.com/openframeworks/openFrameworks/issues/3859


Original issue reported on code.google.com by [email protected] on 22 May 2015 at 7:29

I had to include <cstring> in OscPrintReceivedElements.h

When trying to do the "sudo make install" in Ubuntu 12.04 LTS an error appears. 
The version is oscpack_1_0_2.

osc/OscPrintReceivedElements.cpp:118:49: error: ‘strlen’ was not declared 
in this scope
osc/OscPrintReceivedElements.cpp:120:39: error: ‘strcpy’ was not declared 
in this scope

Seems that adding the line #include <cstring> in OscPrintReceivedElements.h 
resolves the problem and oscpack is installed with success.


Original issue reported on code.google.com by [email protected] on 27 Mar 2013 at 1:40

Create a "one file" compilation of the library (one header file, one source file)

It's been suggested that a one-file distribution would be nice.

If I had time I would write a Python script to do it (so it can be run on any 
platform).

Here's what I think the script would need to look like:

For each source file it would need to strip of the licence header and add a 
#file directive with the correct file and line information

For each line containing #include it would need to comment out the #include and 
either:
    for system includes, add it to a system include list if it wasn't already there
    for oscpack includes, just skip it

The files need to be pasted together in order

The final assembly looks like this:

/////////////
description block
do not modify this file, it is generated from source
/////////////
licence block
/////////////
concatenated portable sources
/////////////
#include oscpackonefile.h
#ifdef win32 etc
windows platform includes
concatenated windows oscpack sources
#else
posix includes
concatenated posix oscpack sources
#endif


Maybe put the version, generation date and svn revision in the header block.

Original issue reported on code.google.com by ross.bencina on 4 Mar 2013 at 11:41

Implement support for multicast address

What steps will reproduce the problem?
1. Try to bind UdpListeningReceiveSocket to a multicast address and send 
messages to the multicast group. It won't work.


Suggested fix: change the Bind method in UdpSocket.cpp to:

    void Bind( const IpEndpointName& localEndpoint )
    {
        struct sockaddr_in bindSockAddr;
        SockaddrFromIpEndpointName( bindSockAddr, localEndpoint );

        if (localEndpoint.IsMulticastAddress()) {
            group.imr_interface.s_addr = htonl(INADDR_ANY);
            group.imr_multiaddr.s_addr = bindSockAddr.sin_addr.s_addr;
            if (setsockopt(socket_, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&group, sizeof(group)) < 0) {
                throw std::runtime_error("error adding multicast group\n");
                close(socket_);
                exit(1);
            }
        }

        if (bind(socket_, (struct sockaddr *)&bindSockAddr, sizeof(bindSockAddr)) < 0) {
            throw std::runtime_error("unable to bind udp socket\n");
        }

        isBound_ = true;
    }

Original issue reported on code.google.com by [email protected] on 30 May 2014 at 4:39

Can't compile with VS2010 Sp1 x86_64

Hi,

the current revision r60 doesn't compile with VS2010 Sp1 x86_64.
The problem can be fixed as it was done in r54.

--- a/osc/OscOutboundPacketStream.h Mon Aug 15 15:57:18 2011 +0200
+++ b/osc/OscOutboundPacketStream.h Mon Aug 15 16:05:28 2011 +0200
@@ -96,7 +96,7 @@
     OutboundPacketStream& operator<<( const InfinitumType& rhs );
     OutboundPacketStream& operator<<( int32 rhs );

-#ifndef __x86_64__
+#if !(defined(__x86_64__) || defined(_M_X64))
     OutboundPacketStream& operator<<( int rhs )
             { *this << (int32)rhs; return *this; }
 #endif

Original issue reported on code.google.com by [email protected] on 15 Aug 2011 at 2:24

make install issues on Mac OS X Lion (10.7.2)

What steps will reproduce the problem?
1. running `sudo make install`

What is the expected output? What do you see instead?

Successful installation.  However, I get two errors.  First, before I touch the 
Makefile:

$ sudo make install
g++ -shared -Wl,-soname,liboscpack.so -o liboscpack.so.1.0.2 
./ip/IpEndpointName.o ./ip/posix/NetworkingUtils.o ./ip/posix/UdpSocket.o 
./osc/OscOutboundPacketStream.o ./osc/OscPrintReceivedElements.o 
./osc/OscReceivedElements.o ./osc/OscTypes.o -lc
ld: unknown option: -soname
collect2: ld returned 1 exit status
make: *** [liboscpack.so.1.0.2] Error 1

This can be resolved using this tip (unrelated to oscpack): 
http://stackoverflow.com/a/8424297/1111289

However, then a second issue comes up...which I don't think is an issue, 
'ldconfig' just has to be removed from Makefile:

$ sudo make install
g++ -shared -Wl,-install_name,liboscpack.so -o liboscpack.so.1.0.2 
./ip/IpEndpointName.o ./ip/posix/NetworkingUtils.o ./ip/posix/UdpSocket.o 
./osc/OscOutboundPacketStream.o ./osc/OscPrintReceivedElements.o 
./osc/OscReceivedElements.o ./osc/OscTypes.o -lc
SUCCESS! oscpack has been installed in /usr/local/lib and 
/usr/local/include/ospack/
now doing ldconfig...
make: ldconfig: No such file or directory
make: *** [install] Error 1

...if I understand ldconfig's function properly, it's just meant to make 
symbolic links to lib files, which apparently is already taken care of on Mac 
OS X.

What version of the product are you using? On what operating system?

oscpack 1.0.2
GNU Make 3.81
i686-apple-darwin11-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) 
(LLVM build 2336.1.00)
Darwin MN11111001.local 11.2.0 Darwin Kernel Version 11.2.0: Tue Aug  9 
20:54:00 PDT 2011; root:xnu-1699.24.8~1/RELEASE_X86_64 x86_64

Please provide any additional information below.

Anything else you need drop me a line.

Original issue reported on code.google.com by [email protected] on 22 Feb 2012 at 3:58

Naming of Array support functions (remaining: IsArrayBegin IsArrayEnd)

Revision 90 (r90) is a version of a patch by Tim Blechmann to support 
SuperCollider arrays.

https://code.google.com/p/oscpack/source/detail?r=90

I have already tweaked the naming of symbols and functions relative to Tim's 
version. 

* The sentinel variables used to begin and end streaming an array have been 
renamed BeginArray and EndArray to harmonise with BeginMessage etc. Usage: 

ps << BeginMessage("/msg") << BeginArray << 1 << 2 << 3 << EndArray << 
EndMessage;

* The function to count the number of elements in the array is called 
ArrayItemCount(), this is consistent with ReceivedBundle::ElementCount(). I am 
not particularly fond of the fact that ArrayItemCount is O(n). Maybe it would 
be better to name it ComputeArrayItemCount().

* The tag constants are called ARRAY_START_TYPE_TAG and ARRAY_END_TYPE_TAG, 
perhaps ARRAY_START_TYPE_TAG should be called ARRAY_BEGIN_TYPE_TAG (another 
option is ARRAY_OPEN_TYPE_TAG and ARRAY_CLOSE_TYPE_TAG)

* We currently have IsArrayStart() and IsArrayEnd()

I'm not very convinced about having ~Start~ and ~Begin~. The meanings and usage 
are slightly different but I would prefer more consistency.

Also note that the other Is* functions in this context concern argument values 
but array begin and end are not values.

Another option:

ARRAY_BEGIN_MARKER_TYPE_TAG 
ARRAY_END_MARKER_TYPE_TAG
IsArrayBeginMarker()
IsArrayEndMarker()

Usually I would try to lift terminology from the OSC spec but I don't think it 
mentions arrays.

Thoughts?

Original issue reported on code.google.com by ross.bencina on 4 Mar 2013 at 9:01

1.1.0-RC1 changes parameter type in AsBlob API on 64 bit -- maybe rollback?

Tim Blechmann writes:

just updated the supernova sources for this version of oscpack.

the AsBlob API has changed: the size argument has changed from unsigned long & 
to osc_bundle_element_size_t &, which is int32.
this caused a compile failure on linux/x86_64. maybe you can still
provide the old API or mention this in the changelog?


Original issue reported on code.google.com by ross.bencina on 7 Mar 2013 at 4:43

Assertion Failed problem

What steps will reproduce the problem?
1. I compiled with win8 64bit and mingw latest version x86x64 after that I 
tried to run the SimpleSend exe file and here is the error


C:\Users\M\oscpack_1_1_0\bin>SimpleSend.exe
Assertion failed!
Program: C:\Users\M\oscpack_1_1_0\bin\SimpleSend.exe
File: osc\OscOutboundPacketStream.cpp, Line 168
Expression: sizeof(osc::int64) == 8
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

how can I solve this issue?
another question is I want to use OCSPacket on a code that developed in VC++ 
2008... May I know how can I make a lib file that would be compatible with vc++ 
2008?

thanks
Majid

Original issue reported on code.google.com by [email protected] on 2 Oct 2014 at 8:46

Can't build on Linux

I can't compile with 1.0.1, 1.0.2 or with svn+cmake.

With svn/cmake I get:

cmake .

(ok)

oscpack/ make
Scanning dependencies of target OSC
[ 10%] Building CXX object CMakeFiles/OSC.dir/ip/IpEndpointName.cpp.o
[ 20%] Building CXX object CMakeFiles/OSC.dir/ip/posix/NetworkingUtils.cpp.o
[ 30%] Building CXX object CMakeFiles/OSC.dir/ip/posix/UdpSocket.cpp.o
[ 40%] Building CXX object CMakeFiles/OSC.dir/osc/OscPrintReceivedElements.cpp.o
[ 50%] Building CXX object CMakeFiles/OSC.dir/osc/OscReceivedElements.cpp.o
In file included from 
/home/smoge/teste/oscpack/osc/OscReceivedElements.cpp:34:0:
/home/smoge/teste/oscpack/osc/OscHostEndianness.h:70:2: error: #error please 
edit OSCHostEndianness.h to configure endianness
make[2]: ** [CMakeFiles/OSC.dir/osc/OscReceivedElements.cpp.o] Erro 1
make[1]: ** [CMakeFiles/OSC.dir/all] Erro 2
make: ** [all] Erro 2

What version of the product are you using? On what operating system?

ArchLinux (up to date)


Original issue reported on code.google.com by [email protected] on 1 Feb 2011 at 6:41

Easy fix to suppress unused parameter warnings.

Totally picayune, but thought you might want to know.

Example in the code is here:  
https://code.google.com/p/oscpack/source/browse/trunk/examples/SimpleSend.cpp#16

If you have parameters to e.g. main that you never use, you can avoid warnings 
under all C++ compilers that I'm aware of by simply not naming those 
parameters, like this:

    int main(int, char*[]) {
      // ...

Thanks for what so far appears to be an elegant and high-quality library.

Original issue reported on code.google.com by [email protected] on 10 Jun 2013 at 5:51

Provide a way to get the local endpoint for a connected socket

- What steps will reproduce the problem?

1. Create a UdpTransmitSocket and connect it to a remote endpoint, but don't 
call Bind().
2. Call LocalEndpointFor(), passing the (connected) remote endpoint, and you 
will get an assert because the code assumes the socket should be bound.

- What is the expected output? What do you see instead?

I would expect no assert, and to get the local endpoint.
The goal is to be able to create a UdpReceiveSocket sharing the same local port 
as another UdpTransmitSocket (which is perfectly valid).  However, in order to 
do this, you must be able to determine out what local endpoint (port) to use 
when binding your receiver.

- What version of the product are you using? On what operating system?

OS X 10.9.4, Xcode 5.1.1, oscpack 1.1.0 (the latest version).  I'm using it via 
openFrameworks (the ofxOsc add-on).

- Please provide any additional information below.

I spoke to Ross about this, and he provided me with some rough code to try out. 
 It adds a new method, UdpSocket::LocalEndpointForConnectedRemoteEndpoint(), as 
well as optimizing UdpSocket::LocalEndpointFor(), in the case where you're 
requesting the local endpoint for an already-connected remote endpoint.

I'm attaching a patch that implements this new functionality.  Sorry, it's from 
git, from within the openFrameworks repository...But it should show the 
required changes to three files: ip/UdpSocket.h, ip/posix/UdpSocket.cpp and 
ip/win32/UdpSocketWin.cpp.

Original issue reported on code.google.com by [email protected] on 26 Aug 2014 at 3:18

Attachments:

Compiler version

What steps will reproduce the problem?
1. Just compile with the standard makefile
2.
3.

What is the expected output? What do you see instead?
No error. I get an error when using g++-4.4 or 4.3, had to use 4.1. 


What version of the product are you using? On what operating system?
Product: 1.0.2
OS: Linux craftpc31 2.6.32-25-generic #45-Ubuntu SMP Sat Oct 16 19:48:22 UTC 
2010 i686 GNU/Linux



Please provide any additional information below.
Got all sorts of errors such as:
make CXX=g++-4.4
g++-4.4 -Wall -O3 -I./ -DOSC_HOST_LITTLE_ENDIAN   -c -o tests/OscUnitTests.o 
tests/OscUnitTests.cpp
tests/OscUnitTests.cpp: In function ‘void osc::assertEqual_(const T*, const 
T*, const char*, const char*, const char*, int) [with T = char]’:
tests/OscUnitTests.cpp:82: error: ‘strcmp’ was not declared in this scope
tests/OscUnitTests.cpp: In function ‘char* osc::NewMessageBuffer(const char*, 
long unsigned int)’:
tests/OscUnitTests.cpp:102: error: ‘memcpy’ was not declared in this scope
tests/OscUnitTests.cpp: In function ‘void osc::test1()’:
tests/OscUnitTests.cpp:116: error: ‘strcmp’ was not declared in this scope
tests/OscUnitTests.cpp: In function ‘void osc::test3()’:
tests/OscUnitTests.cpp:313: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:322: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:322: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:323: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:323: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:324: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:324: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:326: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:326: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:327: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:327: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:329: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:329: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:331: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:331: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:333: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:333: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:335: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:335: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:337: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:337: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:339: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:339: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:341: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:341: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:343: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:343: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:348: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:361: error: ‘memcmp’ was not declared in this scope
tests/OscUnitTests.cpp:365: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:365: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:367: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:367: error: ‘memset’ was not declared in this scope
tests/OscUnitTests.cpp:373: error: ‘memset’ was not declared in this scope

Original issue reported on code.google.com by [email protected] on 1 Nov 2010 at 5:09

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.