Skip to content

Commit f7cf267

Browse files
authored
Merge pull request #6 from hermes-org/BR_REV_1_6
Br rev 1 6
2 parents e6906bd + 598f476 commit f7cf267

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+6068
-3276
lines changed

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -579,3 +579,9 @@ __pycache__/
579579
/src/Hermes/MessageSerialization.cpp.bak
580580
/src/Hermes/Downstream.cpp.bak
581581
/src/Hermes/Makefile.bak
582+
/References/boost
583+
/src/Hermes/pugixml
584+
/version
585+
/tmp/Hermes_Debug_x64
586+
/src/Hermes/pugixml.notUse
587+
/tmp

src/Hermes/AsioClient.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ namespace Hermes
114114
m_socket.m_connectionInfo.m_port = endpoint.port();
115115
m_socket.m_connectionInfo.m_hostName = itEndpoint->host_name();
116116

117-
m_socket.m_service.Inform(m_socket.m_sessionId, "Connecting to ", m_socket.m_connectionInfo, " ...");
117+
m_socket.m_service.Log(m_socket.m_sessionId, "Connecting to ", m_socket.m_connectionInfo, " ...");
118118
m_socket.m_socket.async_connect(endpoint,
119119
[spThis = shared_from_this()](const boost::system::error_code& ec)
120120
{
@@ -142,6 +142,7 @@ namespace Hermes
142142
return;
143143
}
144144

145+
m_socket.m_service.Inform(m_socket.m_sessionId, "OnConnected ", m_socket.m_connectionInfo);
145146
m_socket.m_pCallback->OnConnected(m_socket.m_connectionInfo);
146147
m_socket.StartReceiving();
147148
}

src/Hermes/AsioServer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,8 @@ namespace Hermes
277277
spSocket->m_connectionInfo.m_hostName = itResolved->host_name();
278278
}
279279

280+
spSocket->m_service.Inform(spSocket->m_sessionId, "OnAccepted ", spSocket->m_connectionInfo);
281+
280282
if (!configuration.m_hostName.empty())
281283
{
282284
asio::ip::tcp::resolver::query query(asio::ip::tcp::v4(), configuration.m_hostName, "");

src/Hermes/AsioSocket.h

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ namespace Hermes
3939
return service.Alarm(sessionId, EErrorCode::eNETWORK_ERROR, trace..., ": ", ec.message(), '(', ec.value(), ')');
4040
}
4141

42+
template<class... Ts>
43+
void Info(IAsioService& service, unsigned sessionId, const boost::system::error_code& ec, const Ts&... trace)
44+
{
45+
service.Inform(sessionId, trace..., ": ", ec.message(), '(', ec.value(), ')');
46+
}
47+
4248
struct AsioSocket
4349
{
4450
unsigned m_sessionId;
@@ -106,6 +112,13 @@ namespace Hermes
106112
return Hermes::Alarm(m_service, m_sessionId, ec, trace...);
107113
}
108114

115+
template<class... Ts>
116+
Error Info(const boost::system::error_code& ec, const Ts&... trace)
117+
{
118+
Hermes::Info(m_service, m_sessionId, ec, trace...);
119+
return Error{};
120+
}
121+
109122
private:
110123

111124
template<class... Ts>
@@ -116,7 +129,7 @@ namespace Hermes
116129

117130
// consider closed connections not to be an error:
118131
bool isError = (asio::error::eof != ec) && (asio::error::connection_reset != ec);
119-
auto error = isError ? Alarm(ec, trace...) : Error();
132+
auto error = isError ? Alarm(ec, trace...) : Info(ec, trace...);
120133

121134
auto* pCallback = Close_();
122135
if (!pCallback)

src/Hermes/BasicPugiSerialization.h

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
# include "pugixml.hpp"
1010
#endif
1111

12+
#include <iomanip>
13+
1214
namespace Hermes
1315
{
1416
template<class T, class EnableT = void>
@@ -76,7 +78,10 @@ namespace Hermes
7678

7779
static void WriteAttribute(pugi::xml_attribute attr, double value)
7880
{
79-
attr.set_value(value);
81+
// Standard states that we should have 3 trailing decimals
82+
std::stringstream stream;
83+
stream << std::fixed << std::setprecision(3) << value;
84+
attr.set_value(stream.str().c_str());
8085
}
8186
static void ReadAttribute(pugi::xml_attribute attr, Error&, double& value)
8287
{
@@ -104,25 +109,6 @@ namespace Hermes
104109
}
105110
};
106111

107-
//void PugiSerialize(pugi::xml_attribute attribute, const std::string& value)
108-
//{
109-
// attribute.set_value(value.c_str());
110-
//}
111-
112-
//void PugiDeserialize(pugi::xml_attribute attribute, Error&, std::string& value)
113-
//{
114-
// value = attribute.as_string();
115-
//}
116-
117-
//void PugiSerialize(pugi::xml_attribute attribute, const int& value)
118-
//{
119-
// attribute.set_value(value);
120-
//}
121-
122-
//void PugiDeserialize(pugi::xml_attribute attribute, Error&, std::string& value)
123-
//{
124-
// value = attribute.as_string();
125-
//}
126112

127113
void Serialize(pugi::xml_node parent, const char* name, const std::string& value)
128114
{

src/Hermes/ConfigurationClient.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,15 @@ namespace
7878
m_dispatcher.Add<CurrentConfigurationData>([this](const auto& data) -> Error
7979
{
8080
m_receiving = false;
81-
auto apiData = ToC(data);
82-
m_configurationCallback(0U, &apiData);
81+
const Converter2C<CurrentConfigurationData> converter (data);
82+
m_configurationCallback(0U, converter.CPointer());
8383
return{};
8484

8585
});
8686
m_dispatcher.Add<NotificationData>([this](const auto& data) -> Error
8787
{
88-
auto apiData = ToC(data);
89-
m_notificationCallback(0U, &apiData);
88+
const Converter2C<NotificationData> converter(data);
89+
m_notificationCallback(0U, converter.CPointer());
9090
return{};
9191
});
9292
}
@@ -95,8 +95,8 @@ namespace
9595
void GenerateError(EErrorCode errorCode, const Ts&... params)
9696
{
9797
auto error = m_service.Alarm(0U, errorCode, params...);
98-
auto apiError = ToC(error);
99-
m_errorCallback(&apiError);
98+
const Converter2C<Error> converter(error);
99+
m_errorCallback(converter.CPointer());
100100
}
101101

102102
bool Connect()

src/Hermes/ConfigurationService.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -159,30 +159,30 @@ struct HermesConfigurationService : IAcceptorCallback, IConfigurationServiceSess
159159
}
160160

161161
//================= IConfigurationServiceSessionCallback =========================
162-
void OnSocketConnected(unsigned sessionId, const ConnectionInfo& connectionInfo) override
162+
void OnSocketConnected(unsigned sessionId, const ConnectionInfo& data) override
163163
{
164-
auto apiConnectionInfo = ToC(connectionInfo);
165-
m_connectedCallback(sessionId, eHERMES_STATE_SOCKET_CONNECTED, &apiConnectionInfo);
164+
const Converter2C<ConnectionInfo> converter(data);
165+
m_connectedCallback(sessionId, eHERMES_STATE_SOCKET_CONNECTED, converter.CPointer());
166166
}
167167

168168
virtual void OnGet(unsigned sessionId, const ConnectionInfo& connectionInfo,
169169
const GetConfigurationData& data, IGetConfigurationResponse& responder) override
170170
{
171-
HermesConnectionInfo apiConnectionInfo = ToC(connectionInfo);
172-
HermesGetConfigurationData apiData = ToC(data);
171+
const Converter2C<ConnectionInfo> connectionConverter(connectionInfo);
172+
const Converter2C<GetConfigurationData> dataConverter(data);
173173

174174
CallbackScope<IGetConfigurationResponse> scope(m_pGetConfigurationResponder, responder);
175-
m_getConfigurationCallback(sessionId, &apiData, &apiConnectionInfo);
175+
m_getConfigurationCallback(sessionId, dataConverter.CPointer(), connectionConverter.CPointer());
176176
}
177177

178178
virtual void OnSet(unsigned sessionId, const ConnectionInfo& connectionInfo,
179-
const SetConfigurationData& configuration, ISetConfigurationResponse& responder) override
179+
const SetConfigurationData& data, ISetConfigurationResponse& responder) override
180180
{
181-
auto apiConnectionInfo = ToC(connectionInfo);
182-
auto apiConfiguration = ToC(configuration);
181+
const Converter2C<ConnectionInfo> connectionConverter(connectionInfo);
182+
const Converter2C<SetConfigurationData> dataConverter(data);
183183

184184
CallbackScope<ISetConfigurationResponse> scope(m_pSetConfigurationResponder, responder);
185-
m_setConfigurationCallback(sessionId, &apiConfiguration, &apiConnectionInfo);
185+
m_setConfigurationCallback(sessionId, dataConverter.CPointer(), connectionConverter.CPointer());
186186
}
187187

188188
virtual void OnDisconnected(unsigned sessionId, const Error& error) override
@@ -191,8 +191,8 @@ struct HermesConfigurationService : IAcceptorCallback, IConfigurationServiceSess
191191
if (!m_sessionMap.erase(sessionId))
192192
return;
193193

194-
auto apiError = ToC(error);
195-
m_disconnectedCallback(sessionId, eHERMES_STATE_DISCONNECTED, &apiError);
194+
const Converter2C<Error> converter(error);
195+
m_disconnectedCallback(sessionId, eHERMES_STATE_DISCONNECTED, converter.CPointer());
196196
}
197197
};
198198

src/Hermes/DeserializationHelpers.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
#include "IService.h"
44
#include "StringSpan.h"
5+
56
#ifdef _WINDOWS
6-
# include <pugixml/pugixml.hpp>
7+
#include "pugixml/pugixml.hpp"
78
#else
8-
# include <pugixml.hpp>
9+
#include "pugixml.hpp"
910
#endif
1011

1112
#include <boost/variant.hpp>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy