source: osgVisual/include/cluster/dataIO_cluster.h @ 88

Last change on this file since 88 was 88, checked in by Torben Dannhauer, 14 years ago

Moved memory leak detection from source file to headerfile. Its still in the class but at least not in the source file.

The leak detection works, but the false positives are not stopped.
Use Linux/Valgrind? to make your final leak detection beyond the easy first approach in MSVC

File size: 4.3 KB
Line 
1#pragma once
2/* -*-c++-*- osgVisual - Copyright (C) 2009-2010 Torben Dannhauer
3 *
4 * This library is based on OpenSceneGraph, open source and may be redistributed and/or modified under
5 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
6 * (at your option) any later version.  The full license is in LICENSE file
7 * included with this distribution, and on the openscenegraph.org website.
8 *
9 * osgVisual requires for some proprietary modules a license from the correspondig manufacturer.
10 * You have to aquire licenses for all used proprietary modules.
11 *
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * OpenSceneGraph Public License for more details.
16*/
17
18#include <osg/referenced>
19#include <osgViewer/Viewer>
20
21#include "dataIO_slot.h"
22
23#include "dataIO_transportContainer.h"
24
25
26namespace osgVisual
27{
28
29/**
30 * \brief This class is the interface definition class for valid cluster implementations.
31 *
32 * This class is an abstract class, thus cannot be instantiated. Derive this class for usage.
33 *
34 * @author Torben Dannhauer
35 * @date  Feb 2010
36 */ 
37class dataIO_cluster :  public osg::Referenced
38{
39        #include <leakDetection.h>
40public:
41        /**
42         * This enum defines the three modi of the cluster engine.
43         */ 
44        enum clustermode {MASTER, SLAVE, STANDALONE};
45
46        /**
47         * \brief Empty constructor.
48         *
49         */ 
50        dataIO_cluster() {}
51
52        /**
53         * \brief Empty destructor
54         *
55         * @return
56         */ 
57        virtual ~dataIO_cluster() {}
58
59        /**
60         * \brief Pure virtual function for initialization. Must be implemented in derived class.
61         *
62         */ 
63        virtual void init( osg::ArgumentParser& arguments_, osgViewer::Viewer* viewer_, clustermode clusterMode_, osgVisual::dataIO_transportContainer* sendContainer_, bool compressionEnabled_, bool asAscii_ ) = 0;
64
65        void enableHardSync(bool hardSync_){hardSync=hardSync_;};
66       
67        bool isHardSyncEnabled(){return hardSync;};
68
69        virtual void shutdown() = 0;
70
71        /**
72         * \brief This function sets the current transportContainer the cluster should send.
73         *
74         * The previous container is removed, if set. (smartpointer, will delete itself.). If the cluster is in slave mode, the send_container is ignored.
75         *
76         * @param sendContainer_ : New container to set.
77         */ 
78        void setSendTransportContainer( osgVisual::dataIO_transportContainer* sendContainer_ ) {sendContainer=sendContainer_;}
79
80        /**
81         * \brief Pure virtual function for sending TO_OBJ values via cluster to slave. Must be implemented in derived class.
82         *
83         * @param viewMatrix_ :  Viewmatrix to send to the Slave.
84         * @return : See derived class.
85         */ 
86        virtual bool sendTO_OBJvaluesToSlaves(osg::Matrixd viewMatrix_) = 0;
87
88        /**
89         * \brief Pure virtual function for reading TO_OBJ values from master. Must be implemented in derived class.
90         *
91         * @return : See derived class.
92         */ 
93        virtual bool readTO_OBJvaluesFromMaster() = 0;
94
95        /**
96         * \brief Pure virtual function for reporting slave as ready to swap. Must be implemented in derived class.
97         *
98         */ 
99        virtual void reportAsReadyToSwap() = 0;
100
101        /**
102         * \brief Pure virtual function for waiting as slave for swap command. Must be implemented in derived class.
103         *
104         * @return : See derived class.
105         */ 
106        virtual bool waitForSwap() = 0;
107
108        /**
109         * \brief Pure virtual function for waiting as master for all slaves reported as ready to swap. Must be implemented in derived class.
110         *
111         * @return : See derived class.
112         */ 
113        virtual bool waitForAllReadyToSwap() = 0;
114
115        /**
116         * \brief Pure virtual function for sending swap command to all slaves. Must be implemented in derived class.
117         *
118         * @return : See derived class.
119         */ 
120        virtual bool sendSwapCommand() = 0;
121
122
123
124protected:
125        osgVisual::dataIO_cluster::clustermode clusterMode;     // This variable only mirrors the variable of dataIO. will be set during initialize.
126        bool initialized;
127        int port;
128        bool hardSync;
129
130        /**
131         * Referenced Pointer to the applications viewer.
132         */ 
133        osg::ref_ptr<osgViewer::Viewer> viewer;
134
135        osg::ref_ptr<osgVisual::dataIO_transportContainer> sendContainer;       // Points to the send container of dataIO.
136        std::string receivedTransportContainer;
137};
138
139}       // END NAMESPACE
Note: See TracBrowser for help on using the repository browser.