From 9813552ebfe1f43fd394bde1e1e844cdb709bc60 2015-12-03 12:19:34 From: Jan Kaluza Date: 2015-12-03 12:19:34 Subject: [PATCH] Send api version to backend so it can use future features based on this version number --- diff --git a/include/transport/NetworkPluginServer.h b/include/transport/NetworkPluginServer.h index a579c70d831090f27d7d984fe49fac6aada08c65..ab64157f0b97f7e1887c007d80d16f525c29f8f1 100644 --- a/include/transport/NetworkPluginServer.h +++ b/include/transport/NetworkPluginServer.h @@ -43,6 +43,8 @@ #include #define HAVE_SWIFTEN_3 (SWIFTEN_VERSION >= 0x030000) +#define NETWORK_PLUGIN_API_VERSION (1) + namespace Transport { class UserManager; @@ -160,6 +162,7 @@ class NetworkPluginServer : Swift::XMPPParserClient { void pingTimeout(); void sendPing(Backend *c); + void sendAPIVersion(Backend *c); Backend *getFreeClient(bool acceptUsers = true, bool longRun = false, bool check = false); void connectWaitingUsers(); void loginDelayFinished(); diff --git a/include/transport/protocol.proto b/include/transport/protocol.proto index 78a3b9af60a8a3cc9e43d57b809911113061c150..d7bd76a9789c2ca6f44989f3f051ebfeb52cdb22 100644 --- a/include/transport/protocol.proto +++ b/include/transport/protocol.proto @@ -151,6 +151,10 @@ message BackendConfig { required string config = 1; } +message APIVersion { + required int32 version = 1; +} + message WrapperMessage { enum Type { TYPE_CONNECTED = 1; @@ -187,6 +191,7 @@ message WrapperMessage { TYPE_CONV_MESSAGE_ACK = 33; TYPE_RAW_XML = 34; TYPE_BUDDIES = 35; + TYPE_API_VERSION = 36; } required Type type = 1; optional bytes payload = 2; diff --git a/src/NetworkPluginServer.cpp b/src/NetworkPluginServer.cpp index 618bb6d2ba2f26539eae469cfc0fa314e41f9e3a..583e4601cb3b2c88a8ca8346f729760337005433 100644 --- a/src/NetworkPluginServer.cpp +++ b/src/NetworkPluginServer.cpp @@ -1936,6 +1936,22 @@ void NetworkPluginServer::sendPing(Backend *c) { // LOG4CXX_INFO(logger, "PING to " << c); } +void NetworkPluginServer::sendAPIVersion(Backend *c) { + + pbnetwork::APIVersion apiver; + apiver.set_version(NETWORK_PLUGIN_API_VERSION); + + std::string message; + apiver.SerializeToString(&message); + + WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_API_VERSION); + + if (c->connection) { + LOG4CXX_INFO(logger, "API Version to " << c << " (ID=" << c->id << ")"); + send(c->connection, message); + } +} + void NetworkPluginServer::handlePIDTerminated(unsigned long pid) { std::vector::iterator log_id_it; log_id_it = std::find(m_pids.begin(), m_pids.end(), pid);