CHG: removed the sourcetype out of the basic message

This commit is contained in:
Henry Winkel
2023-08-11 10:59:48 +02:00
parent 1c35c0cf67
commit 8eaf6e529c
21 changed files with 122 additions and 388 deletions

View File

@@ -32,6 +32,9 @@ namespace WHISPER {
class InternalUDPService : public whispercomm {
public:
InternalUDPService(std::string id, std::uint16_t port, std::string destinationAdress, std::string myAdress);
~InternalUDPService();
private:
/// ip address of the destination
std::string destinationAdress_;
@@ -84,9 +87,6 @@ namespace WHISPER {
public:
InternalUDPService(std::uint32_t parentid,std::uint32_t id, SourceType owndevicetype,std::uint16_t port, std::string destinationAdress, std::string myAdress);
~InternalUDPService();

View File

@@ -18,7 +18,7 @@ namespace WHISPER {
Join(std::string receivedMessage);
Join(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port, std::string addr);
Join(std::string ownID, std::uint32_t port, std::string addr);
};
}

View File

@@ -18,7 +18,7 @@ namespace WHISPER {
Leave(std::string receivedMessage);
Leave(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port, std::string addr);
Leave(std::string deviceID, std::uint32_t port, std::string addr);
};
}

View File

@@ -94,10 +94,10 @@ namespace WHISPER {
public:
Message()=default;
Message(std::string senderUUID, MsgTopics topic, MsgType Type,SourceType src);
Message(std::string senderUUID, MsgTopics topic, MsgType Type);
[[deprecated]]
Message(std::uint32_t parentId,std::uint32_t deviceId, MsgTopics topic, MsgType Type,SourceType src);
Message(std::uint32_t parentId,std::uint32_t deviceId, MsgTopics topic, MsgType Type);
Message(std::string msg);
/**
@@ -110,14 +110,9 @@ namespace WHISPER {
std::uint32_t topic_;
/// WHISPER::MsgType ot the payload
std::uint32_t msgType_;
/// WHISPER::SourceType of the sender
std::uint32_t sourceType_;
///sender uuid
std::string senderUUID_;
/// id of the sender
std::uint32_t deviceId_;
/// parent id of the sender 0 if its the manager
std::uint32_t parentId_;
/**
* @brief returns the serialized message

View File

@@ -17,7 +17,7 @@ namespace WHISPER {
Ping(std::string receivedMessage);
Ping(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port);
Ping(std::string deviceID, std::uint32_t port);
};
}

View File

@@ -17,7 +17,7 @@ namespace WHISPER {
Pong(std::string receivedMessage);
Pong(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port);
Pong(std::string deviceID, std::uint32_t port);
};
}

View File

@@ -24,15 +24,11 @@ namespace messages {
namespace header {
PROTOBUF_CONSTEXPR Message::Message(
::_pbi::ConstantInitialized): _impl_{
/*decltype(_impl_._has_bits_)*/{}
, /*decltype(_impl_._cached_size_)*/{}
, /*decltype(_impl_.senderuuid_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
/*decltype(_impl_.senderuuid_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
, /*decltype(_impl_.payload_)*/nullptr
, /*decltype(_impl_.topic_)*/0u
, /*decltype(_impl_.msgtype_)*/0u
, /*decltype(_impl_.sourcetype_)*/0u
, /*decltype(_impl_.sourceid_)*/0u
, /*decltype(_impl_.parentid_)*/0u} {}
, /*decltype(_impl_._cached_size_)*/{}} {}
struct MessageDefaultTypeInternal {
PROTOBUF_CONSTEXPR MessageDefaultTypeInternal()
: _instance(::_pbi::ConstantInitialized{}) {}
@@ -49,7 +45,7 @@ static constexpr ::_pb::EnumDescriptor const** file_level_enum_descriptors_messa
static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_message_2eproto = nullptr;
const uint32_t TableStruct_message_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_._has_bits_),
~0u, // no _has_bits_
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _internal_metadata_),
~0u, // no _extensions_
~0u, // no _oneof_case_
@@ -57,21 +53,11 @@ const uint32_t TableStruct_message_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(
~0u, // no _inlined_string_donated_
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.topic_),
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.msgtype_),
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.sourcetype_),
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.senderuuid_),
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.sourceid_),
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.parentid_),
PROTOBUF_FIELD_OFFSET(::messages::header::Message, _impl_.payload_),
~0u,
~0u,
~0u,
~0u,
0,
1,
~0u,
};
static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
{ 0, 13, -1, sizeof(::messages::header::Message)},
{ 0, -1, -1, sizeof(::messages::header::Message)},
};
static const ::_pb::Message* const file_default_instances[] = {
@@ -80,19 +66,17 @@ static const ::_pb::Message* const file_default_instances[] = {
const char descriptor_table_protodef_message_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
"\n\rmessage.proto\022\017messages.header\032\031google"
"/protobuf/any.proto\"\300\001\n\007Message\022\r\n\005topic"
"\030\001 \001(\r\022\017\n\007msgType\030\002 \001(\r\022\022\n\nsourceType\030\003 "
"\001(\r\022\022\n\nsenderUUID\030\004 \001(\t\022\025\n\010sourceID\030\005 \001("
"\rH\000\210\001\001\022\025\n\010parentID\030\006 \001(\rH\001\210\001\001\022%\n\007payload"
"\030\007 \001(\0132\024.google.protobuf.AnyB\013\n\t_sourceI"
"DB\013\n\t_parentIDb\006proto3"
"/protobuf/any.proto\"d\n\007Message\022\r\n\005topic\030"
"\001 \001(\r\022\017\n\007msgType\030\002 \001(\r\022\022\n\nsenderUUID\030\003 \001"
"(\t\022%\n\007payload\030\005 \001(\0132\024.google.protobuf.An"
"yb\006proto3"
;
static const ::_pbi::DescriptorTable* const descriptor_table_message_2eproto_deps[1] = {
&::descriptor_table_google_2fprotobuf_2fany_2eproto,
};
static ::_pbi::once_flag descriptor_table_message_2eproto_once;
const ::_pbi::DescriptorTable descriptor_table_message_2eproto = {
false, false, 262, descriptor_table_protodef_message_2eproto,
false, false, 169, descriptor_table_protodef_message_2eproto,
"message.proto",
&descriptor_table_message_2eproto_once, descriptor_table_message_2eproto_deps, 1, 1,
schemas, file_default_instances, TableStruct_message_2eproto::offsets,
@@ -112,13 +96,6 @@ namespace header {
class Message::_Internal {
public:
using HasBits = decltype(std::declval<Message>()._impl_._has_bits_);
static void set_has_sourceid(HasBits* has_bits) {
(*has_bits)[0] |= 1u;
}
static void set_has_parentid(HasBits* has_bits) {
(*has_bits)[0] |= 2u;
}
static const ::PROTOBUF_NAMESPACE_ID::Any& payload(const Message* msg);
};
@@ -142,15 +119,11 @@ Message::Message(const Message& from)
: ::PROTOBUF_NAMESPACE_ID::Message() {
Message* const _this = this; (void)_this;
new (&_impl_) Impl_{
decltype(_impl_._has_bits_){from._impl_._has_bits_}
, /*decltype(_impl_._cached_size_)*/{}
, decltype(_impl_.senderuuid_){}
decltype(_impl_.senderuuid_){}
, decltype(_impl_.payload_){nullptr}
, decltype(_impl_.topic_){}
, decltype(_impl_.msgtype_){}
, decltype(_impl_.sourcetype_){}
, decltype(_impl_.sourceid_){}
, decltype(_impl_.parentid_){}};
, /*decltype(_impl_._cached_size_)*/{}};
_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
_impl_.senderuuid_.InitDefault();
@@ -165,8 +138,8 @@ Message::Message(const Message& from)
_this->_impl_.payload_ = new ::PROTOBUF_NAMESPACE_ID::Any(*from._impl_.payload_);
}
::memcpy(&_impl_.topic_, &from._impl_.topic_,
static_cast<size_t>(reinterpret_cast<char*>(&_impl_.parentid_) -
reinterpret_cast<char*>(&_impl_.topic_)) + sizeof(_impl_.parentid_));
static_cast<size_t>(reinterpret_cast<char*>(&_impl_.msgtype_) -
reinterpret_cast<char*>(&_impl_.topic_)) + sizeof(_impl_.msgtype_));
// @@protoc_insertion_point(copy_constructor:messages.header.Message)
}
@@ -175,15 +148,11 @@ inline void Message::SharedCtor(
(void)arena;
(void)is_message_owned;
new (&_impl_) Impl_{
decltype(_impl_._has_bits_){}
, /*decltype(_impl_._cached_size_)*/{}
, decltype(_impl_.senderuuid_){}
decltype(_impl_.senderuuid_){}
, decltype(_impl_.payload_){nullptr}
, decltype(_impl_.topic_){0u}
, decltype(_impl_.msgtype_){0u}
, decltype(_impl_.sourcetype_){0u}
, decltype(_impl_.sourceid_){0u}
, decltype(_impl_.parentid_){0u}
, /*decltype(_impl_._cached_size_)*/{}
};
_impl_.senderuuid_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
@@ -222,21 +191,13 @@ void Message::Clear() {
}
_impl_.payload_ = nullptr;
::memset(&_impl_.topic_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&_impl_.sourcetype_) -
reinterpret_cast<char*>(&_impl_.topic_)) + sizeof(_impl_.sourcetype_));
cached_has_bits = _impl_._has_bits_[0];
if (cached_has_bits & 0x00000003u) {
::memset(&_impl_.sourceid_, 0, static_cast<size_t>(
reinterpret_cast<char*>(&_impl_.parentid_) -
reinterpret_cast<char*>(&_impl_.sourceid_)) + sizeof(_impl_.parentid_));
}
_impl_._has_bits_.Clear();
reinterpret_cast<char*>(&_impl_.msgtype_) -
reinterpret_cast<char*>(&_impl_.topic_)) + sizeof(_impl_.msgtype_));
_internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
}
const char* Message::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
_Internal::HasBits has_bits{};
while (!ctx->Done(&ptr)) {
uint32_t tag;
ptr = ::_pbi::ReadTag(ptr, &tag);
@@ -257,17 +218,9 @@ const char* Message::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx)
} else
goto handle_unusual;
continue;
// uint32 sourceType = 3;
// string senderUUID = 3;
case 3:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
_impl_.sourcetype_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
CHK_(ptr);
} else
goto handle_unusual;
continue;
// string senderUUID = 4;
case 4:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
auto str = _internal_mutable_senderuuid();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
@@ -275,27 +228,9 @@ const char* Message::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx)
} else
goto handle_unusual;
continue;
// optional uint32 sourceID = 5;
// .google.protobuf.Any payload = 5;
case 5:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 40)) {
_Internal::set_has_sourceid(&has_bits);
_impl_.sourceid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
CHK_(ptr);
} else
goto handle_unusual;
continue;
// optional uint32 parentID = 6;
case 6:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 48)) {
_Internal::set_has_parentid(&has_bits);
_impl_.parentid_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
CHK_(ptr);
} else
goto handle_unusual;
continue;
// .google.protobuf.Any payload = 7;
case 7:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 58)) {
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 42)) {
ptr = ctx->ParseMessage(_internal_mutable_payload(), ptr);
CHK_(ptr);
} else
@@ -317,7 +252,6 @@ const char* Message::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx)
CHK_(ptr != nullptr);
} // while
message_done:
_impl_._has_bits_.Or(has_bits);
return ptr;
failure:
ptr = nullptr;
@@ -343,38 +277,20 @@ uint8_t* Message::_InternalSerialize(
target = ::_pbi::WireFormatLite::WriteUInt32ToArray(2, this->_internal_msgtype(), target);
}
// uint32 sourceType = 3;
if (this->_internal_sourcetype() != 0) {
target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteUInt32ToArray(3, this->_internal_sourcetype(), target);
}
// string senderUUID = 4;
// string senderUUID = 3;
if (!this->_internal_senderuuid().empty()) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->_internal_senderuuid().data(), static_cast<int>(this->_internal_senderuuid().length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"messages.header.Message.senderUUID");
target = stream->WriteStringMaybeAliased(
4, this->_internal_senderuuid(), target);
3, this->_internal_senderuuid(), target);
}
// optional uint32 sourceID = 5;
if (_internal_has_sourceid()) {
target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteUInt32ToArray(5, this->_internal_sourceid(), target);
}
// optional uint32 parentID = 6;
if (_internal_has_parentid()) {
target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteUInt32ToArray(6, this->_internal_parentid(), target);
}
// .google.protobuf.Any payload = 7;
// .google.protobuf.Any payload = 5;
if (this->_internal_has_payload()) {
target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
InternalWriteMessage(7, _Internal::payload(this),
InternalWriteMessage(5, _Internal::payload(this),
_Internal::payload(this).GetCachedSize(), target, stream);
}
@@ -394,14 +310,14 @@ size_t Message::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// string senderUUID = 4;
// string senderUUID = 3;
if (!this->_internal_senderuuid().empty()) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
this->_internal_senderuuid());
}
// .google.protobuf.Any payload = 7;
// .google.protobuf.Any payload = 5;
if (this->_internal_has_payload()) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
@@ -418,24 +334,6 @@ size_t Message::ByteSizeLong() const {
total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_msgtype());
}
// uint32 sourceType = 3;
if (this->_internal_sourcetype() != 0) {
total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_sourcetype());
}
cached_has_bits = _impl_._has_bits_[0];
if (cached_has_bits & 0x00000003u) {
// optional uint32 sourceID = 5;
if (cached_has_bits & 0x00000001u) {
total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_sourceid());
}
// optional uint32 parentID = 6;
if (cached_has_bits & 0x00000002u) {
total_size += ::_pbi::WireFormatLite::UInt32SizePlusOne(this->_internal_parentid());
}
}
return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
}
@@ -467,19 +365,6 @@ void Message::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOB
if (from._internal_msgtype() != 0) {
_this->_internal_set_msgtype(from._internal_msgtype());
}
if (from._internal_sourcetype() != 0) {
_this->_internal_set_sourcetype(from._internal_sourcetype());
}
cached_has_bits = from._impl_._has_bits_[0];
if (cached_has_bits & 0x00000003u) {
if (cached_has_bits & 0x00000001u) {
_this->_impl_.sourceid_ = from._impl_.sourceid_;
}
if (cached_has_bits & 0x00000002u) {
_this->_impl_.parentid_ = from._impl_.parentid_;
}
_this->_impl_._has_bits_[0] |= cached_has_bits;
}
_this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
}
@@ -499,14 +384,13 @@ void Message::InternalSwap(Message* other) {
auto* lhs_arena = GetArenaForAllocation();
auto* rhs_arena = other->GetArenaForAllocation();
_internal_metadata_.InternalSwap(&other->_internal_metadata_);
swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
&_impl_.senderuuid_, lhs_arena,
&other->_impl_.senderuuid_, rhs_arena
);
::PROTOBUF_NAMESPACE_ID::internal::memswap<
PROTOBUF_FIELD_OFFSET(Message, _impl_.parentid_)
+ sizeof(Message::_impl_.parentid_)
PROTOBUF_FIELD_OFFSET(Message, _impl_.msgtype_)
+ sizeof(Message::_impl_.msgtype_)
- PROTOBUF_FIELD_OFFSET(Message, _impl_.payload_)>(
reinterpret_cast<char*>(&_impl_.payload_),
reinterpret_cast<char*>(&other->_impl_.payload_));

View File

@@ -181,15 +181,12 @@ class Message final :
// accessors -------------------------------------------------------
enum : int {
kSenderUUIDFieldNumber = 4,
kPayloadFieldNumber = 7,
kSenderUUIDFieldNumber = 3,
kPayloadFieldNumber = 5,
kTopicFieldNumber = 1,
kMsgTypeFieldNumber = 2,
kSourceTypeFieldNumber = 3,
kSourceIDFieldNumber = 5,
kParentIDFieldNumber = 6,
};
// string senderUUID = 4;
// string senderUUID = 3;
void clear_senderuuid();
const std::string& senderuuid() const;
template <typename ArgT0 = const std::string&, typename... ArgT>
@@ -203,7 +200,7 @@ class Message final :
std::string* _internal_mutable_senderuuid();
public:
// .google.protobuf.Any payload = 7;
// .google.protobuf.Any payload = 5;
bool has_payload() const;
private:
bool _internal_has_payload() const;
@@ -239,41 +236,6 @@ class Message final :
void _internal_set_msgtype(uint32_t value);
public:
// uint32 sourceType = 3;
void clear_sourcetype();
uint32_t sourcetype() const;
void set_sourcetype(uint32_t value);
private:
uint32_t _internal_sourcetype() const;
void _internal_set_sourcetype(uint32_t value);
public:
// optional uint32 sourceID = 5;
bool has_sourceid() const;
private:
bool _internal_has_sourceid() const;
public:
void clear_sourceid();
uint32_t sourceid() const;
void set_sourceid(uint32_t value);
private:
uint32_t _internal_sourceid() const;
void _internal_set_sourceid(uint32_t value);
public:
// optional uint32 parentID = 6;
bool has_parentid() const;
private:
bool _internal_has_parentid() const;
public:
void clear_parentid();
uint32_t parentid() const;
void set_parentid(uint32_t value);
private:
uint32_t _internal_parentid() const;
void _internal_set_parentid(uint32_t value);
public:
// @@protoc_insertion_point(class_scope:messages.header.Message)
private:
class _Internal;
@@ -282,15 +244,11 @@ class Message final :
typedef void InternalArenaConstructable_;
typedef void DestructorSkippable_;
struct Impl_ {
::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr senderuuid_;
::PROTOBUF_NAMESPACE_ID::Any* payload_;
uint32_t topic_;
uint32_t msgtype_;
uint32_t sourcetype_;
uint32_t sourceid_;
uint32_t parentid_;
mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
};
union { Impl_ _impl_; };
friend struct ::TableStruct_message_2eproto;
@@ -346,27 +304,7 @@ inline void Message::set_msgtype(uint32_t value) {
// @@protoc_insertion_point(field_set:messages.header.Message.msgType)
}
// uint32 sourceType = 3;
inline void Message::clear_sourcetype() {
_impl_.sourcetype_ = 0u;
}
inline uint32_t Message::_internal_sourcetype() const {
return _impl_.sourcetype_;
}
inline uint32_t Message::sourcetype() const {
// @@protoc_insertion_point(field_get:messages.header.Message.sourceType)
return _internal_sourcetype();
}
inline void Message::_internal_set_sourcetype(uint32_t value) {
_impl_.sourcetype_ = value;
}
inline void Message::set_sourcetype(uint32_t value) {
_internal_set_sourcetype(value);
// @@protoc_insertion_point(field_set:messages.header.Message.sourceType)
}
// string senderUUID = 4;
// string senderUUID = 3;
inline void Message::clear_senderuuid() {
_impl_.senderuuid_.ClearToEmpty();
}
@@ -416,63 +354,7 @@ inline void Message::set_allocated_senderuuid(std::string* senderuuid) {
// @@protoc_insertion_point(field_set_allocated:messages.header.Message.senderUUID)
}
// optional uint32 sourceID = 5;
inline bool Message::_internal_has_sourceid() const {
bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
return value;
}
inline bool Message::has_sourceid() const {
return _internal_has_sourceid();
}
inline void Message::clear_sourceid() {
_impl_.sourceid_ = 0u;
_impl_._has_bits_[0] &= ~0x00000001u;
}
inline uint32_t Message::_internal_sourceid() const {
return _impl_.sourceid_;
}
inline uint32_t Message::sourceid() const {
// @@protoc_insertion_point(field_get:messages.header.Message.sourceID)
return _internal_sourceid();
}
inline void Message::_internal_set_sourceid(uint32_t value) {
_impl_._has_bits_[0] |= 0x00000001u;
_impl_.sourceid_ = value;
}
inline void Message::set_sourceid(uint32_t value) {
_internal_set_sourceid(value);
// @@protoc_insertion_point(field_set:messages.header.Message.sourceID)
}
// optional uint32 parentID = 6;
inline bool Message::_internal_has_parentid() const {
bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
return value;
}
inline bool Message::has_parentid() const {
return _internal_has_parentid();
}
inline void Message::clear_parentid() {
_impl_.parentid_ = 0u;
_impl_._has_bits_[0] &= ~0x00000002u;
}
inline uint32_t Message::_internal_parentid() const {
return _impl_.parentid_;
}
inline uint32_t Message::parentid() const {
// @@protoc_insertion_point(field_get:messages.header.Message.parentID)
return _internal_parentid();
}
inline void Message::_internal_set_parentid(uint32_t value) {
_impl_._has_bits_[0] |= 0x00000002u;
_impl_.parentid_ = value;
}
inline void Message::set_parentid(uint32_t value) {
_internal_set_parentid(value);
// @@protoc_insertion_point(field_set:messages.header.Message.parentID)
}
// .google.protobuf.Any payload = 7;
// .google.protobuf.Any payload = 5;
inline bool Message::_internal_has_payload() const {
return this != internal_default_instance() && _impl_.payload_ != nullptr;
}

View File

@@ -9,13 +9,9 @@ package messages.header;
message Message {
uint32 topic = 1;
uint32 msgType = 2;
uint32 sourceType = 3;
string senderUUID = 4;
optional uint32 sourceID = 5;
optional uint32 parentID = 6;
string senderUUID = 3;
google.protobuf.Any payload = 7;
google.protobuf.Any payload = 5;
}

View File

@@ -18,7 +18,7 @@ namespace WHISPER {
StringData(std::string receivedMessage);
StringData(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::string data);
StringData(std::string senderID, std::string data);
};
}

View File

@@ -13,15 +13,14 @@ namespace WHISPER {
class localClient
{
public:
localClient(std::uint32_t port,std::string addr,std::uint32_t parentid,std::uint32_t id, std::shared_ptr<zmq::socket_t> clientSocket);
localClient(std::uint32_t port,std::string addr,std::string id, std::shared_ptr<zmq::socket_t> clientSocket);
~localClient();
std::uint32_t getPort();
std::string getAddr();
std::uint32_t getParentid();
std::uint32_t getID();
std::string getID();
void addClientSocket(std::shared_ptr<zmq::socket_t> socket);
std::shared_ptr<zmq::socket_t> getClientSocket();
@@ -35,8 +34,7 @@ namespace WHISPER {
const std::uint32_t port_;
const std::string addr_;
const std::uint32_t parentid_;
const std::uint32_t id_;
const std::string id_;
std::shared_ptr<zmq::socket_t> clientSocket_;
std::time_t lastResponse_;

View File

@@ -33,15 +33,23 @@ namespace WHISPER
{
// Add datatypes here
class whispercomm{
public:
whispercomm(std::string id):ownID_(id)
{};
void connect(std::shared_ptr<threadSafeQueue<WHISPER::Message>> receiver);
void publish(std::string msg,std::string topic);
void disconnect();
void subscribe(std::string topic);
void unsubscribe(std::string topic);
std::string getOwnID();
// SourceType getOwnDeviceType();
private:
/// device ID
std::uint32_t ownID_;
std::string ownID_;
/// device ID
std::uint32_t parentID_;
/// device Type
SourceType ownDeviceType_;
/// show if the service is connected or not
std::atomic<bool> connected;
@@ -62,18 +70,6 @@ namespace WHISPER
void receive();
public:
whispercomm(std::uint32_t parentid,std::uint32_t id, SourceType owndevicetype):parentID_(parentid),ownID_(id),ownDeviceType_(owndevicetype)
{};
void connect(std::shared_ptr<threadSafeQueue<WHISPER::Message>> receiver);
void publish(std::string msg,std::string topic);
void disconnect();
void subscribe(std::string topic);
void unsubscribe(std::string topic);
std::uint32_t getOwnID();
std::uint32_t getParentID();
SourceType getOwnDeviceType();
protected:

View File

@@ -27,8 +27,8 @@
namespace WHISPER {
InternalUDPService::InternalUDPService(std::uint32_t parentid,std::uint32_t id, SourceType owndevicetype,std::uint16_t port, std::string destinationAdress,std::string myAdress):
whispercomm(parentid,id, owndevicetype),port_(port),destinationAdress_(destinationAdress),myAdress_(myAdress)
InternalUDPService::InternalUDPService(std::string id, std::uint16_t port, std::string destinationAdress,std::string myAdress):
whispercomm(id),port_(port),destinationAdress_(destinationAdress),myAdress_(myAdress)
{
ctx = zmq::context_t(2);
sender = zmq::socket_t(ctx,zmq::socket_type::radio);
@@ -83,7 +83,7 @@ namespace WHISPER {
LOG_S(INFO)<<"own ID: "<< getOwnID();
WHISPER::Join join(getParentID(),getOwnID(),getOwnDeviceType(),ownReceivingPort_,myAdress_);
WHISPER::Join join(getOwnID(),ownReceivingPort_,myAdress_);
this->publish(join.serialize(),WHISPER::MsgTopicsMap[WHISPER::MsgTopics::MANAGEMENT]);
@@ -92,7 +92,7 @@ namespace WHISPER {
void InternalUDPService::derivedDisconnect()
{
WHISPER::Leave Leave(getParentID(),getOwnID(),getOwnDeviceType(),ownReceivingPort_,myAdress_);
WHISPER::Leave Leave(getOwnID(),ownReceivingPort_,myAdress_);
this->publish(Leave.serialize(),WHISPER::MsgTopicsMap[(WHISPER::MsgTopics)Leave.topic_]);
// unsubscribe(WHISPER::MsgTopicsMap[WHISPER::MsgTopics::MANAGEMENT]);
@@ -150,7 +150,7 @@ namespace WHISPER {
sendToLocalClients(receivedMessage.serialize(), WHISPER::MsgTopicsMap[(WHISPER::MsgTopics)receivedMessage.topic_]);
if (receivedMessage.deviceId_ != getOwnID())
if (receivedMessage.senderUUID_ != getOwnID())
{
int msgType = receivedMessage.msgType_;
@@ -168,7 +168,7 @@ namespace WHISPER {
{
for (auto it = localclients.begin(); it != localclients.end();it++)
{
if (it->get()->getPort() == join.port || it->get()->getID() == join.deviceId_)
if (it->get()->getPort() == join.port || it->get()->getID() == join.senderUUID_)
{
clientAllreadyIn = true;
}
@@ -181,7 +181,7 @@ namespace WHISPER {
auto tmpAddr = "udp://"+join.sourceAddr+":" + std::to_string(join.port);
auto tmpsocket = std::make_shared<zmq::socket_t>(ctx,zmq::socket_type::radio);
auto client = std::make_shared<localClient>(join.port,tmpAddr,join.parentId_,join.deviceId_, tmpsocket);
auto client = std::make_shared<localClient>(join.port,tmpAddr,join.senderUUID_, tmpsocket);
// client->port = join.port;
// client->id = join.deviceId_;
// client->parentid = join.parentId_;
@@ -207,7 +207,7 @@ namespace WHISPER {
if (localclients.size() > 0) {
for (auto it = localclients.begin(); it != localclients.end();it++)
{
if (it->get()->getPort() == Leave.port || (it->get()->getID() == Leave.deviceId_ && it->get()->getParentid() == Leave.deviceId_))
if (it->get()->getPort() == Leave.port || (it->get()->getID() == Leave.senderUUID_))
{
it->get()->getClientSocket()->close();
it = localclients.erase(it);
@@ -223,9 +223,9 @@ namespace WHISPER {
}else if(msgType == WHISPER::PING)
{
if (receivedMessage.deviceId_ != getOwnID() )
if (receivedMessage.senderUUID_ != getOwnID() )
{
WHISPER::Pong pong(getParentID(),getOwnID(),getOwnDeviceType(),ownReceivingPort_);
WHISPER::Pong pong(getOwnID(),ownReceivingPort_);
this->publish(pong.serialize(),WHISPER::MsgTopicsMap[WHISPER::MsgTopics::MANAGEMENT]);
}
@@ -238,7 +238,7 @@ namespace WHISPER {
for (auto it = localclients.begin(); it != localclients.end();it++)
{
if (pong.deviceId_ == it->get()->getID() && pong.parentId_ == it->get()->getParentid())
if (pong.senderUUID_ == it->get()->getID() )
{
it->get()->setLastResponse(std::time(nullptr));
}
@@ -262,7 +262,7 @@ namespace WHISPER {
auto tmpMsg = WHISPER::Message(msg);
for (auto it = localclients.begin(); it != localclients.end();it++)
{
if (tmpMsg.deviceId_ != it->get()->getID())
if (tmpMsg.senderUUID_ != it->get()->getID())
{
zmq::message_t tmp(msg.begin(),msg.end());
tmp.set_group(topic.c_str());
@@ -317,7 +317,7 @@ namespace WHISPER {
if (localclients.size() > 0)
{
WHISPER::Ping ping(getParentID(),getOwnID(),getOwnDeviceType(),port_);
WHISPER::Ping ping(getOwnID(),port_);
sendToLocalClients(ping.serialize(), WHISPER::MsgTopicsMap[WHISPER::MsgTopics::MANAGEMENT]);
for (auto it = localclients.begin(); it != localclients.end();it++)

View File

@@ -12,11 +12,9 @@ namespace WHISPER {
try {
msg.ParseFromString(receivedMessage);
topic_ = msg.topic();
sourceType_ = msg.sourcetype();
msgType_ = msg.msgtype();
joinMessage = messages::join::Join();
deviceId_ = msg.sourceid();
parentId_ = msg.parentid();
this->senderUUID_ = msg.senderuuid();
if (msg.mutable_payload()->Is<messages::join::Join>())
@@ -35,8 +33,8 @@ namespace WHISPER {
}
WHISPER::Join::Join(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port, std::string addr):
Message(parentID,deviceID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::JOIN,src),port(port),sourceAddr(addr)
WHISPER::Join::Join(std::string senderID, std::uint32_t port, std::string addr):
Message(senderID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::JOIN),port(port),sourceAddr(addr)
{
joinMessage = messages::join::Join();
joinMessage.set_port(port);

View File

@@ -12,9 +12,8 @@ namespace WHISPER {
try {
msg.ParseFromString(receivedMessage);
topic_ = msg.topic();
sourceType_ = msg.sourcetype();
msgType_ = msg.msgtype();
parentId_ = msg.parentid();
senderUUID_ = msg.senderuuid();
leaveMessage = messages::leave::Leave();
@@ -37,8 +36,8 @@ namespace WHISPER {
}
Leave::Leave(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port, std::string addr):
Message(parentID,deviceID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::LEAVE,src),port(port),sourceAddr(addr)
Leave::Leave(std::string senderID, std::uint32_t port, std::string addr):
Message(senderID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::LEAVE),port(port),sourceAddr(addr)
{
leaveMessage = messages::leave::Leave();

View File

@@ -13,12 +13,11 @@ namespace WHISPER {
try {
msg.ParseFromString(stringMessage);
deviceId_ = msg.sourceid();
topic_ = msg.topic();
sourceType_ = msg.sourcetype();
msgType_ = msg.msgtype();
parentId_ = msg.parentid();
senderUUID_ = msg.senderuuid();
auto ptr = std::make_shared<google::protobuf::Any>();
payload_->CopyFrom(*msg.mutable_payload());
} catch (const std::exception& e) {
LOG_S(ERROR)<<e.what();
@@ -26,15 +25,14 @@ namespace WHISPER {
}
Message::Message(std::string senderUUID, MsgTopics topic, MsgType Type,SourceType src):
senderUUID_(senderUUID),topic_(topic),sourceType_(src),msgType_(Type)
Message::Message(std::string senderUUID, MsgTopics topic, MsgType Type):
senderUUID_(senderUUID),topic_(topic),msgType_(Type)
{
msg = messages::header::Message();
if(msg.IsInitialized())
{
msg.set_topic(topic);
msg.set_sourcetype(sourceType_);
msg.set_msgtype(msgType_);
msg.set_senderuuid(senderUUID_);
@@ -42,22 +40,22 @@ namespace WHISPER {
}
Message::Message(std::uint32_t parentId,std::uint32_t deviceId, MsgTopics topic, MsgType Type,SourceType src):
parentId_(parentId),deviceId_(deviceId),topic_(topic),sourceType_(src),msgType_(Type)
{
msg = messages::header::Message();
// Message::Message(std::uint32_t parentId,std::uint32_t deviceId, MsgTopics topic, MsgType Type,SourceType src):
// parentId_(parentId),deviceId_(deviceId),topic_(topic),sourceType_(src),msgType_(Type)
// {
// msg = messages::header::Message();
if(msg.IsInitialized())
{
msg.set_sourceid(deviceId);
msg.set_topic(topic);
msg.set_sourcetype(sourceType_);
msg.set_msgtype(msgType_);
msg.set_parentid(parentId);
// if(msg.IsInitialized())
// {
// msg.set_sourceid(deviceId);
// msg.set_topic(topic);
// msg.set_sourcetype(sourceType_);
// msg.set_msgtype(msgType_);
// msg.set_parentid(parentId);
}
// }
}
// }

View File

@@ -13,11 +13,9 @@ namespace WHISPER {
try {
msg.ParseFromString(receivedMessage);
topic_ = msg.topic();
sourceType_ = msg.sourcetype();
msgType_ = msg.msgtype();
pingMessage = messages::ping::Ping();
deviceId_ = msg.sourceid();
parentId_ = msg.parentid();
senderUUID_ = msg.senderuuid();
if (msg.mutable_payload()->Is<messages::ping::Ping>())
@@ -36,8 +34,8 @@ namespace WHISPER {
}
WHISPER::Ping::Ping(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port):
Message(parentID,deviceID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::PING,src),port_(port)
WHISPER::Ping::Ping(std::string senderID, std::uint32_t port):
Message(senderID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::PING),port_(port)
{
pingMessage = messages::ping::Ping();
pingMessage.set_port(port_);

View File

@@ -13,11 +13,9 @@ namespace WHISPER {
try {
msg.ParseFromString(receivedMessage);
topic_ = msg.topic();
sourceType_ = msg.sourcetype();
msgType_ = msg.msgtype();
message_ = messages::pong::Pong();
deviceId_ = msg.sourceid();
parentId_ = msg.parentid();
senderUUID_ = msg.senderuuid();
if (msg.mutable_payload()->Is<messages::pong::Pong>())
{
@@ -35,8 +33,8 @@ namespace WHISPER {
}
WHISPER::Pong::Pong(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::uint32_t port):
Message(parentID,deviceID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::PONG,src),port_(port)
WHISPER::Pong::Pong(std::string senderID, std::uint32_t port):
Message(senderID,WHISPER::MsgTopics::MANAGEMENT,WHISPER::PONG),port_(port)
{
// message_ = messages::pong::Pong();
if (message_.IsInitialized()) {

View File

@@ -13,11 +13,9 @@ namespace WHISPER {
try {
msg.ParseFromString(receivedMessage);
topic_ = msg.topic();
sourceType_ = msg.sourcetype();
msgType_ = msg.msgtype();
message_ = messages::stringData::StringData();
deviceId_ = msg.sourceid();
parentId_ = msg.parentid();
senderUUID_ = msg.senderuuid();
if (msg.mutable_payload()->Is<messages::stringData::StringData>())
@@ -36,8 +34,8 @@ namespace WHISPER {
}
WHISPER::StringData::StringData(std::uint32_t parentID,std::uint32_t deviceID, SourceType src,std::string data):
Message(parentID,deviceID,WHISPER::MsgTopics::DATA,WHISPER::STRINGDATA,src),data_(data)
WHISPER::StringData::StringData(std::string senderID, std::string data):
Message(senderID,WHISPER::MsgTopics::DATA,WHISPER::STRINGDATA),data_(data)
{
message_ = messages::stringData::StringData();
message_.set_data(data);

View File

@@ -1,10 +1,11 @@
#include <WHISPER/localClients.hpp>
#include <string>
namespace WHISPER {
localClient::localClient(std::uint32_t port,std::string addr,std::uint32_t parentid,std::uint32_t id, std::shared_ptr<zmq::socket_t> clientSocket)
:port_(port),addr_(addr),parentid_(parentid),id_(id),clientSocket_(clientSocket),mx()
localClient::localClient(std::uint32_t port,std::string addr,std::string id, std::shared_ptr<zmq::socket_t> clientSocket)
:port_(port),addr_(addr),id_(id),clientSocket_(clientSocket),mx()
{
lastResponse_ = std::time(nullptr);
}
@@ -28,12 +29,8 @@ std::string localClient::getAddr()
std::lock_guard<std::mutex> lock(mx);
return addr_;
}
std::uint32_t localClient::getParentid()
{
std::lock_guard<std::mutex> lock(mx);
return parentid_;
}
std::uint32_t localClient::getID()
std::string localClient::getID()
{
std::lock_guard<std::mutex> lock(mx);
return id_;

View File

@@ -19,15 +19,12 @@
namespace WHISPER
{
std::uint32_t whispercomm::getOwnID()
std::string whispercomm::getOwnID()
{
return ownID_;
}
std::uint32_t whispercomm::getParentID()
{
return parentID_;
}
void whispercomm::connect(std::shared_ptr<threadSafeQueue<WHISPER::Message>> receiver)
{
@@ -111,10 +108,10 @@ namespace WHISPER
bool whispercomm::isGateway(){
return gateway;
}
SourceType whispercomm::getOwnDeviceType()
{
return ownDeviceType_;
}
// SourceType whispercomm::getOwnDeviceType()
// {
// return ownDeviceType_;
// }
void whispercomm::setConnected(bool val){