[Cppfcplib] r14159 - trunk/apps/CppFCPLib

mkolar at freenetproject.org mkolar at freenetproject.org
Tue Jul 17 10:37:37 UTC 2007


Author: mkolar
Date: 2007-07-17 10:37:37 +0000 (Tue, 17 Jul 2007)
New Revision: 14159

Removed:
   trunk/apps/CppFCPLib/CloseConnectionDuplicateNameMessage.h
   trunk/apps/CppFCPLib/ConfigDataMessage.h
   trunk/apps/CppFCPLib/EndMessage.h
   trunk/apps/CppFCPLib/FinishedCompressionMessage.h
   trunk/apps/CppFCPLib/GetFailedMessage.h
   trunk/apps/CppFCPLib/IdentifierCollisionMessage.h
   trunk/apps/CppFCPLib/NodeDataMessage.h
   trunk/apps/CppFCPLib/NodeHelloMessage.h
   trunk/apps/CppFCPLib/PeerMessage.h
   trunk/apps/CppFCPLib/PeerNoteMessage.h
   trunk/apps/CppFCPLib/PeerRemovedMessage.h
   trunk/apps/CppFCPLib/PersistentRequestRemovedMessage.h
   trunk/apps/CppFCPLib/ProtocolErrorMessage.h
   trunk/apps/CppFCPLib/PutFailedMessage.h
   trunk/apps/CppFCPLib/PutSuccessfulMessage.h
   trunk/apps/CppFCPLib/SSKKeypairMessage.h
   trunk/apps/CppFCPLib/SimpleProgressMessage.h
   trunk/apps/CppFCPLib/StartedCompressionMessage.h
   trunk/apps/CppFCPLib/TestDDACompleteMessage.h
   trunk/apps/CppFCPLib/TestDDAReplyMessage.h
   trunk/apps/CppFCPLib/URIGeneratedMessage.h
   trunk/apps/CppFCPLib/UnknownNodeIdentifierMessage.h
   trunk/apps/CppFCPLib/UnknownPeerNoteTypeMessage.h
Modified:
   trunk/apps/CppFCPLib/FCPResult.h
   trunk/apps/CppFCPLib/ServerMessage.cpp
   trunk/apps/CppFCPLib/ServerMessage.h
   trunk/apps/CppFCPLib/todo.txt
Log:
'ServerMessage's are restructured

Deleted: trunk/apps/CppFCPLib/CloseConnectionDuplicateNameMessage.h
===================================================================
--- trunk/apps/CppFCPLib/CloseConnectionDuplicateNameMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/CloseConnectionDuplicateNameMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,32 +0,0 @@
-#ifndef CLOSECONNECTIONDUPLICATENAMEMESSAGE_H_INCLUDED
-#define CLOSECONNECTIONDUPLICATENAMEMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class CloseConnectionDuplicateNameMessage : public ServerMessage {
-  CloseConnectionDuplicateNameMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__hello";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-
-#endif // CLOSECONNECTIONDUPLICATENAMEMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/ConfigDataMessage.h
===================================================================
--- trunk/apps/CppFCPLib/ConfigDataMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/ConfigDataMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef CONFIGDATAMESSAGE_H_INCLUDED
-#define CONFIGDATAMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class ConfigDataMessage : public ServerMessage {
-  ConfigDataMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // CONFIGDATAMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/EndMessage.h
===================================================================
--- trunk/apps/CppFCPLib/EndMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/EndMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,33 +0,0 @@
-#ifndef ENDMESSAGE_H__
-#define ENDMESSAGE_H__
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class EndMessage : public ServerMessage {
-  EndMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-
-  bool isError() const {
-      return false;
-  }
-
-  friend class ServerMessage;
-};
-
-}
-
-#endif // ENDMESSAGE_H__

Modified: trunk/apps/CppFCPLib/FCPResult.h
===================================================================
--- trunk/apps/CppFCPLib/FCPResult.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/FCPResult.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -53,6 +53,13 @@
 
 ///////////
 
+struct GetMessage {
+  Message::Ptr
+  operator()( ServerMessage::Ptr sm ){
+    return sm->getMessage();
+  }
+};
+
 struct MessageConverter {
   Message::Ptr
   operator()( Response &resp )
@@ -73,11 +80,8 @@
   std::vector<Message::Ptr>
   operator()( Response &resp )
   {
-    std::vector<Message::Ptr> ret = std::vector<Message::Ptr>( resp.responses.size() );
-    for ( std::vector<ServerMessage::Ptr>::iterator it = resp.responses.begin();
-          it != resp.responses.end();
-          ++it )
-      ret.push_back( Message::Ptr( (*it)->getMessage() ) );
+    std::vector<Message::Ptr> ret( resp.responses.size() ) ;
+    transform( resp.responses.begin(), resp.responses.end(), ret.begin(), GetMessage() );
     return ret;
   }
 };
@@ -88,10 +92,7 @@
   {
     int numToCopy = resp.responses.size() - 1;
     std::vector<Message::Ptr> ret = std::vector<Message::Ptr>( numToCopy );
-    for ( std::vector<ServerMessage::Ptr>::iterator it = resp.responses.begin();
-          it != resp.responses.begin() + numToCopy;
-          ++it )
-      ret.push_back( Message::Ptr( (*it)->getMessage() ) );
+    transform( resp.responses.begin(), resp.responses.begin() + numToCopy, ret.begin(), GetMessage() );
     return ret;
   }
 };

Deleted: trunk/apps/CppFCPLib/FinishedCompressionMessage.h
===================================================================
--- trunk/apps/CppFCPLib/FinishedCompressionMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/FinishedCompressionMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef FINISHEDCOMPRESSIONMESSAGE_H_INCLUDED
-#define FINISHEDCOMPRESSIONMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class FinishedCompressionMessage : public ServerMessage {
-  FinishedCompressionMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return false;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // FINISHEDCOMPRESSIONMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/GetFailedMessage.h
===================================================================
--- trunk/apps/CppFCPLib/GetFailedMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/GetFailedMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef GETFAILEDMESSAGE_H_INCLUDED
-#define GETFAILEDMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class GetFailedMessage : public ServerMessage {
-  GetFailedMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // GETFAILEDMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/IdentifierCollisionMessage.h
===================================================================
--- trunk/apps/CppFCPLib/IdentifierCollisionMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/IdentifierCollisionMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef IDENTIFIERCOLLISIONMESSAGE_H_INCLUDED
-#define IDENTIFIERCOLLISIONMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class IdentifierCollisionMessage : public ServerMessage {
-  IdentifierCollisionMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // IDENTIFIERCOLLISIONMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/NodeDataMessage.h
===================================================================
--- trunk/apps/CppFCPLib/NodeDataMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/NodeDataMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef NODEDATAMESSAGE_H__
-#define NODEDATAMESSAGE_H__
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class NodeDataMessage : public ServerMessage {
-  NodeDataMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // NODEDATAMESSAGE_H__

Deleted: trunk/apps/CppFCPLib/NodeHelloMessage.h
===================================================================
--- trunk/apps/CppFCPLib/NodeHelloMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/NodeHelloMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,29 +0,0 @@
-#ifndef NODEHELLOMESSAGE_H__
-#define NODEHELLOMESSAGE_H__
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class NodeHelloMessage : public ServerMessage {
-  NodeHelloMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__hello";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-      return true;
-  }
-  bool isError() const {
-      return false;
-  }
-
-  friend class ServerMessage;
-};
-
-}
-
-#endif // NODEHELLOMESSAGE_H__

Deleted: trunk/apps/CppFCPLib/PeerMessage.h
===================================================================
--- trunk/apps/CppFCPLib/PeerMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/PeerMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,38 +0,0 @@
-#ifndef PEERMESSAGE_H__
-#define PEERMESSAGE_H__
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class PeerMessage : public ServerMessage {
-  PeerMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    if (cmd == "ListPeers")
-      return false;
-    else if (cmd == "ModifyPeer")
-      return true;
-
-    throw std::runtime_error("Unknown command");
-  }
-
-  bool isError() const {
-      return false;
-  }
-
-  friend class ServerMessage;
-};
-
-}
-
-#endif // PEERMESSAGE_H__

Deleted: trunk/apps/CppFCPLib/PeerNoteMessage.h
===================================================================
--- trunk/apps/CppFCPLib/PeerNoteMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/PeerNoteMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,36 +0,0 @@
-#ifndef PEERNOTEMESSAGE_H__
-#define PEERNOTEMESSAGE_H__
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class PeerNoteMessage : public ServerMessage {
-  PeerNoteMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    if (cmd == "ListPeerNotes")
-      return false;
-    else if (cmd == "ModifyPeerNote")
-      return true;
-
-    throw std::runtime_error("Unknown command");
-  }
-
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-#endif // PEERNOTEMESSAGE_H__

Deleted: trunk/apps/CppFCPLib/PeerRemovedMessage.h
===================================================================
--- trunk/apps/CppFCPLib/PeerRemovedMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/PeerRemovedMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef PEERREMOVEDMESSAGE_H__
-#define PEERREMOVEDMESSAGE_H__
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class PeerRemovedMessage : public ServerMessage {
-  PeerRemovedMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-   return true;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // PEERREMOVEDMESSAGE_H__

Deleted: trunk/apps/CppFCPLib/PersistentRequestRemovedMessage.h
===================================================================
--- trunk/apps/CppFCPLib/PersistentRequestRemovedMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/PersistentRequestRemovedMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,32 +0,0 @@
-#ifndef PERSISTENTREQUESTREMOVEDMESSAGE_H_INCLUDED
-#define PERSISTENTREQUESTREMOVEDMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class PersistentRequestRemovedMessage : public ServerMessage {
-  PersistentRequestRemovedMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return false;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-
-#endif // PERSISTENTREQUESTREMOVEDMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/ProtocolErrorMessage.h
===================================================================
--- trunk/apps/CppFCPLib/ProtocolErrorMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/ProtocolErrorMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,32 +0,0 @@
-#ifndef PROTOCOLERRORMESSAGE_H_INCLUDED
-#define PROTOCOLERRORMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class ProtocolErrorMessage : public ServerMessage {
-  ProtocolErrorMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    const std::string& ret = message->getField("Identifier");
-    return  ret.size() ? ret : "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // PROTOCOLERRORMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/PutFailedMessage.h
===================================================================
--- trunk/apps/CppFCPLib/PutFailedMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/PutFailedMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef PUTFAILEDMESSAGE_H_INCLUDED
-#define PUTFAILEDMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class PutFailedMessage : public ServerMessage {
-  PutFailedMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // PUTFAILEDMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/PutSuccessfulMessage.h
===================================================================
--- trunk/apps/CppFCPLib/PutSuccessfulMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/PutSuccessfulMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,32 +0,0 @@
-#ifndef PutSuccessfulMessage_H_INCLUDED
-#define PutSuccessfulMessage_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class PutSuccessfulMessage : public ServerMessage {
-  PutSuccessfulMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-
-#endif // PutSuccessfulMessage_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/SSKKeypairMessage.h
===================================================================
--- trunk/apps/CppFCPLib/SSKKeypairMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/SSKKeypairMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef SSKKEYPAIRMESSAGE_H_INCLUDED
-#define SSKKEYPAIRMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class SSKKeypairMessage : public ServerMessage {
-  SSKKeypairMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // SSKKEYPAIRMESSAGE_H_INCLUDED

Modified: trunk/apps/CppFCPLib/ServerMessage.cpp
===================================================================
--- trunk/apps/CppFCPLib/ServerMessage.cpp	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/ServerMessage.cpp	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,33 +1,9 @@
 
 #include "Log.h"
 #include "ServerMessage.h"
-#include "PeerNoteMessage.h"
-#include "EndMessage.h"
-#include "PeerMessage.h"
-#include "NodeHelloMessage.h"
-#include "PeerRemovedMessage.h"
-#include "NodeDataMessage.h"
-#include "ConfigDataMessage.h"
-#include "SimpleProgressMessage.h"
-#include "StartedCompressionMessage.h"
-#include "FinishedCompressionMessage.h"
-#include "PutSuccessfulMessage.h"
-#include "URIGeneratedMessage.h"
-#include "PutFailedMessage.h"
-#include "GetFailedMessage.h"
-#include "ProtocolErrorMessage.h"
-#include "IdentifierCollisionMessage.h"
-#include "UnknownNodeIdentifierMessage.h"
-#include "UnknownPeerNoteTypeMessage.h"
-#include "PersistentRequestRemovedMessage.h"
-#include "TestDDACompleteMessage.h"
-#include "TestDDAReplyMessage.h"
-#include "SSKKeypairMessage.h"
-#include "CloseConnectionDuplicateNameMessage.h"
 
 using namespace FCPLib;
 
-
 ServerMessage::Ptr
 ServerMessage::factory(boost::shared_ptr<Server> s){
   ServerMessage::Ptr m;

Modified: trunk/apps/CppFCPLib/ServerMessage.h
===================================================================
--- trunk/apps/CppFCPLib/ServerMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/ServerMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -4,6 +4,7 @@
 #include "Message.h"
 #include "Server.h"
 #include <exception>
+#include <string>
 
 namespace FCPLib {
 
@@ -26,6 +27,104 @@
   const Message::Ptr getMessage() const { return message; }
 };
 
+
+
+template<bool isLast>
+struct IsLastT {
+  bool operator()(const std::string &cmd) const {
+    return isLast;
+  };
+};
+typedef IsLastT<true> IsLastTrue;
+typedef IsLastT<false> IsLastFalse;
+
+struct IsLastPeer {
+  bool operator()(const std::string &cmd) const {
+    if (cmd == "ListPeers")
+      return false;
+    else if (cmd == "ModifyPeer")
+      return true;
+    //TODO: this is not all
+    throw std::runtime_error("Unknown command");
+  }
+};
+
+struct IsLastPeerNote {
+  bool operator()(const std::string &cmd) const {
+    if (cmd == "ListPeerNotes")
+      return false;
+    else if (cmd == "ModifyPeerNote")
+      return true;
+    //TODO: check if this is all
+    throw std::runtime_error("Unknown command");
+  }
+};
+
+
+struct GlobalIdOfJob {
+  inline std::string operator()(const std::string& id){
+    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";
+  }
+};
+
+template<typename IdOfJobT, typename isLastT = IsLastTrue, bool isErrorT = false>
+class ServerMessageT : public ServerMessage {
+  ServerMessageT() {}
+public:
+  inline std::string getIdOfJob() const {
+    return IdOfJobT()(message->getField("Identifier"));
+  }
+  bool isLast(const std::string &cmd) const {
+    return isLastT()( cmd );
+  }
+  bool isError() const {
+    return isErrorT;
+  }
+  friend class ServerMessage;
+};
+
+typedef class ServerMessageT<HelloIdOfJob, IsLastTrue, false> NodeHelloMessage;
+typedef class ServerMessageT<HelloIdOfJob, IsLastTrue, true> CloseConnectionDuplicateNameMessage;
+
+typedef class ServerMessageT<GlobalIdOfJob, IsLastPeer, false> PeerMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastPeerNote, false> PeerNoteMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> PeerRemovedMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> EndMessage;
+
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> NodeDataMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> ConfigDataMessage;
+
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> TestDDAReplyMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, false> TestDDACompleteMessage;
+
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastTrue, false> SSKKeypairMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastFalse, false> URIGeneratedMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastTrue, false> PutSuccessfulMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastFalse, false> StartedCompressionMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastFalse, false> SimpleProgressMessage;
+
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastFalse, false> FinishedCompressionMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastFalse, false> PersistentRequestRemovedMessage; // ????
+
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastTrue, true> PutFailedMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastTrue, true> GetFailedMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastTrue, true> ProtocolErrorMessage;
+typedef class ServerMessageT<IdentifierIdOfJob, IsLastTrue, true> IdentifierCollisionMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, true> UnknownNodeIdentifierMessage;
+typedef class ServerMessageT<GlobalIdOfJob, IsLastTrue, true> UnknownPeerNoteTypeMessage;
+
+
+
 }
 
 #endif // SERVERMESSAGE_H__

Deleted: trunk/apps/CppFCPLib/SimpleProgressMessage.h
===================================================================
--- trunk/apps/CppFCPLib/SimpleProgressMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/SimpleProgressMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,32 +0,0 @@
-#ifndef SIMPLEPROGRESSMESSAGE_H_INCLUDED
-#define SIMPLEPROGRESSMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class SimpleProgressMessage : public ServerMessage {
-  SimpleProgressMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return false;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-
-#endif // SIMPLEPROGRESSMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/StartedCompressionMessage.h
===================================================================
--- trunk/apps/CppFCPLib/StartedCompressionMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/StartedCompressionMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef STARTEDCOMPRESSIONMESSAGE_H_INCLUDED
-#define STARTEDCOMPRESSIONMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class StartedCompressionMessage : public ServerMessage {
-  StartedCompressionMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return false;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // STARTEDCOMPRESSIONMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/TestDDACompleteMessage.h
===================================================================
--- trunk/apps/CppFCPLib/TestDDACompleteMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/TestDDACompleteMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,33 +0,0 @@
-#ifndef TESTDDACOMPLETEMESSAGE_H_INCLUDED
-#define TESTDDACOMPLETEMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class TestDDACompleteMessage : public ServerMessage {
-  TestDDACompleteMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-
-  bool isError() const {
-      return false;
-  }
-
-  friend class ServerMessage;
-};
-
-}
-
-#endif // TESTDDACOMPLETEMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/TestDDAReplyMessage.h
===================================================================
--- trunk/apps/CppFCPLib/TestDDAReplyMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/TestDDAReplyMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,33 +0,0 @@
-#ifndef TESTDDAREPLYMESSAGE_H_INCLUDED
-#define TESTDDAREPLYMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class TestDDAReplyMessage : public ServerMessage {
-  TestDDAReplyMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-
-  bool isError() const {
-      return false;
-  }
-
-  friend class ServerMessage;
-};
-
-}
-
-#endif // TESTDDAREPLYMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/URIGeneratedMessage.h
===================================================================
--- trunk/apps/CppFCPLib/URIGeneratedMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/URIGeneratedMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef URIGENERATEDMESSAGE_H_INCLUDED
-#define URIGENERATEDMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class URIGeneratedMessage : public ServerMessage {
-  URIGeneratedMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return message->getField("Identifier");
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return false;
-  }
-  bool isError() const {
-      return false;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // URIGENERATEDMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/UnknownNodeIdentifierMessage.h
===================================================================
--- trunk/apps/CppFCPLib/UnknownNodeIdentifierMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/UnknownNodeIdentifierMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef UNKNOWNNODEIDENTIFIERMESSAGE_H_INCLUDED
-#define UNKNOWNNODEIDENTIFIERMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class UnknownNodeIdentifierMessage : public ServerMessage {
-  UnknownNodeIdentifierMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // UNKNOWNNODEIDENTIFIERMESSAGE_H_INCLUDED

Deleted: trunk/apps/CppFCPLib/UnknownPeerNoteTypeMessage.h
===================================================================
--- trunk/apps/CppFCPLib/UnknownPeerNoteTypeMessage.h	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/UnknownPeerNoteTypeMessage.h	2007-07-17 10:37:37 UTC (rev 14159)
@@ -1,31 +0,0 @@
-#ifndef UNKNOWNPEERNOTETYPEMESSAGE_H_INCLUDED
-#define UNKNOWNPEERNOTETYPEMESSAGE_H_INCLUDED
-
-#include <string>
-#include <stdexcept>
-
-namespace FCPLib {
-
-class ServerMessage;
-
-class UnknownPeerNoteTypeMessage : public ServerMessage {
-  UnknownPeerNoteTypeMessage() {}
-public:
-  std::string getIdOfJob() const
-  {
-    return "__global";
-  }
-
-  bool isLast(const std::string &cmd) const
-  {
-    return true;
-  }
-  bool isError() const {
-      return true;
-  }
-  friend class ServerMessage;
-};
-
-}
-
-#endif // UNKNOWNPEERNOTETYPEMESSAGE_H_INCLUDED

Modified: trunk/apps/CppFCPLib/todo.txt
===================================================================
--- trunk/apps/CppFCPLib/todo.txt	2007-07-16 20:15:13 UTC (rev 14158)
+++ trunk/apps/CppFCPLib/todo.txt	2007-07-17 10:37:37 UTC (rev 14159)
@@ -14,6 +14,7 @@
 *  create examples, tests
 *  what should be status for the callback function
 *  what do you do with close connection message?
+*  update IsLastPeer
 
 Questions
 =========




More information about the Cppfcplib mailing list