[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