fix content server
btw, ccn exception when prefix discvoery enabled at home
diff --git a/src/content-server.cc b/src/content-server.cc
index a5aaf31..fa5a2bb 100644
--- a/src/content-server.cc
+++ b/src/content-server.cc
@@ -59,13 +59,9 @@
void
ContentServer::registerPrefix(const Name &prefix)
{
- Name actionPrefix = Name (prefix)(m_deviceName)("action")(m_sharedFolderName);
- Name filePrefix = Name (prefix)(m_deviceName)("file");
- m_ccnx->setInterestFilter (actionPrefix, bind(&ContentServer::serve_Action, this, prefix, _1));
- m_ccnx->setInterestFilter (filePrefix, bind(&ContentServer::serve_File, this, prefix, _1));
+ m_ccnx->setInterestFilter (prefix, bind(&ContentServer::serve, this, prefix, _1));
- _LOG_DEBUG (">> content server: register " << actionPrefix);
- _LOG_DEBUG (">> content server: register " << filePrefix);
+ _LOG_DEBUG (">> content server: register " << prefix);
ScopedLock lock (m_mutex);
m_prefixes.insert(prefix);
@@ -74,19 +70,36 @@
void
ContentServer::deregisterPrefix (const Name &prefix)
{
- Name actionPrefix = Name (prefix)(m_deviceName)("action")(m_sharedFolderName);
- Name filePrefix = Name (prefix)(m_deviceName)("file");
- m_ccnx->clearInterestFilter(actionPrefix);
- m_ccnx->clearInterestFilter(filePrefix);
+ m_ccnx->clearInterestFilter(prefix);
- _LOG_DEBUG ("<< content server: deregister " << actionPrefix);
- _LOG_DEBUG ("<< content server: deregister " << filePrefix);
+ _LOG_DEBUG ("<< content server: deregister " << prefix);
ScopedLock lock (m_mutex);
m_prefixes.erase (prefix);
}
void
+ContentServer::serve(Name forwardingHint, const Name &interest)
+{
+ // /forwardingHint/device-name/action/shared-folder/action-seq
+ // /forwardingHint/device-name/file/file-hash/segment
+
+ Name name = interest.getPartialName(forwardingHint.size());
+ if (name.size() > 3)
+ {
+ string type = name.getCompAsString(name.size() - 3);
+ if (type == "action")
+ {
+ serve_Action (forwardingHint, interest);
+ }
+ else if (type == "file")
+ {
+ serve_File (forwardingHint, interest);
+ }
+ }
+}
+
+void
ContentServer::serve_Action (Name forwardingHint, const Name &interest)
{
_LOG_DEBUG (">> content server serving, forwardHing " << forwardingHint << ", interest " << interest);
diff --git a/src/content-server.h b/src/content-server.h
index 946170d..47640d9 100644
--- a/src/content-server.h
+++ b/src/content-server.h
@@ -46,6 +46,9 @@
private:
void
+ serve (Ccnx::Name forwardingHint, const Ccnx::Name &interest);
+
+ void
serve_Action (Ccnx::Name forwardingHint, const Ccnx::Name &interest);
void
diff --git a/test/test-dispatcher.cc b/test/test-dispatcher.cc
index 838f8d7..6f619df 100644
--- a/test/test-dispatcher.cc
+++ b/test/test-dispatcher.cc
@@ -71,9 +71,9 @@
cleanDir(dir1);
cleanDir(dir2);
- Dispatcher d1(user1, folder, dir1, ccnx1);
+ Dispatcher d1(user1, folder, dir1, ccnx1, false);
usleep(100);
- Dispatcher d2(user2, folder, dir2, ccnx2);
+ Dispatcher d2(user2, folder, dir2, ccnx2, false);
usleep(14900000);