[Cppfcplib] r14523 - trunk/apps/CppFCPLib

mkolar at freenetproject.org mkolar at freenetproject.org
Wed Aug 8 13:16:59 UTC 2007


Author: mkolar
Date: 2007-08-08 13:16:59 +0000 (Wed, 08 Aug 2007)
New Revision: 14523

Modified:
   trunk/apps/CppFCPLib/JobTicket.h
   trunk/apps/CppFCPLib/NodeThread.h
   trunk/apps/CppFCPLib/Server.cpp
   trunk/apps/CppFCPLib/Server.h
   trunk/apps/CppFCPLib/ServerMessage.cpp
   trunk/apps/CppFCPLib/ServerMessage.h
Log:
*  direct get works



Modified: trunk/apps/CppFCPLib/JobTicket.h
===================================================================
--- trunk/apps/CppFCPLib/JobTicket.h	2007-08-07 22:24:26 UTC (rev 14522)
+++ trunk/apps/CppFCPLib/JobTicket.h	2007-08-08 13:16:59 UTC (rev 14523)
@@ -138,7 +138,7 @@
   GetJob& setReturnType( ReturnType r ) { retType = r; return *this; }
 
 public:
-  ~GetJob() { if (stream != NULL) delete stream; }
+  ~GetJob() {}
   std::ostream& getStream() { return *stream; }
   ReturnType getReturnType() const { return retType; }
 

Modified: trunk/apps/CppFCPLib/NodeThread.h
===================================================================
--- trunk/apps/CppFCPLib/NodeThread.h	2007-08-07 22:24:26 UTC (rev 14522)
+++ trunk/apps/CppFCPLib/NodeThread.h	2007-08-08 13:16:59 UTC (rev 14523)
@@ -39,6 +39,10 @@
   void doMessage(ServerMessage::Ptr message);
 public:
   void run();
+  ~NodeThread() {
+    jobs[0].clear();
+    jobs[1].clear();
+  }
 };
 
 }

Modified: trunk/apps/CppFCPLib/Server.cpp
===================================================================
--- trunk/apps/CppFCPLib/Server.cpp	2007-08-07 22:24:26 UTC (rev 14522)
+++ trunk/apps/CppFCPLib/Server.cpp	2007-08-08 13:16:59 UTC (rev 14523)
@@ -79,7 +79,16 @@
 }
 
 void
-Server::read(boost::asio::mutable_buffers_1 buf)
+Server::read(char *buf, std::size_t len)
 {
-  boost::asio::read(*socket_, buf);
+  log().log(NOISY, "Server::read: top");
+  boost::system::error_code error;
+
+  while (response.size() < len) {
+    log().log(NOISY, "bytes read: " + boost::lexical_cast<std::string>(response.size()));
+    response.commit(socket_->read_some(response.prepare(len), error));
+    if (error)
+      throw boost::system::system_error(error);
+  }
+  response_stream.read(buf, len);
 }

Modified: trunk/apps/CppFCPLib/Server.h
===================================================================
--- trunk/apps/CppFCPLib/Server.h	2007-08-07 22:24:26 UTC (rev 14522)
+++ trunk/apps/CppFCPLib/Server.h	2007-08-08 13:16:59 UTC (rev 14523)
@@ -21,7 +21,7 @@
 public:
   ~Server();
   std::string readln();
-  void read(boost::asio::mutable_buffers_1);
+  void read(char*, std::size_t);
   void send(const std::string &s);
   void send(Message::Ptr m);
   bool dataAvailable();

Modified: trunk/apps/CppFCPLib/ServerMessage.cpp
===================================================================
--- trunk/apps/CppFCPLib/ServerMessage.cpp	2007-08-07 22:24:26 UTC (rev 14522)
+++ trunk/apps/CppFCPLib/ServerMessage.cpp	2007-08-08 13:16:59 UTC (rev 14523)
@@ -230,18 +230,20 @@
 bool
 AllDataMessage::isLast(const JobTicketPtr job) const
 {
+  log().log(NOISY, "AllDataMessage::isLast: top");
   GetJob::Ptr job_ = boost::dynamic_pointer_cast<GetJob, JobTicket>( job );
 
   std::ostream& stream = job_->getStream();
   char buf[1024];
 
-  int tmp = bytesToRead;
-  while (tmp > 0) {
-    int m = std::min<int>(tmp, 1024);
-    server->read(boost::asio::buffer(buf, m));
+  std::size_t bytes_available = bytesToRead;
+  log().log(NOISY, "bytesToRead = " + boost::lexical_cast<std::string>( bytes_available ));
+  while (bytes_available > 0) {
+    std::size_t m = std::min<std::size_t>(bytes_available, 1024);
+    server->read(buf, m);
     stream.write(buf, m);
-    tmp -= m;
-    log().log(DEBUG, "NODE: read "+ boost::lexical_cast<std::string>( m ) + " bytes of data, " + boost::lexical_cast<std::string>( tmp ) +  " still left");
+    bytes_available -= m;
+    log().log(DEBUG, "NODE: read "+ boost::lexical_cast<std::string>( m ) + " bytes of data, " + boost::lexical_cast<std::string>( bytes_available ) +  " still left");
   }
   stream.flush();
 

Modified: trunk/apps/CppFCPLib/ServerMessage.h
===================================================================
--- trunk/apps/CppFCPLib/ServerMessage.h	2007-08-07 22:24:26 UTC (rev 14522)
+++ trunk/apps/CppFCPLib/ServerMessage.h	2007-08-08 13:16:59 UTC (rev 14523)
@@ -98,7 +98,7 @@
   friend class ServerMessage;
 
   boost::shared_ptr<Server> server;
-  int bytesToRead;
+  std::size_t bytesToRead;
 
   void read(boost::shared_ptr<Server> s);
 




More information about the Cppfcplib mailing list