Changeset 67 for osgVisual/src/cluster


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

Legend:

Unmodified
Added
Removed
  • 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.
Note: See TracChangeset for help on using the changeset viewer.