Revision: 44662
http://brlcad.svn.sourceforge.net/brlcad/?rev=44662&view=rev
Author: davidloman
Date: 2011-05-24 17:38:16 +0000 (Tue, 24 May 2011)
Log Message:
-----------
Make GeometryService objects able to respond to directory requests. Ensure
NetMsgRouter registration for DirListReq and DirListRes msgs.
Modified Paths:
--------------
geomcore/trunk/include/DataManager.h
geomcore/trunk/src/GS/DataManager.cxx
geomcore/trunk/src/GS/GeometryService.cxx
Modified: geomcore/trunk/include/DataManager.h
===================================================================
--- geomcore/trunk/include/DataManager.h 2011-05-24 17:37:00 UTC (rev
44661)
+++ geomcore/trunk/include/DataManager.h 2011-05-24 17:38:16 UTC (rev
44662)
@@ -32,6 +32,8 @@
#include "IDataSource.h"
#include "GeometryReqMsg.h"
#include "GeometryChunkMsg.h"
+#include "DirListReqMsg.h"
+#include "DirListResMsg.h"
#include "Logger.h"
#include "GSUuid.h"
@@ -42,31 +44,30 @@
class DataManager : public INetMsgHandler
{
public:
- static DataManager* getInstance();
- virtual ~DataManager();
+ static DataManager* getInstance();
+ virtual ~DataManager();
- bool init(Config* c);
+ bool init(Config* c);
+ bool handleNetMsg(NetMsg* msg);
- bool handleNetMsg(NetMsg* msg);
+ std::string getObjectByPath(std::string url);
+ bool setDataSource(IDataSource* source);
- std::string getObjectByPath(std::string url);
-
- bool setDataSource(IDataSource* source);
-
private:
- static DataManager* pInstance;
- DataManager();
+ static DataManager* pInstance;
+ DataManager();
- Logger* log;
+ Logger* log;
- IDataSource* datasource;
+ IDataSource* datasource;
- void handleGeometryReqMsg(GeometryReqMsg* msg);
- void handleGeometryChunkMsg(GeometryChunkMsg* msg);
+ void handleDirListReqMsg(DirListReqMsg* msg);
+ void handleGeometryReqMsg(GeometryReqMsg* msg);
+ void handleGeometryChunkMsg(GeometryChunkMsg* msg);
- /* Disable copy cstr and =operator */
- DataManager(DataManager const&){};
- DataManager& operator=(DataManager const&){};
+ /* Disable copy cstr and =operator */
+ DataManager(DataManager const&){};
+ DataManager& operator=(DataManager const&){};
};
#endif /* __DATAMANAGER_H__ */
Modified: geomcore/trunk/src/GS/DataManager.cxx
===================================================================
--- geomcore/trunk/src/GS/DataManager.cxx 2011-05-24 17:37:00 UTC (rev
44661)
+++ geomcore/trunk/src/GS/DataManager.cxx 2011-05-24 17:38:16 UTC (rev
44662)
@@ -33,23 +33,26 @@
#include <GSThread.h>
-DataManager* DataManager::pInstance = NULL;
+DataManager*
+DataManager::pInstance = NULL;
+
DataManager::DataManager()
{
this->log = Logger::getInstance();
}
-DataManager::~DataManager()
-{
-}
-std::string DataManager::getObjectByPath(std::string url)
+DataManager::~DataManager(){}
+
+std::string
+DataManager::getObjectByPath(std::string url)
{
}
-bool DataManager::setDataSource(IDataSource* source)
+bool
+DataManager::setDataSource(IDataSource* source)
{
if (this->datasource != NULL)
return false;
@@ -57,34 +60,76 @@
this->datasource = source;
}
-bool DataManager::handleNetMsg(NetMsg* msg) {
- uint16_t type = msg->getMsgType();
- switch (type) {
- case GEOMETRYREQ:
- this->handleGeometryReqMsg((GeometryReqMsg*) msg);
- return true;
- case GEOMETRYMANIFEST:
- return true;
- case GEOMETRYCHUNK:
- this->handleGeometryChunkMsg((GeometryChunkMsg*) msg);
- return true;
- }
- return false;
+bool
+
+DataManager::handleNetMsg(NetMsg* msg)
+{
+ uint16_t type = msg->getMsgType();
+ switch (type)
+ {
+ case DIRLISTREQ:
+ {
+ return true;
+ }
+ case DIRLISTRES:
+ {
+ this->log->logINFO("DataManager", "Recv'd a DirectoryList Response?
Odd...");
+ return true;
+ }
+ case GEOMETRYREQ:
+ {
+ this->handleGeometryReqMsg((GeometryReqMsg*) msg);
+ return true;
+ }
+ case GEOMETRYMANIFEST:
+ {
+ this->log->logINFO("DataManager", "Recv'd a GeometryManifest? Odd...");
+ return true;
+ }
+ case GEOMETRYCHUNK:
+ {
+ this->handleGeometryChunkMsg((GeometryChunkMsg*) msg);
+ return true;
+ }
+ }
+ return false;
}
-void DataManager::handleGeometryChunkMsg(GeometryChunkMsg* msg)
+void
+DataManager::handleDirListReqMsg(DirListReqMsg* msg)
{
Portal* origin = msg->getOrigin();
//validate incoming data
if (origin == 0) {
//TODO Figure out how to how to handle NULL Portal
+ log->logERROR("DataManager", "handleDirListReqMsg(): NULL Portal!");
+ return;
+ }
+
+ std::string path = msg->getPath();
+ std::list<std::string> items;
+ this->datasource->getListing(path, &items);
+
+ DirListResMsg response(msg, &items);
+ origin->send(&response);
+}
+
+void
+DataManager::handleGeometryChunkMsg(GeometryChunkMsg* msg)
+{
+ Portal* origin = msg->getOrigin();
+
+ //validate incoming data
+ if (origin == 0) {
+ //TODO Figure out how to how to handle NULL Portal
log->logERROR("DataManager", "handleGeometryChunkMsg(): NULL Portal!");
return;
}
}
-void DataManager::handleGeometryReqMsg(GeometryReqMsg* originalMsg)
+void
+DataManager::handleGeometryReqMsg(GeometryReqMsg* originalMsg)
{
bool recurse = originalMsg->getRecurse();
std::string path = originalMsg->getPath();
@@ -183,13 +228,16 @@
}
DataManager*
-DataManager::getInstance() {
+DataManager::getInstance()
+{
if (!DataManager::pInstance)
+
DataManager::pInstance = new DataManager();
return DataManager::pInstance;
}
-bool DataManager::init(Config* c) {
+bool
+DataManager::init(Config* c) {
std::string repoType = c->getConfigValue("RepoType");
if (repoType.length() == 0) {
log->logERROR("DataManager", "Config File does not contain a 'RepoType'
parameter");
Modified: geomcore/trunk/src/GS/GeometryService.cxx
===================================================================
--- geomcore/trunk/src/GS/GeometryService.cxx 2011-05-24 17:37:00 UTC (rev
44661)
+++ geomcore/trunk/src/GS/GeometryService.cxx 2011-05-24 17:38:16 UTC (rev
44662)
@@ -67,6 +67,9 @@
router->registerType(CMD_SHUTDOWN, this);
+ router->registerType(DIRLISTREQ, DataManager::getInstance());
+ router->registerType(DIRLISTRES, DataManager::getInstance());
+
router->registerType(GEOMETRYREQ, DataManager::getInstance());
router->registerType(GEOMETRYCHUNK, DataManager::getInstance());
router->registerType(GEOMETRYMANIFEST, DataManager::getInstance());
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
http://p.sf.net/sfu/quest-d2dcopy1
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits