Changeset 67


Ignore:
Timestamp:
Jul 11, 2010, 1:31:29 PM (14 years ago)
Author:
Torben Dannhauer
Message:
 
Location:
osgVisual
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • osgVisual/include/cluster/dataIO_cluster.h

    r59 r67  
    117117
    118118protected:
     119        osgVisual::dataIO_cluster::clustermode clusterMode;     // This variable only mirrors the variable of dataIO. willbe set during initialize.
     120        bool initialized;
     121        int port;
     122
    119123        osg::ref_ptr<osgVisual::dataIO_transportContainer> sendContainer;
    120124};
  • osgVisual/include/cluster/dataIO_clusterAsioTcpIostream.h

    r62 r67  
    6060
    6161private:
    62         osgVisual::dataIO_cluster::clustermode clusterMode;
    63         bool initialized;
    64         int port;       // Defaults to 5678
    65        
    6662        /**
    6763         * This list contains the connections to communicate with in each frame.
  • osgVisual/include/cluster/dataIO_clusterENet.h

    r66 r67  
    5252private:
    5353        osg::ref_ptr<osgVisual::dataIO_clusterENet_implementation> enet_impl;
     54        std::string serverToConnect;
     55        osgVisual::dataIO_cluster::clustermode clusterMode;
    5456};
    5557
  • osgVisual/include/core/visual_core.h

    r57 r67  
    9898
    9999        void addManipulators();
    100         void processCommandlineArguments();
    101100        bool loadTerrain(osg::ArgumentParser& arguments_);
    102101        bool checkCommandlineArgumentsForFinalErrors();
  • osgVisual/src/cluster/dataIO_clusterENet.cpp

    r66 r67  
    2222{
    2323        OSG_NOTIFY( osg::ALWAYS ) << "clusterENet constructed" << std::endl;
     24        serverToConnect = "unknown";
    2425}
     26
    2527
    2628dataIO_clusterENet::~dataIO_clusterENet(void)
     
    2931}
    3032
     33
    3134void dataIO_clusterENet::init( osg::ArgumentParser& arguments_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool compressionEnabled_, bool asAscii_ )
    3235{
    3336        OSG_NOTIFY( osg::ALWAYS ) << "clusterENet init();" << std::endl;
    3437       
     38        // Configure the clustermode
     39        clusterMode = clusterMode_;
     40
     41        // store sendContainer
    3542        sendContainer = sendContainer_;
    3643       
    3744        // create ENet implementation object.
    3845        enet_impl = new osgVisual::dataIO_clusterENet_implementation();
     46
     47        // initialize ENet implementation
     48        if(clusterMode == MASTER)
     49        {
     50                enet_impl->init(dataIO_clusterENet_implementation::SERVER, port);
     51
     52                initialized = true;
     53        }
     54        if(clusterMode == SLAVE)
     55        {
     56                // Get the server IP
     57                if(!arguments_.read("--server",serverToConnect, port))
     58                {
     59                        // try server discovery
     60                        //discoverServer(serverToConnect,port);
     61                        /* todo : implement a udp server discovery based on ASIO */
     62                }
     63
     64                // Init ENet
     65                enet_impl->init(dataIO_clusterENet_implementation::CLIENT, port);
     66
     67                // Connect to server with 5 retries:
     68                bool connected = false;
     69                for(int i=0; i<5; i++)
     70                {
     71                        std::cout << "Try to connect to server " << serverToConnect << std::endl;
     72                        if( enet_impl->connectTo( serverToConnect.c_str(), 5000 ) )
     73                        {
     74                                // Connect successful.
     75                                initialized = true;
     76                                connected = true;
     77                                break;
     78                        }
     79                }       // For END
     80                if(!connected)
     81                {
     82                        initialized = false;
     83                        std::cout << "Failed to establish connection to server " << serverToConnect << std::endl;
     84                }
     85        }       // IF SLAVE END
    3986}
     87
    4088
    4189void dataIO_clusterENet::shutdown()
     
    4391        OSG_NOTIFY( osg::ALWAYS ) << "clusterENet shutdown();" << std::endl;
    4492}
     93
    4594
    4695bool dataIO_clusterENet::sendTO_OBJvaluesToSlaves()
     
    51100}
    52101
     102
    53103bool dataIO_clusterENet::readTO_OBJvaluesFromMaster()
    54104{
     
    57107        return true;
    58108}
     109
    59110
    60111void dataIO_clusterENet::reportAsReadyToSwap()
     
    70121}
    71122
     123
    72124bool dataIO_clusterENet::waitForAllReadyToSwap()
    73125{
     
    77129}
    78130
     131
    79132bool dataIO_clusterENet::sendSwapCommand()
    80133{
  • osgVisual/src/cluster/dataIO_clusterENet_implementation.cpp

    r66 r67  
    99        std::cout << "Instantiated server class# "<< activeENetInstances << std::endl;
    1010        serverInitialized = false;
     11        host = NULL;
    1112        // Start ENet
    1213        if (activeENetInstances++ == 0)
     
    2526dataIO_clusterENet_implementation::~dataIO_clusterENet_implementation()
    2627{
    27         // Delete Host Object
    28         enet_host_destroy(host);
     28        // Delete Host Object if instantiated
     29        if(host)
     30                enet_host_destroy(host);
    2931
    3032        // Stop ENet if it is the last element.
  • osgVisual/src/core/visual_core.cpp

    r58 r67  
    5656        OSG_NOTIFY( osg::ALWAYS ) << "Initialize visual_core..." << std::endl;
    5757
    58         // Process commandline arguments for configuration parameter
    59         processCommandlineArguments();
    60        
    6158        // Add manipulators for user interaction
    6259        addManipulators();
     
    250247}
    251248
    252 void visual_core::processCommandlineArguments()
    253 {
    254         std::cout << "Processing general commandline arguments..." << std::endl;
    255 
     249
     250bool visual_core::checkCommandlineArgumentsForFinalErrors()
     251{
    256252        // Setup Application Usage
    257253        arguments.getApplicationUsage()->setApplicationName(arguments.getApplicationName());
     
    275271        viewer->setDone(true);
    276272    }
    277 }
    278 
    279 bool visual_core::checkCommandlineArgumentsForFinalErrors()
    280 {
     273
    281274         // any option left unread are converted into errors to write out later.
    282275    arguments.reportRemainingOptionsAsUnrecognized();
  • osgVisual/src/dataIO/visual_dataIO.cpp

    r65 r67  
    5656                OSG_NOTIFY( osg::ALWAYS ) << "Configure osgVisual as SLAVE" << std::endl;
    5757                clusterMode = osgVisual::dataIO_cluster::SLAVE;
    58                 // Slave only recieves container, therefor set this Pointer null.
    59                 slotContainer = NULL;
     58                slotContainer = NULL;   // Slave only recieves container, therefor set this Pointer null.
    6059        }
    6160        else
Note: See TracChangeset for help on using the changeset viewer.