[Cppfcplib] r14155 - trunk/apps/CppFCPLib
mkolar at freenetproject.org
mkolar at freenetproject.org
Mon Jul 16 10:46:15 UTC 2007
Author: mkolar
Date: 2007-07-16 10:46:15 +0000 (Mon, 16 Jul 2007)
New Revision: 14155
Removed:
trunk/apps/CppFCPLib/FCPClientHelloResult.h
trunk/apps/CppFCPLib/FCPErrorResponse.h
trunk/apps/CppFCPLib/FCPMultiMessageResponse.h
trunk/apps/CppFCPLib/FCPOneMessageResponse.h
trunk/apps/CppFCPLib/FCPResult.cpp
trunk/apps/CppFCPLib/FCPTestDDAReplyResponse.h
trunk/apps/CppFCPLib/FCPTestDDAResponse.h
Modified:
trunk/apps/CppFCPLib/FCPResult.h
trunk/apps/CppFCPLib/JobTicket.h
trunk/apps/CppFCPLib/Node.cpp
trunk/apps/CppFCPLib/Node.h
trunk/apps/CppFCPLib/NodeThread.h
trunk/apps/CppFCPLib/main.cpp
trunk/apps/CppFCPLib/todo.txt
Log:
results are rewritten
Deleted: trunk/apps/CppFCPLib/FCPClientHelloResult.h
===================================================================
--- trunk/apps/CppFCPLib/FCPClientHelloResult.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPClientHelloResult.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,24 +0,0 @@
-#ifndef FCPCLIENTHELLORESULT_H__
-#define FCPCLIENTHELLORESULT_H__
-
-#include <vector>
-#include <memory>
-#include "Message.h"
-#include "FCPResult.h"
-
-namespace FCPLib {
-
-class FCPClientHelloResult : public FCPResult {
- Message::MessagePtr message;
-
- FCPClientHelloResult(Message::MessagePtr message_) : message(message_) {}
-public:
- typedef boost::shared_ptr<FCPClientHelloResult> FCPClientHelloResultPtr;
-
- const Message::MessagePtr getMessage() const { return message; }
-
- friend class FCPResult;
-};
-}
-
-#endif // FCPCLIENTHELLORESULT_H__
Deleted: trunk/apps/CppFCPLib/FCPErrorResponse.h
===================================================================
--- trunk/apps/CppFCPLib/FCPErrorResponse.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPErrorResponse.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,32 +0,0 @@
-#ifndef FCPERRORRESPONSE_H_INCLUDED
-#define FCPERRORRESPONSE_H_INCLUDED
-
-#include <vector>
-#include <memory>
-#include "Message.h"
-#include "FCPResult.h"
-
-
-namespace FCPLib {
-
-
-class FCPErrorResponse : public FCPResult {
-
-protected:
- std::vector<ServerMessage::Ptr> messages;
-
- FCPErrorResponse( const std::vector<ServerMessage::Ptr>& nodeResponse)
- : messages(nodeResponse)
- {
- }
-public:
- typedef boost::shared_ptr<FCPErrorResponse> Ptr;
-
- const std::vector<ServerMessage::Ptr>& getMessages() const {
- return messages;
- }
- friend class FCPResult;
-};
-}
-
-#endif // FCPERRORRESPONSE_H_INCLUDED
Deleted: trunk/apps/CppFCPLib/FCPMultiMessageResponse.h
===================================================================
--- trunk/apps/CppFCPLib/FCPMultiMessageResponse.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPMultiMessageResponse.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,34 +0,0 @@
-#ifndef FCPMULTIMESSAGERESPONSE_H__
-#define FCPMULTIMESSAGERESPONSE_H__
-
-
-#include <vector>
-#include <memory>
-#include "Message.h"
-#include "FCPResult.h"
-
-
-namespace FCPLib {
-
-
-class FCPMultiMessageResponse : public FCPResult {
-
-protected:
- std::vector<ServerMessage::Ptr> messages;
-
- FCPMultiMessageResponse( const std::vector<ServerMessage::Ptr> &nodeResponse, bool removeLast = true ) {
- messages = nodeResponse;
- if (removeLast)
- messages.pop_back();
- }
-public:
- typedef boost::shared_ptr<FCPMultiMessageResponse> Ptr;
-
- const std::vector<ServerMessage::Ptr>& getMessages() const {
- return messages;
- }
- friend class FCPResult;
-};
-}
-
-#endif // FCPMULTIMESSAGERESPONSE_H__
Deleted: trunk/apps/CppFCPLib/FCPOneMessageResponse.h
===================================================================
--- trunk/apps/CppFCPLib/FCPOneMessageResponse.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPOneMessageResponse.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,24 +0,0 @@
-#ifndef FCPONEMESSAGERESPONSE_H__
-#define FCPONEMESSAGERESPONSE_H__
-
-#include <vector>
-#include <memory>
-#include "Message.h"
-#include "FCPResult.h"
-
-namespace FCPLib {
-
-class FCPOneMessageResponse : public FCPResult {
-protected:
- Message::Ptr message;
- FCPOneMessageResponse(Message::Ptr message_) : message(message_) {}
-public:
- typedef boost::shared_ptr<FCPOneMessageResponse> Ptr;
-
- const Message::Ptr getMessage() const { return message; }
-
- friend class FCPResult;
-};
-}
-
-#endif // FCPONEMESSAGERESPONSE_H__
Deleted: trunk/apps/CppFCPLib/FCPResult.cpp
===================================================================
--- trunk/apps/CppFCPLib/FCPResult.cpp 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPResult.cpp 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,62 +0,0 @@
-#include "FCPResult.h"
-#include <stdexcept>
-
-
-#include "FCPMultiMessageResponse.h"
-#include "FCPOneMessageResponse.h"
-#include "FCPTestDDAReplyResponse.h"
-#include "FCPErrorResponse.h"
-
-using namespace FCPLib;
-
-FCPResult::Ptr
-FCPResult::factory(const std::string cmd, Response &nodeResponse)
-{
- // check for error
- if (nodeResponse.responses.back()->isError())
- return FCPErrorResponse::Ptr( new FCPErrorResponse(nodeResponse.responses) );
-
- if (cmd == "ClientHello") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "ListPeers") {
- return FCPMultiMessageResponse::Ptr( new FCPMultiMessageResponse(nodeResponse.responses) );
- } else
- if (cmd == "ListPeerNotes") {
- return FCPMultiMessageResponse::Ptr( new FCPMultiMessageResponse(nodeResponse.responses) );
- } else
- if (cmd == "ModifyPeer") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "ModifyPeerNote") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "RemovePeer") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "GetNode") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "GetConfig") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "ModifyConfig") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "TestDDARequest") {
- return FCPTestDDAReplyResponse::Ptr( new FCPTestDDAReplyResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "TestDDAResponse") {
- return FCPOneMessageResponse::Ptr( new FCPTestDDAReplyResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "GenerateSSK") {
- return FCPOneMessageResponse::Ptr( new FCPOneMessageResponse( (*nodeResponse.responses.begin())->getMessage() ));
- } else
- if (cmd == "ClientPut") {
- return FCPMultiMessageResponse::Ptr( new FCPMultiMessageResponse(nodeResponse.responses, false) );
- }
-
- throw std::runtime_error("Not implemented : " + cmd);
-}
-
-FCPResult::~FCPResult() {}
Modified: trunk/apps/CppFCPLib/FCPResult.h
===================================================================
--- trunk/apps/CppFCPLib/FCPResult.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPResult.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -9,43 +9,106 @@
namespace FCPLib {
-class FCPResult {
+class TestDDAReplyResponse {
+ Message::Ptr message;
+
+ TestDDAReplyResponse(Message::Ptr message_) : message(message_) {}
+
+ const std::string& getField(std::string field) const {
+ const std::string& ret = message->getField(field);
+ if (ret == "")
+ throw std::logic_error("TestDDAReply does not contain " + field + " field.");
+ return ret;
+ }
public:
- typedef boost::shared_ptr<FCPResult> Ptr;
+ typedef boost::shared_ptr<TestDDAReplyResponse> Ptr;
- static Ptr factory(const std::string cmd, Response &nodeResponse);
- virtual ~FCPResult() = 0;
+ const std::string getDirectory() const throw(std::logic_error){
+ return message->getField("Directory");
+ }
+ const std::string getReadFilename() const throw(std::logic_error){
+ return getField("ReadFilename");
+ }
+ const std::string getWriteFilename() const throw(std::logic_error){
+ return getField("WriteFilename");
+ }
+ const std::string getContent () const throw(std::logic_error){
+ return getField("ContentToWrite");
+ }
+
+ friend struct TestDDAReplyConverter;
};
+class TestDDAResponse {
+public:
+ TestDDAResponse(std::string dir, bool read, bool write)
+ : directory(dir),
+ readDirectory(read),
+ writeDirectory(write)
+ {}
+ std::string directory;
+ bool readDirectory;
+ bool writeDirectory;
+};
-//Message::Ptr getMessage(ServerMessage::Ptr sm) {
-// return Message::Ptr( sm->getMessage() );
-//}
+///////////
Message::Ptr
-MessageConverter( Response &resp )
-{
- return Message::Ptr( resp.responses.front()->getMessage() );
+getMessage(ServerMessage::Ptr sm) {
+ return Message::Ptr( sm->getMessage() );
}
-ServerMessage::Ptr
-LastMessage( Response &resp )
-{
- return ServerMessage::Ptr( resp.responses.back() );
-}
+struct MessageConverter {
+ Message::Ptr
+ operator()( Response &resp )
+ {
+ return Message::Ptr( resp.responses.front()->getMessage() );
+ }
+};
-//std::vector<Message::Ptr>
-//VectorConverter( Response &resp )
-//{
-// std::vector<Message::Ptr> ret = std::vector<Message::Ptr>( nodeResponse.size() );
-// std::transform(nodeResponse.begin(), nodeResponse.end(), ret.begin(), getMessage);
-// return ret;
-//}
+struct LastMessageConverter {
+ ServerMessage::Ptr
+ operator()( Response &resp )
+ {
+ return ServerMessage::Ptr( resp.responses.back() );
+ }
+};
-template<class ReturnT, class ConverterT >
+struct VectorConverter {
+ std::vector<Message::Ptr>
+ operator()( Response &resp )
+ {
+ std::vector<Message::Ptr> ret = std::vector<Message::Ptr>( resp.responses.size() );
+ std::transform(resp.responses.begin(), resp.responses.end(), ret.begin(), getMessage);
+ return ret;
+ }
+};
+
+struct VectorWithoutLastConverter {
+ std::vector<Message::Ptr>
+ operator()( Response &resp )
+ {
+ int numToCopy = resp.responses.size();
+ std::vector<Message::Ptr> ret = std::vector<Message::Ptr>( numToCopy );
+ std::transform(resp.responses.begin(), resp.responses.begin() + numToCopy, ret.begin(), getMessage);
+ return ret;
+ }
+};
+
+struct TestDDAReplyConverter {
+ TestDDAReplyResponse::Ptr
+ operator()( Response &resp )
+ {
+ return TestDDAReplyResponse::Ptr( new TestDDAReplyResponse(resp.responses.front()->getMessage()) );
+ }
+};
+
+//////////
+
+template<typename ReturnT, typename ConverterT>
ReturnT createResult( Response &resp )
{
- return ConverterT( resp );
+ return ConverterT()( resp );
}
}
Deleted: trunk/apps/CppFCPLib/FCPTestDDAReplyResponse.h
===================================================================
--- trunk/apps/CppFCPLib/FCPTestDDAReplyResponse.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPTestDDAReplyResponse.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,39 +0,0 @@
-#ifndef FCPTESTDDAREPLYRESPONSE_H_INCLUDED
-#define FCPTESTDDAREPLYRESPONSE_H_INCLUDED
-
-#include "FCPOneMessageResponse.h"
-#include <exception>
-
-namespace FCPLib {
-
-class FCPTestDDAReplyResponse : public FCPOneMessageResponse {
- FCPTestDDAReplyResponse(Message::Ptr message_) : FCPOneMessageResponse(message_) {}
-
- const std::string& getField(std::string field) const {
- const std::string& ret = message->getField(field);
- if (ret == "")
- throw std::logic_error("TestDDAReply does not contain " + field + " field.");
- return ret;
- }
-public:
- typedef boost::shared_ptr<FCPTestDDAReplyResponse> Ptr;
-
- const std::string getDirectory() const throw(std::logic_error){
- return message->getField("Directory");
- }
- const std::string getReadFilename() const throw(std::logic_error){
- return getField("ReadFilename");
- }
- const std::string getWriteFilename() const throw(std::logic_error){
- return getField("WriteFilename");
- }
- const std::string getContent () const throw(std::logic_error){
- return getField("ContentToWrite");
- }
-
- friend class FCPResult;
-};
-
-}
-
-#endif // FCPTESTDDAREPLYRESPONSE_H_INCLUDED
Deleted: trunk/apps/CppFCPLib/FCPTestDDAResponse.h
===================================================================
--- trunk/apps/CppFCPLib/FCPTestDDAResponse.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/FCPTestDDAResponse.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,22 +0,0 @@
-#ifndef FCPTESTDDARESPONSE_H_INCLUDED
-#define FCPTESTDDARESPONSE_H_INCLUDED
-
-#include <string>
-
-namespace FCPLib {
-
-class FCPTestDDAResponse {
-public:
- FCPTestDDAResponse(std::string dir, bool read, bool write)
- : directory(dir),
- readDirectory(read),
- writeDirectory(write)
- {}
- std::string directory;
- bool readDirectory;
- bool writeDirectory;
-};
-
-}
-
-#endif // FCPTESTDDARESPONSE_H_INCLUDED
Modified: trunk/apps/CppFCPLib/JobTicket.h
===================================================================
--- trunk/apps/CppFCPLib/JobTicket.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/JobTicket.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -3,7 +3,6 @@
#include "Message.h"
#include "ServerMessage.h"
-#include "FCPResult.h"
#include <stdexcept>
#include <vector>
Modified: trunk/apps/CppFCPLib/Node.cpp
===================================================================
--- trunk/apps/CppFCPLib/Node.cpp 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/Node.cpp 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,13 +1,13 @@
-#include "Node.h"
-#include "Log.h"
#include <boost/lexical_cast.hpp>
#include <typeinfo>
-#include "Exceptions.h"
-#include "FCPErrorResponse.h"
#include <fstream>
#include <sstream>
+#include "Node.h"
+#include "Log.h"
+#include "Exceptions.h"
+
using namespace FCPLib;
std::string
@@ -26,7 +26,7 @@
void
Node::checkProtocolError(Response &resp)
{
- ServerMessage::Ptr sm = createResult<ServerMessage::Ptr, LastMessage>( resp );
+ ServerMessage::Ptr sm = createResult<ServerMessage::Ptr, LastMessageConverter>( resp );
if ( sm->isError() )
throw FCPException( sm->getMessage() );
@@ -58,10 +58,7 @@
// check if CloceConnectionDuplicateName or ProtocolError has arrived
checkProtocolError(resp); // throws
- nodeHelloMessage = boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>(
- FCPResult::factory( job->getCommandName(), resp )
- )->getMessage();
+ nodeHelloMessage = createResult<Message::Ptr, MessageConverter>( resp );
}
Node::~Node()
@@ -69,7 +66,7 @@
executor.interrupt();
}
-FCPMultiMessageResponse::Ptr
+std::vector<Message::Ptr>
Node::listPeers(const AdditionalFields& fields)
{
Message::Ptr m = Message::factory( std::string("ListPeers") );
@@ -84,13 +81,12 @@
Response resp = job->getResponse();
// NOTE: error should never happen here...
- checkProtocolError(resp) // throws
+ checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPMultiMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<std::vector<Message::Ptr>, VectorWithoutLastConverter>( resp );
}
-FCPMultiMessageResponse::Ptr
+std::vector<Message::Ptr>
Node::listPeerNotes(const std::string& identifier)
{
Message::Ptr m = Message::factory( std::string("ListPeerNotes") );
@@ -106,11 +102,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPMultiMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<std::vector<Message::Ptr>, VectorWithoutLastConverter>( resp );
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::addPeer(const std::string &value, bool isURL = false) {
Message::Ptr m = Message::factory( std::string("AddPeer") );
if (!isURL)
@@ -128,12 +123,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
-
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::addPeer(const std::map<std::string, std::string> &message)
{
Message::Ptr m = Message::factory( std::string("AddPeer") );
@@ -150,11 +143,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::modifyPeer(const std::string & nodeIdentifier,
const AdditionalFields& fields)
{
@@ -174,11 +166,10 @@
Response resp = job->getResponse();
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::modifyPeerNote(const std::string & nodeIdentifier,
const std::string & noteText,
int peerNoteType = 1)
@@ -199,11 +190,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::removePeer(const std::string &identifier)
{
Message::Ptr m = Message::factory( std::string("RemovePeer") );
@@ -221,8 +211,7 @@
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
Message::Ptr
@@ -243,13 +232,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
-// return boost::dynamic_pointer_cast<FCPOneMessageResponse,
-// FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
-
return createResult<Message::Ptr, MessageConverter>( resp );
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::getConfig(const AdditionalFields& fields)
{
Message::Ptr m = Message::factory( std::string("GetConfig") );
@@ -272,11 +258,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::modifyConfig(Message::Ptr m)
{
if (m->getHeader() != "ModifyConfig")
@@ -292,11 +277,10 @@
// ProtocolError or UnknownNodeIdentifier
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
-FCPTestDDAReplyResponse::Ptr
+TestDDAReplyResponse::Ptr
Node::testDDARequest(std::string dir, bool read, bool write)
{
Message::Ptr m = Message::factory( std::string("TestDDARequest") );
@@ -317,12 +301,10 @@
// check if protocol error has occured
checkProtocolError(resp); // throws
-
- return boost::dynamic_pointer_cast<FCPTestDDAReplyResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<TestDDAReplyResponse::Ptr, TestDDAReplyConverter>( resp );
}
-FCPTestDDAResponse
+TestDDAResponse
Node::testDDAResponse(std::string dir, std::string readContent)
{
Message::Ptr m = Message::factory( std::string("TestDDAResponse") );
@@ -338,25 +320,19 @@
job->wait(globalCommandsTimeout);
Response resp = job->getResponse();
-
// check if protocol error has occured
checkProtocolError(resp); // throws
-
- FCPOneMessageResponse::Ptr response =
- boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
-
- m = response->getMessage();
- return FCPTestDDAResponse(m->getField("Directory"),
+ m = createResult<Message::Ptr, MessageConverter>( resp );
+ return TestDDAResponse(m->getField("Directory"),
m->getField("ReadDirectoryAllowed")=="true",
m->getField("WriteDirectoryAllowed")=="true");
}
-FCPTestDDAResponse
+TestDDAResponse
Node::testDDA(std::string dir, bool read, bool write)
{
- FCPTestDDAReplyResponse::Ptr replyResponse;
+ TestDDAReplyResponse::Ptr replyResponse;
Message::Ptr m;
try
@@ -378,33 +354,33 @@
os.close();
}
}
- FCPTestDDAResponse ret = testDDAResponse(dir, readContent.str());
+ TestDDAResponse ret = testDDAResponse(dir, readContent.str());
//TODO: delete created file
return ret;
}
catch (FCPException& e)
{
log().log(ERROR, e.getMessage()->toString());
- return FCPTestDDAResponse(dir, false, false);
+ return TestDDAResponse(dir, false, false);
}
catch (std::logic_error& e)
{
log().log(FATAL, e.what()); // this should never happen... TODO: should I force shutdown?
- return FCPTestDDAResponse(dir, false, false);
+ return TestDDAResponse(dir, false, false);
}
catch (std::runtime_error& e)
{
log().log(ERROR, e.what());
- return FCPTestDDAResponse(dir, false, false);
+ return TestDDAResponse(dir, false, false);
}
catch (std::exception& e)
{
log().log(ERROR, e.what());
- return FCPTestDDAResponse(dir, false, false);
+ return TestDDAResponse(dir, false, false);
}
}
-FCPOneMessageResponse::Ptr
+Message::Ptr
Node::generateSSK(std::string identifier)
{
Message::Ptr m = Message::factory( std::string("GenerateSSK") );
@@ -419,8 +395,7 @@
Response resp = job->getResponse();
checkProtocolError(resp); // throws
- return boost::dynamic_pointer_cast<FCPOneMessageResponse,
- FCPResult>( FCPResult::factory( job->getCommandName(), resp ) );
+ return createResult<Message::Ptr, MessageConverter>( resp );
}
JobTicket::Ptr
Modified: trunk/apps/CppFCPLib/Node.h
===================================================================
--- trunk/apps/CppFCPLib/Node.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/Node.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -8,12 +8,9 @@
#include "zthread/Thread.h"
#include "zthread/ThreadedExecutor.h"
+#include "FCPResult.h"
#include "TQueue.h"
#include "NodeThread.h"
-#include "FCPMultiMessageResponse.h"
-#include "FCPOneMessageResponse.h"
-#include "FCPTestDDAReplyResponse.h"
-#include "FCPTestDDAResponse.h"
#include "AdditionalFields.h"
namespace FCPLib {
@@ -51,22 +48,22 @@
const Message::Ptr getNodeHelloMessage() const;
- FCPMultiMessageResponse::Ptr listPeers(const AdditionalFields& = AdditionalFields());
- FCPMultiMessageResponse::Ptr listPeerNotes(const std::string&);
- FCPOneMessageResponse::Ptr addPeer(const std::string &, bool isURL);
- FCPOneMessageResponse::Ptr addPeer(const std::map<std::string, std::string> &message);
- FCPOneMessageResponse::Ptr modifyPeer(const std::string &, const AdditionalFields& = AdditionalFields());
- FCPOneMessageResponse::Ptr modifyPeerNote(const std::string &, const std::string &, int);
- FCPOneMessageResponse::Ptr removePeer(const std::string &);
+ std::vector<Message::Ptr> listPeers(const AdditionalFields& = AdditionalFields());
+ std::vector<Message::Ptr> 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());
+ Message::Ptr modifyPeerNote(const std::string &, const std::string &, int);
+ Message::Ptr removePeer(const std::string &);
Message::Ptr getNode(const AdditionalFields& = AdditionalFields());
- FCPOneMessageResponse::Ptr getConfig(const AdditionalFields& = AdditionalFields());
- FCPOneMessageResponse::Ptr modifyConfig(Message::Ptr m);
+ Message::Ptr getConfig(const AdditionalFields& = AdditionalFields());
+ Message::Ptr modifyConfig(Message::Ptr m);
- FCPTestDDAReplyResponse::Ptr testDDARequest(std::string dir, bool read, bool write);
- FCPTestDDAResponse testDDAResponse(std::string dir, std::string readContent = "");
- FCPTestDDAResponse testDDA(std::string dir, bool read, bool write);
+ TestDDAReplyResponse::Ptr testDDARequest(std::string dir, bool read, bool write);
+ TestDDAResponse testDDAResponse(std::string dir, std::string readContent = "");
+ TestDDAResponse testDDA(std::string dir, bool read, bool write);
- FCPOneMessageResponse::Ptr generateSSK(std::string identifier);
+ Message::Ptr generateSSK(std::string identifier);
JobTicket::Ptr putData(const std::string , // URI
std::istream*, // Data Stream
int, // dataLength
Modified: trunk/apps/CppFCPLib/NodeThread.h
===================================================================
--- trunk/apps/CppFCPLib/NodeThread.h 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/NodeThread.h 2007-07-16 10:46:15 UTC (rev 14155)
@@ -1,17 +1,19 @@
#ifndef NODETHREAD_H__
#define NODETHREAD_H__
-#include "zthread/Thread.h"
-#include "TQueue.h"
-#include "Log.h"
-#include "Server.h"
+#include <zthread/Thread.h>
#include <map>
#include <string>
-#include "JobTicket.h"
-#include "ServerMessage.h"
#include <exception>
#include <boost/shared_ptr.hpp>
+#include "JobTicket.h"
+#include "ServerMessage.h"
+#include "TQueue.h"
+#include "Log.h"
+#include "Server.h"
+
+
namespace FCPLib {
class Node;
Modified: trunk/apps/CppFCPLib/main.cpp
===================================================================
--- trunk/apps/CppFCPLib/main.cpp 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/main.cpp 2007-07-16 10:46:15 UTC (rev 14155)
@@ -2,17 +2,12 @@
#include <string>
#include "Server.h"
#include "Node.h"
-#include "FCPMultiMessageResponse.h"
#include "ServerMessage.h"
-#include "FCPTestDDAResponse.h"
-using namespace std;
-using namespace FCPLib;
-
int main()
{
- Node n("123", "", -1);
- Message::Ptr m = n.getNode();
+ FCPLib::Node n("123", "", -1);
+ FCPLib::Message::Ptr m = n.getNode();
std::cout << m->toString() ;
getchar ();
Modified: trunk/apps/CppFCPLib/todo.txt
===================================================================
--- trunk/apps/CppFCPLib/todo.txt 2007-07-16 09:17:50 UTC (rev 14154)
+++ trunk/apps/CppFCPLib/todo.txt 2007-07-16 10:46:15 UTC (rev 14155)
@@ -14,8 +14,6 @@
* create examples, tests
* what should be status for the callback function
* what do you do with close connection message?
-* creation of results from responses is currently quite inflexible...
- create function: ReturnType get_result<ReturnType, Converter> ( nodeResponses );
Questions
=========
More information about the Cppfcplib
mailing list