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

Reply via email to