Factory for Connections, see. More...
#include <OSGConnectionFactory.h>
Public Types | |
types | |
| typedef std::map< std::string, ConnectionType * > | TypeMap |
Public Member Functions | |
interface | |
| GroupConnection * | createGroup (const std::string &name) |
| PointConnection * | createPoint (const std::string &name) |
Dump | |
| void | dump (void) |
Static Public Member Functions | |
access | |
| static ConnectionFactory & | the () |
Protected Member Functions | |
Constructors | |
| ConnectionFactory (void) | |
Destructor | |
| virtual | ~ConnectionFactory (void) |
Type information | |
| void | addGroupType (ConnectionType *type) |
| void | addPointType (ConnectionType *type) |
| void | subGroupType (ConnectionType *type) |
| void | subPointType (ConnectionType *type) |
Protected Attributes | |
fields | |
| TypeMap | _groupMap |
| TypeMap | _pointMap |
Private Member Functions | |
| ConnectionFactory (const ConnectionFactory &source) | |
| prohibit default function (move to 'public' if needed) | |
| void | operator= (const ConnectionFactory &source) |
| prohibit default function (move to 'public' if needed) | |
Static Private Attributes | |
| static ConnectionFactory * | _the = NULL |
Friends | |
| class | ConnectionType |
The ConnectionFactory knows all types of connections by name. A new connection object could be crated by calling
Connection *c = ConnectionFactory::the().create("Multicast"); if(!c) { SLOG << "Unknown connection:"; }
Each connection type must be registered to the factory. This is done by static initialisation. The following example shows registration of the Multicast connection.
ConnectionType MulticastConnection::_type(&MulticastConnection::create, "Multicast");
Definition at line 55 of file OSGConnectionFactory.h.
| typedef std::map<std::string,ConnectionType *> osg::ConnectionFactory::TypeMap |
Definition at line 64 of file OSGConnectionFactory.h.
| ConnectionFactory::ConnectionFactory | ( | void | ) | [protected] |
Constructor documentation
Definition at line 84 of file OSGConnectionFactory.cpp.
Referenced by the().
| ConnectionFactory::~ConnectionFactory | ( | void | ) | [protected, virtual] |
| osg::ConnectionFactory::ConnectionFactory | ( | const ConnectionFactory & | source | ) | [private] |
| ConnectionFactory & ConnectionFactory::the | ( | void | ) | [static] |
get singelton factory
Definition at line 126 of file OSGConnectionFactory.cpp.
References _the, and ConnectionFactory().
Referenced by osg::ClusterServer::acceptClient(), osg::ClusterNetwork::connectAllGroupToPoint(), osg::ClusterNetwork::connectAllPointToPoint(), osg::ConnectionType::ConnectionType(), osg::ClusterWindow::init(), and osg::ConnectionType::~ConnectionType().
00127 { 00128 if(_the == NULL) 00129 _the=new ConnectionFactory(); 00130 return *_the; 00131 }
| GroupConnection * ConnectionFactory::createGroup | ( | const std::string & | name | ) |
create group connection by name
Definition at line 104 of file OSGConnectionFactory.cpp.
References _groupMap.
Referenced by osg::ClusterNetwork::connectAllGroupToPoint(), osg::ClusterNetwork::connectAllPointToPoint(), and osg::ClusterWindow::init().
| PointConnection * ConnectionFactory::createPoint | ( | const std::string & | name | ) |
create point connection by name
Definition at line 115 of file OSGConnectionFactory.cpp.
References _pointMap.
Referenced by osg::ClusterNetwork::connectAllGroupToPoint(), and osg::ClusterNetwork::connectAllPointToPoint().
| void osg::ConnectionFactory::dump | ( | void | ) |
| void ConnectionFactory::addGroupType | ( | ConnectionType * | type | ) | [protected] |
add new group type
Definition at line 138 of file OSGConnectionFactory.cpp.
References _groupMap, osg::ConnectionType::getName(), and SINFO.
Referenced by osg::ConnectionType::ConnectionType().
| void ConnectionFactory::addPointType | ( | ConnectionType * | type | ) | [protected] |
add new point type
Definition at line 146 of file OSGConnectionFactory.cpp.
References _pointMap, osg::ConnectionType::getName(), and SINFO.
Referenced by osg::ConnectionType::ConnectionType().
| void ConnectionFactory::subGroupType | ( | ConnectionType * | type | ) | [protected] |
remove group type
Definition at line 167 of file OSGConnectionFactory.cpp.
References _groupMap, and osg::ConnectionType::getName().
Referenced by osg::ConnectionType::~ConnectionType().
00168 { 00169 TypeMap::iterator i=_groupMap.find(type->getName()); 00170 if(i != _groupMap.end() && i->second == type) 00171 _groupMap.erase(i); 00172 // At this point, the Log is already destroyed 00173 //SINFO << "Group connection type " << type->getName() 00174 // << " removed" << std::endl; 00175 }
| void ConnectionFactory::subPointType | ( | ConnectionType * | type | ) | [protected] |
remove point type
Definition at line 154 of file OSGConnectionFactory.cpp.
References _pointMap, and osg::ConnectionType::getName().
Referenced by osg::ConnectionType::~ConnectionType().
00155 { 00156 TypeMap::iterator i=_pointMap.find(type->getName()); 00157 if(i != _pointMap.end() && i->second == type) 00158 _pointMap.erase(i); 00159 // At this point, the Log is already destroyed 00160 //SINFO << "Point connection type " << type->getName() 00161 // << " removed" << std::endl; 00162 00163 }
| void osg::ConnectionFactory::operator= | ( | const ConnectionFactory & | source | ) | [private] |
friend class ConnectionType [friend] |
Definition at line 134 of file OSGConnectionFactory.h.
TypeMap osg::ConnectionFactory::_groupMap [protected] |
Definition at line 96 of file OSGConnectionFactory.h.
Referenced by addGroupType(), createGroup(), and subGroupType().
TypeMap osg::ConnectionFactory::_pointMap [protected] |
Definition at line 97 of file OSGConnectionFactory.h.
Referenced by addPointType(), createPoint(), and subPointType().
ConnectionFactory * ConnectionFactory::_the = NULL [static, private] |
Definition at line 127 of file OSGConnectionFactory.h.
Referenced by the().
1.6.1