@@ -26,7 +26,7 @@ class HiveMessageType(str, Enum):
26
26
27
27
class HiveMessage :
28
28
def __init__ (self , msg_type , payload = None , node = None , source_peer = None ,
29
- route = None , target_peers = None , meta = None ):
29
+ route = None , target_peers = None , meta = None , target_site_id = None ):
30
30
# except for the hivemind node classes receiving the message and
31
31
# creating the object nothing should be able to change these values
32
32
# node classes might change them a runtime by the private attribute
@@ -50,12 +50,17 @@ def __init__(self, msg_type, payload=None, node=None, source_peer=None,
50
50
payload = json .loads (payload )
51
51
self ._payload = payload or {}
52
52
53
+ self ._site_id = target_site_id
53
54
self ._node = node # node semi-unique identifier
54
55
self ._source_peer = source_peer # peer_id
55
56
self ._route = route or [] # where did this message come from
56
57
self ._targets = target_peers or [] # where will it be sent
57
58
self ._meta = meta or {}
58
59
60
+ @property
61
+ def target_site_id (self ):
62
+ return self ._site_id
63
+
59
64
@property
60
65
def msg_type (self ):
61
66
return self ._msg_type
@@ -104,6 +109,7 @@ def as_dict(self):
104
109
"payload" : pload ,
105
110
"route" : self .route ,
106
111
"node" : self .node_id ,
112
+ "target_site_id" : self .target_site_id ,
107
113
"source_peer" : self .source_peer }
108
114
109
115
@property
@@ -120,19 +126,22 @@ def deserialize(payload):
120
126
121
127
if "msg_type" in payload :
122
128
try :
123
- return HiveMessage (payload ["msg_type" ], payload ["payload" ])
129
+ return HiveMessage (payload ["msg_type" ], payload ["payload" ],
130
+ target_site_id = payload .get ("target_site_id" ))
124
131
except :
125
132
pass # not a hivemind message
126
133
127
134
if "type" in payload :
128
135
try :
129
136
# NOTE: technically could also be SHARED_BUS or THIRDPRTY
130
137
return HiveMessage (HiveMessageType .BUS ,
131
- Message .deserialize (payload ))
138
+ Message .deserialize (payload ),
139
+ target_site_id = payload .get ("target_site_id" ))
132
140
except :
133
141
pass # not a mycroft message
134
142
135
- return HiveMessage (HiveMessageType .THIRDPRTY , payload )
143
+ return HiveMessage (HiveMessageType .THIRDPRTY , payload ,
144
+ target_site_id = payload .get ("target_site_id" ))
136
145
137
146
def __getitem__ (self , item ):
138
147
return self ._payload .get (item )
0 commit comments