[Cppfcplib] r14160 - trunk/apps/CppFCPLib

mkolar at freenetproject.org mkolar at freenetproject.org
Tue Jul 17 15:00:03 UTC 2007


Author: mkolar
Date: 2007-07-17 15:00:02 +0000 (Tue, 17 Jul 2007)
New Revision: 14160

Modified:
   trunk/apps/CppFCPLib/FCPResult.h
   trunk/apps/CppFCPLib/JobTicket.h
   trunk/apps/CppFCPLib/Message.h
   trunk/apps/CppFCPLib/Node.cpp
   trunk/apps/CppFCPLib/Node.h
   trunk/apps/CppFCPLib/ServerMessage.h
Log:
* ListPeer added
* encapsulated std::vector<Message::Ptr>
* encapsulated std::vector<ServerMessage::Ptr>



Modified: trunk/apps/CppFCPLib/FCPResult.h
===================================================================
--- trunk/apps/CppFCPLib/FCPResult.h	2007-07-17 10:37:37 UTC (rev 14159)
+++ trunk/apps/CppFCPLib/FCPResult.h	2007-07-17 15:00:02 UTC (rev 14160)
@@ -64,7 +64,7 @@
   Message::Ptr
   operator()( Response &resp )
   {
-    return Message::Ptr( resp.responses.front()->getMessage() );
+    return Message::Ptr( resp.front()->getMessage() );
   }
 };
 
@@ -72,27 +72,27 @@
   ServerMessage::Ptr
   operator()( Response &resp )
   {
-    return ServerMessage::Ptr( resp.responses.back() );
+    return ServerMessage::Ptr( resp.back() );
   }
 };
 
 struct VectorConverter {
-  std::vector<Message::Ptr>
+  MessagePtrContainer
   operator()( Response &resp )
   {
-    std::vector<Message::Ptr> ret( resp.responses.size() ) ;
-    transform( resp.responses.begin(), resp.responses.end(), ret.begin(), GetMessage() );
+    MessagePtrContainer ret( resp.size() ) ;
+    transform( resp.begin(), resp.end(), ret.begin(), GetMessage() );
     return ret;
   }
 };
 
 struct VectorWithoutLastConverter {
-  std::vector<Message::Ptr>
+  MessagePtrContainer
   operator()( Response &resp )
   {
-    int numToCopy = resp.responses.size() - 1;
-    std::vector<Message::Ptr> ret = std::vector<Message::Ptr>( numToCopy );
-    transform( resp.responses.begin(), resp.responses.begin() + numToCopy, ret.begin(), GetMessage() );
+    int numToCopy = resp.size() - 1;
+    MessagePtrContainer ret = MessagePtrContainer( numToCopy );
+    transform( resp.begin(), resp.begin() + numToCopy, ret.begin(), GetMessage() );
     return ret;
   }
 };
@@ -101,7 +101,7 @@
   TestDDAReplyResponse::Ptr
   operator()( Response &resp )
   {
-    return TestDDAReplyResponse::Ptr( new TestDDAReplyResponse(resp.responses.front()->getMessage()) );
+    return TestDDAReplyResponse::Ptr( new TestDDAReplyResponse(resp.front()->getMessage()) );
   }
 };
 

Modified: trunk/apps/CppFCPLib/JobTicket.h
===================================================================
--- trunk/apps/CppFCPLib/JobTicket.h	2007-07-17 10:37:37 UTC (rev 14159)
+++ trunk/apps/CppFCPLib/JobTicket.h	2007-07-17 15:00:02 UTC (rev 14160)
@@ -20,18 +20,11 @@
 
 class NodeThread;
 
-class Response {
-public:
-  Response( std::vector<ServerMessage::Ptr> &r) : responses(r) {}
-
-  std::vector<ServerMessage::Ptr> responses;
-};
-
 class JobTicket {
   std::string id;
   Message::Ptr cmd;
 
-  std::vector<ServerMessage::Ptr> nodeResponse;
+  Response nodeResponse;
 
   bool keep;
 

Modified: trunk/apps/CppFCPLib/Message.h
===================================================================
--- trunk/apps/CppFCPLib/Message.h	2007-07-17 10:37:37 UTC (rev 14159)
+++ trunk/apps/CppFCPLib/Message.h	2007-07-17 15:00:02 UTC (rev 14160)
@@ -5,6 +5,7 @@
 
 #include <string>
 #include <map>
+#include <vector>
 #include <ostream>
 #include <istream>
 #include <boost/shared_ptr.hpp>
@@ -59,6 +60,8 @@
   friend class Message;
 };
 
+typedef std::vector<Message::Ptr> MessagePtrContainer;
+
 }
 
 #endif

Modified: trunk/apps/CppFCPLib/Node.cpp
===================================================================
--- trunk/apps/CppFCPLib/Node.cpp	2007-07-17 10:37:37 UTC (rev 14159)
+++ trunk/apps/CppFCPLib/Node.cpp	2007-07-17 15:00:02 UTC (rev 14160)
@@ -48,7 +48,7 @@
   m->setField("Name", name);
   m->setField("ExpectedVersion", "2.0");
 
-  JobTicket::Ptr job = JobTicket::factory("__hello", m, false);
+  JobTicket::Ptr job = JobTicket::factory("__global", m, false);
   clientReqQueue->put(job);
 
   log().log(DEBUG, "Node constructor: waiting for response to ClientHello");
@@ -66,7 +66,27 @@
   executor.interrupt();
 }
 
-std::vector<Message::Ptr>
+Message::Ptr
+Node::listPeer(const std::string & identifier)
+{
+  Message::Ptr m = Message::factory( std::string("ListPeer") );
+
+  m->setField("NodeIdentifier", identifier);
+
+  JobTicket::Ptr job = JobTicket::factory( "__global", m, false);
+  clientReqQueue->put(job);
+
+  log().log(DEBUG, "waiting for Peer message");
+  job->wait(globalCommandsTimeout);
+
+  Response resp = job->getResponse();
+  // ProtocolError or UnknownNodeIdentifier
+  checkProtocolError(resp); // throws
+
+  return createResult<Message::Ptr, MessageConverter>( resp );
+}
+
+MessagePtrContainer
 Node::listPeers(const AdditionalFields& fields)
 {
   Message::Ptr m = Message::factory( std::string("ListPeers") );
@@ -83,10 +103,10 @@
   // NOTE: error should never happen here...
   checkProtocolError(resp); // throws
 
-  return createResult<std::vector<Message::Ptr>, VectorWithoutLastConverter>( resp );
+  return createResult<MessagePtrContainer, VectorWithoutLastConverter>( resp );
 }
 
-std::vector<Message::Ptr>
+MessagePtrContainer
 Node::listPeerNotes(const std::string& identifier)
 {
   Message::Ptr m = Message::factory( std::string("ListPeerNotes") );
@@ -102,7 +122,7 @@
   // ProtocolError or UnknownNodeIdentifier
   checkProtocolError(resp); // throws
 
-  return createResult<std::vector<Message::Ptr>, VectorWithoutLastConverter>( resp );
+  return createResult<MessagePtrContainer, VectorWithoutLastConverter>( resp );
 }
 
 Message::Ptr
@@ -210,7 +230,6 @@
   // ProtocolError or UnknownNodeIdentifier
   checkProtocolError(resp); // throws
 
-
   return createResult<Message::Ptr, MessageConverter>( resp );
 }
 

Modified: trunk/apps/CppFCPLib/Node.h
===================================================================
--- trunk/apps/CppFCPLib/Node.h	2007-07-17 10:37:37 UTC (rev 14159)
+++ trunk/apps/CppFCPLib/Node.h	2007-07-17 15:00:02 UTC (rev 14160)
@@ -48,8 +48,9 @@
 
   const Message::Ptr getNodeHelloMessage() const;
 
-  std::vector<Message::Ptr> listPeers(const AdditionalFields& = AdditionalFields());
-  std::vector<Message::Ptr> listPeerNotes(const std::string&);
+  Message::Ptr listPeer(const std::string &);
+  MessagePtrContainer listPeers(const AdditionalFields& = AdditionalFields());
+  MessagePtrContainer listPeerNotes(const std::string&);
   Message::Ptr addPeer(const std::string &, bool isURL);
   Message::Ptr addPeer(const std::map<std::string, std::string> &message);
   Message::Ptr modifyPeer(const std::string &, const AdditionalFields& = AdditionalFields());

Modified: trunk/apps/CppFCPLib/ServerMessage.h
===================================================================
--- trunk/apps/CppFCPLib/ServerMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
+++ trunk/apps/CppFCPLib/ServerMessage.h	2007-07-17 15:00:02 UTC (rev 14160)
@@ -27,6 +27,7 @@
   const Message::Ptr getMessage() const { return message; }
 };
 
+typedef std::vector<ServerMessage::Ptr> Response;
 
 
 template<bool isLast>
@@ -44,7 +45,11 @@
       return false;
     else if (cmd == "ModifyPeer")
       return true;
-    //TODO: this is not all
+    else if (cmd == "AddPeer")
+      return true;
+    else if (cmd == "ListPeer")
+      return true;
+    //TODO: check if this is all
     throw std::runtime_error("Unknown command");
   }
 };
@@ -66,11 +71,7 @@
     return "__global";
   }
 };
-struct HelloIdOfJob {
-  inline std::string operator()(const std::string& id){
-    return "__hello";
-  }
-};
+
 struct IdentifierIdOfJob {
   inline std::string operator()(const std::string& id){
     return  id.size() ? id : "__global";
@@ -93,8 +94,8 @@
   friend class ServerMessage;
 };
 
-typedef class ServerMessageT<HelloIdOfJob, IsLastTrue, false> NodeHelloMessage;
-typedef class ServerMessageT<HelloIdOfJob, IsLastTrue, true> CloseConnectionDuplicateNameMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> NodeHelloMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, true> CloseConnectionDuplicateNameMessage;
 
 typedef class ServerMessageT<GlobalIdOfJob, IsLastPeer, false> PeerMessage;
 typedef class ServerMessageT<GlobalIdOfJob, IsLastPeerNote, false> PeerNoteMessage;




More information about the Cppfcplib mailing list