[Cppfcplib] r14332 - trunk/apps/CppFCPLib

mkolar at freenetproject.org mkolar at freenetproject.org
Wed Jul 25 09:06:20 UTC 2007


Author: mkolar
Date: 2007-07-25 09:06:20 +0000 (Wed, 25 Jul 2007)
New Revision: 14332

Modified:
   trunk/apps/CppFCPLib/Exceptions.h
   trunk/apps/CppFCPLib/Node.cpp
   trunk/apps/CppFCPLib/NodeThread.cpp
   trunk/apps/CppFCPLib/NodeThread.h
   trunk/apps/CppFCPLib/todo.txt
Log:
*  small improvements in NodeThread



Modified: trunk/apps/CppFCPLib/Exceptions.h
===================================================================
--- trunk/apps/CppFCPLib/Exceptions.h	2007-07-25 08:00:53 UTC (rev 14331)
+++ trunk/apps/CppFCPLib/Exceptions.h	2007-07-25 09:06:20 UTC (rev 14332)
@@ -38,6 +38,12 @@
   CommandTimeout(std::string msg) : std::runtime_error(msg) {}
 };
 
+class ConnectionRefused : public std::runtime_error {
+public:
+  ConnectionRefused(std::string msg) : std::runtime_error(msg) {}
+};
+
+
 }
 
 #endif

Modified: trunk/apps/CppFCPLib/Node.cpp
===================================================================
--- trunk/apps/CppFCPLib/Node.cpp	2007-07-25 08:00:53 UTC (rev 14331)
+++ trunk/apps/CppFCPLib/Node.cpp	2007-07-25 09:06:20 UTC (rev 14332)
@@ -45,7 +45,14 @@
     name = Node::_getUniqueId();
   log().log(DEBUG, "Node started name=" + name + "\n");
 
-  nodeThread = new NodeThread(host, port, clientReqQueue);
+  try
+  {
+    nodeThread = new NodeThread(host, port, clientReqQueue);
+  }
+  catch (boost::system::system_error &e)
+  {
+    throw ConnectionRefused(e.what());
+  }
   executor.execute( nodeThread );
 
   Message::Ptr m = Message::factory(std::string("ClientHello"));

Modified: trunk/apps/CppFCPLib/NodeThread.cpp
===================================================================
--- trunk/apps/CppFCPLib/NodeThread.cpp	2007-07-25 08:00:53 UTC (rev 14331)
+++ trunk/apps/CppFCPLib/NodeThread.cpp	2007-07-25 09:06:20 UTC (rev 14332)
@@ -9,13 +9,12 @@
 
 NodeThread::NodeThread(std::string &host,
                        int port,
-                       ZThread::CountedPtr<TQueue<JobTicket::Ptr> > clientReqQueue_) throw()
+                       JobTicketQueuePtr clientReqQueue_) throw()
   : clientReqQueue(clientReqQueue_),
     host_(host),
     port_(port),
     s(new Server( host_, port_ )),
-    isAlive_(true),
-    jobs( new std::map<std::string, JobTicket::Ptr>() )
+    isAlive_(true)
 {
 }
 
@@ -86,7 +85,7 @@
   log().log(NOISY, "sendClientReq : top");
   if (job->getCommandName() != "WatchGlobal") {
     log().log(NOISY, "sendClientReq : about to add the job to the map");
-    (*jobs)[job->getId()] = job;
+    jobs[job->getId()] = job;
     log().log(NOISY, "sendClientReq : added the job to the map");
   }
 
@@ -100,8 +99,8 @@
   JobTicket::Ptr job;
   std::map<std::string, JobTicket::Ptr>::iterator it;
 
-  it = jobs->find(message->getIdOfJob());
-  if (it == jobs->end()) {
+  it = jobs.find(message->getIdOfJob());
+  if (it == jobs.end()) {
     log().log(DETAIL, "doMessage : received " + message->getMessage()->getHeader() + ", cannot find " + message->getIdOfJob() + " in started jobs");
     /// message from global queue or error
     Message::Ptr m = message->getMessage();
@@ -112,7 +111,7 @@
     } 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;
+      jobs[m->getField("Identifier")] = job;
       return;
     }
   }
@@ -126,7 +125,7 @@
 
     if (!job->keep) {
       log().log(NOISY, "doMessage : job should not be kept, erasing");
-      jobs->erase( it );
+      jobs.erase( it );
     }
   }
   else {

Modified: trunk/apps/CppFCPLib/NodeThread.h
===================================================================
--- trunk/apps/CppFCPLib/NodeThread.h	2007-07-25 08:00:53 UTC (rev 14331)
+++ trunk/apps/CppFCPLib/NodeThread.h	2007-07-25 09:06:20 UTC (rev 14332)
@@ -19,9 +19,10 @@
 class Node;
 
 typedef TQueue< JobTicket::Ptr > JobTicketQueue;
+typedef ZThread::CountedPtr< JobTicketQueue > JobTicketQueuePtr;
 
 class NodeThread : public ZThread::Runnable {
-  ZThread::CountedPtr< JobTicketQueue > clientReqQueue;
+  JobTicketQueuePtr clientReqQueue;
   std::string host_;
   int port_;
   boost::shared_ptr<Server> s;
@@ -29,10 +30,10 @@
   bool isAlive_;
   ZThread::CountedPtr<std::exception> exception;
 
-  ZThread::CountedPtr< std::map<std::string, JobTicket::Ptr > > jobs;
+  std::map<std::string, JobTicket::Ptr > jobs;
 
   friend class Node;
-  NodeThread(std::string &host, int port, ZThread::CountedPtr< JobTicketQueue > clientReqQueue_) throw();
+  NodeThread(std::string &host, int port, JobTicketQueuePtr clientReqQueue_) throw();
 
   void sendClientReq(JobTicket::Ptr job);
   void doMessage(ServerMessage::Ptr message);

Modified: trunk/apps/CppFCPLib/todo.txt
===================================================================
--- trunk/apps/CppFCPLib/todo.txt	2007-07-25 08:00:53 UTC (rev 14331)
+++ trunk/apps/CppFCPLib/todo.txt	2007-07-25 09:06:20 UTC (rev 14332)
@@ -4,7 +4,6 @@
 *  work on logging messages...
 *  peerNoteType is always one? 
 *  how should I read a file from TestDDAReply (binary mode or textual mode)
-*  delete created tmp file in TestDDA
 *  what to do with Error messages without Identifier... queue<Message> in NodeThread? provide callback?
 *  how to watch global queue?
 *  throwing library specific exceptions?
@@ -19,5 +18,3 @@
 =========
 
 *  how to use bug tracking tools and other stuff available for developers
-*  providing confirmation message
-*  what does ListPersistentRequests return?




More information about the Cppfcplib mailing list