[Cppfcplib] r14171 - trunk/apps/CppFCPLib

mkolar at freenetproject.org mkolar at freenetproject.org
Wed Jul 18 08:21:40 UTC 2007


Author: mkolar
Date: 2007-07-18 08:21:39 +0000 (Wed, 18 Jul 2007)
New Revision: 14171

Modified:
   trunk/apps/CppFCPLib/Node.cpp
   trunk/apps/CppFCPLib/NodeThread.cpp
   trunk/apps/CppFCPLib/ServerMessage.h
   trunk/apps/CppFCPLib/todo.txt
Log:
Global commands ( ListPeer, ListPeers... ) don't use __global as a 
job identifier, but an empty string. 



Modified: trunk/apps/CppFCPLib/Node.cpp
===================================================================
--- trunk/apps/CppFCPLib/Node.cpp	2007-07-17 17:48:04 UTC (rev 14170)
+++ trunk/apps/CppFCPLib/Node.cpp	2007-07-18 08:21:39 UTC (rev 14171)
@@ -48,7 +48,7 @@
   m->setField("Name", name);
   m->setField("ExpectedVersion", "2.0");
 
-  JobTicket::Ptr job = JobTicket::factory("__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory("", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "Node constructor: waiting for response to ClientHello");
@@ -73,7 +73,7 @@
 
   m->setField("NodeIdentifier", identifier);
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for Peer message");
@@ -93,7 +93,7 @@
   if (fields.hasField("WithMetadata")) m->setField("WithMetadata", fields.getField("WithMetadata"));
   if (fields.hasField("WithVolatile")) m->setField("WithVolatile", fields.getField("WithVolatile"));
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for EndListPeers message");
@@ -112,7 +112,7 @@
   Message::Ptr m = Message::factory( std::string("ListPeerNotes") );
   m->setField("NodeIdentifier", identifier);
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for EndListPeerNotes message");
@@ -133,7 +133,7 @@
   else
     m->setField("URL", value);
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for Peer message");
@@ -153,7 +153,7 @@
 
   m->setFields(message);
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for Peer message");
@@ -177,7 +177,7 @@
   if (fields.hasField("IsDisabled")) m->setField("IsDisabled", fields.getField("IsDisabled"));
   if (fields.hasField("IsListenOnly")) m->setField("IsListenOnly", fields.getField("IsListenOnly"));
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for Peer message");
@@ -200,7 +200,7 @@
   m->setField("NoteText", noteText);
   m->setField("PeerNoteType", "1");  // TODO: change to peerNoteType once it is used
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for PeerNote message");
@@ -220,7 +220,7 @@
 
   m->setField("NodeIdentifier", identifier);
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for PeerRemoved message");
@@ -241,7 +241,7 @@
   if (fields.hasField("WithPrivate")) m->setField("WithPrivate", fields.getField("WithPrivate"));
   if (fields.hasField("WithVolatile")) m->setField("WithVolatile", fields.getField("WithVolatile"));
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for NodeData message");
@@ -267,7 +267,7 @@
   if (fields.hasField("WithShortDescription")) m->setField("WithShortDescription", fields.getField("WithShortDescription"));
   if (fields.hasField("WithLongDescription")) m->setField("WithLongDescription", fields.getField("WithLongDescription"));
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for ConfigData message");
@@ -286,7 +286,7 @@
   if (m->getHeader() != "ModifyConfig")
     throw std::logic_error("ModifyConfig message expected, " + m->getHeader() + " received");
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for ConfigData message");
@@ -310,7 +310,7 @@
   if (write)
     m->setField("WantWriteDirectory", "true");
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for TestDDAReply");
@@ -332,7 +332,7 @@
   if (readContent != "")
     m->setField("ReadContent", readContent);
 
-  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  JobTicket::Ptr job = JobTicket::factory( "", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "waiting for TestDDAComplete");

Modified: trunk/apps/CppFCPLib/NodeThread.cpp
===================================================================
--- trunk/apps/CppFCPLib/NodeThread.cpp	2007-07-17 17:48:04 UTC (rev 14170)
+++ trunk/apps/CppFCPLib/NodeThread.cpp	2007-07-18 08:21:39 UTC (rev 14171)
@@ -93,16 +93,34 @@
   it = jobs->find(message->getIdOfJob());
   if (it == jobs->end()) {
     log().log(DETAIL, "doMessage : received " + message->toString() + ", cannot find " + message->getIdOfJob() + " in started jobs");
-    return;
+    /// message from global queue or error
+    Message::Ptr m = message->getMessage();
+    if ( m->getField("Identifier") == "" ) { // error
+      log().log(DEBUG, "doMessage : received error message");
+      // TODO: create a mean of passing error messages to client programme
+      return;
+    } else { // global queue, create a job
+      log().log(DEBUG, "doMessage : received message from a global queue");
+      JobTicket::Ptr job = JobTicket::factory(m->getField("Identifier"), m, false);
+      (*jobs)[m->getField("Identifier")] = job;
+      return;
+    }
   }
 
   job = it->second;
 
   if ( message->isLast( job->getCommandName() ) ) {
+    log().log(NOISY, "doMessage : last message for the job");
     job->putResponse(1, message);
     job->putResult();
+
+    if (!job->keep) {
+      log().log(NOISY, "doMessage : job should not be kept, erasing");
+      jobs->erase( it );
+    }
   }
-  else
+  else {
     job->putResponse(0, message);
+  }
 }
 

Modified: trunk/apps/CppFCPLib/ServerMessage.h
===================================================================
--- trunk/apps/CppFCPLib/ServerMessage.h	2007-07-17 17:48:04 UTC (rev 14170)
+++ trunk/apps/CppFCPLib/ServerMessage.h	2007-07-18 08:21:39 UTC (rev 14171)
@@ -74,7 +74,7 @@
 
 struct IdentifierIdOfJob {
   inline std::string operator()(const std::string& id){
-    return  id.size() ? id : "__global";
+    return  id.size() ? id : "";
   }
 };
 

Modified: trunk/apps/CppFCPLib/todo.txt
===================================================================
--- trunk/apps/CppFCPLib/todo.txt	2007-07-17 17:48:04 UTC (rev 14170)
+++ trunk/apps/CppFCPLib/todo.txt	2007-07-18 08:21:39 UTC (rev 14171)
@@ -14,7 +14,6 @@
 *  create examples, tests
 *  what should be status for the callback function
 *  what do you do with close connection message?
-*  update IsLastPeer
 
 Questions
 =========




More information about the Cppfcplib mailing list