From b76e031b30ec872eff90b82f68470449db3b343f Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 30 Mar 2017 18:21:02 +0100 Subject: [PATCH] Experiment with transmitting large UDP massages --- examples/osgcluster/broadcaster.cpp | 2 + examples/osgcluster/osgcluster.cpp | 59 ++++++++++++++++++++++++++--- examples/osgcluster/receiver.cpp | 5 ++- examples/osgcluster/receiver.h | 2 +- 4 files changed, 60 insertions(+), 8 deletions(-) diff --git a/examples/osgcluster/broadcaster.cpp b/examples/osgcluster/broadcaster.cpp index 79e1eeafe..87ff5f94b 100644 --- a/examples/osgcluster/broadcaster.cpp +++ b/examples/osgcluster/broadcaster.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #if !defined (WIN32) || defined(__CYGWIN__) #include @@ -209,6 +210,7 @@ void Broadcaster::sync( void ) #else unsigned int size = sizeof( struct sockaddr_in ); sendto( _so, (const void *)_buffer, _buffer_size, 0, (struct sockaddr *)&saddr, size ); + std::cout<<"sento("<<_buffer<<", "<<_buffer_size<addCommandLineOption("-o ","Offset angle of camera"); // construct the viewer. - osgViewer::Viewer viewer; + osgViewer::Viewer viewer(arguments); // read up the osgcluster specific arguments. @@ -469,6 +469,13 @@ int main( int argc, char **argv ) while (arguments.read("-m")) viewerMode = MASTER; while (arguments.read("-s")) viewerMode = SLAVE; + unsigned int messageSize = 1024; + while (arguments.read("--size", messageSize)) {} + + + bool readWriteFrame = false; + while (arguments.read("--frame")) readWriteFrame = true; + int socketNumber=8100; while (arguments.read("-n",socketNumber)) ; @@ -549,13 +556,40 @@ int main( int argc, char **argv ) // create the windows and run the threads. viewer.realize(); + osg::ref_ptr image; + if (readWriteFrame) + { + osgViewer::Viewer::Windows windows; + viewer.getWindows(windows); + + if (windows.empty()) + { + return 1; + } + unsigned int width = windows.front()->getTraits()->width; + unsigned int height = windows.front()->getTraits()->height; + image = new osg::Image; + + if (windows.front()->getTraits()->alpha) + { + OSG_NOTICE<<"Setting up RGBA osg::Image, width = "<data(), image->getImageStepInBytes()); + bc.sync(); + } + + } break; case(SLAVE): @@ -595,7 +634,9 @@ int main( int argc, char **argv ) rc.setBuffer(scratchPad._startPtr, scratchPad._numBytes); - rc.sync(); + unsigned int readsize = rc.sync(); + + if (readsize) std::cout<data(), image->getImageStepInBytes()); + readsize = rc.sync(); + if (readsize) std::cout<<"image readsize = "<(_buffer_size); } diff --git a/examples/osgcluster/receiver.h b/examples/osgcluster/receiver.h index 0aa3e253d..a8191ca66 100644 --- a/examples/osgcluster/receiver.h +++ b/examples/osgcluster/receiver.h @@ -47,7 +47,7 @@ class Receiver void setPort( const short port ); // Sync does a blocking wait to recieve next message - void sync( void ); + unsigned int sync( void ); private : bool init( void );