[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