dimples 0.5.7__tar.gz → 0.5.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. {dimples-0.5.7 → dimples-0.5.8}/PKG-INFO +1 -1
  2. {dimples-0.5.7 → dimples-0.5.8}/dimples/edge/octopus.py +8 -9
  3. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/dispatcher.py +21 -13
  4. {dimples-0.5.7 → dimples-0.5.8}/dimples.egg-info/PKG-INFO +1 -1
  5. {dimples-0.5.7 → dimples-0.5.8}/setup.py +1 -1
  6. {dimples-0.5.7 → dimples-0.5.8}/README.md +0 -0
  7. {dimples-0.5.7 → dimples-0.5.8}/dimples/__init__.py +0 -0
  8. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/__init__.py +0 -0
  9. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/archivist.py +0 -0
  10. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/checkpoint.py +0 -0
  11. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/__init__.py +0 -0
  12. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/commands.py +0 -0
  13. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/creator.py +0 -0
  14. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/group.py +0 -0
  15. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_expel.py +0 -0
  16. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_invite.py +0 -0
  17. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_join.py +0 -0
  18. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_query.py +0 -0
  19. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_quit.py +0 -0
  20. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_reset.py +0 -0
  21. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/grp_resign.py +0 -0
  22. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/cpu/handshake.py +0 -0
  23. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/facebook.py +0 -0
  24. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/messenger.py +0 -0
  25. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/network/__init__.py +0 -0
  26. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/network/session.py +0 -0
  27. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/network/state.py +0 -0
  28. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/network/transition.py +0 -0
  29. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/packer.py +0 -0
  30. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/processor.py +0 -0
  31. {dimples-0.5.7 → dimples-0.5.8}/dimples/client/terminal.py +0 -0
  32. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/__init__.py +0 -0
  33. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/anonymous.py +0 -0
  34. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/ans.py +0 -0
  35. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/archivist.py +0 -0
  36. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/compat/__init__.py +0 -0
  37. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/compat/btc.py +0 -0
  38. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/compat/compatible.py +0 -0
  39. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/compat/entity.py +0 -0
  40. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/compat/meta.py +0 -0
  41. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/compat/network.py +0 -0
  42. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/dbi/__init__.py +0 -0
  43. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/dbi/account.py +0 -0
  44. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/dbi/message.py +0 -0
  45. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/dbi/session.py +0 -0
  46. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/facebook.py +0 -0
  47. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/messenger.py +0 -0
  48. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/packer.py +0 -0
  49. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/processer.py +0 -0
  50. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/__init__.py +0 -0
  51. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/ans.py +0 -0
  52. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/block.py +0 -0
  53. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/handshake.py +0 -0
  54. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/login.py +0 -0
  55. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/mute.py +0 -0
  56. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/protocol/report.py +0 -0
  57. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/register.py +0 -0
  58. {dimples-0.5.7 → dimples-0.5.8}/dimples/common/session.py +0 -0
  59. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/__init__.py +0 -0
  60. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/gate.py +0 -0
  61. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/gatekeeper.py +0 -0
  62. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/mars.py +0 -0
  63. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/mtp.py +0 -0
  64. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/protocol/__init__.py +0 -0
  65. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/protocol/mars.py +0 -0
  66. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/protocol/ws.py +0 -0
  67. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/queue.py +0 -0
  68. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/seeker.py +0 -0
  69. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/session.py +0 -0
  70. {dimples-0.5.7 → dimples-0.5.8}/dimples/conn/ws.py +0 -0
  71. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/__init__.py +0 -0
  72. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/account.py +0 -0
  73. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/__init__.py +0 -0
  74. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/base.py +0 -0
  75. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/document.py +0 -0
  76. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/group.py +0 -0
  77. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/group_history.py +0 -0
  78. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/group_keys.py +0 -0
  79. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/login.py +0 -0
  80. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/meta.py +0 -0
  81. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/private.py +0 -0
  82. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/station.py +0 -0
  83. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/dos/user.py +0 -0
  84. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/message.py +0 -0
  85. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/session.py +0 -0
  86. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_cipherkey.py +0 -0
  87. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_document.py +0 -0
  88. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_group.py +0 -0
  89. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_group_history.py +0 -0
  90. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_group_keys.py +0 -0
  91. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_login.py +0 -0
  92. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_message.py +0 -0
  93. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_meta.py +0 -0
  94. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_private.py +0 -0
  95. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_station.py +0 -0
  96. {dimples-0.5.7 → dimples-0.5.8}/dimples/database/t_user.py +0 -0
  97. {dimples-0.5.7 → dimples-0.5.8}/dimples/edge/__init__.py +0 -0
  98. {dimples-0.5.7 → dimples-0.5.8}/dimples/edge/shared.py +0 -0
  99. {dimples-0.5.7 → dimples-0.5.8}/dimples/edge/start.py +0 -0
  100. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/__init__.py +0 -0
  101. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/admin.py +0 -0
  102. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/builder.py +0 -0
  103. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/delegate.py +0 -0
  104. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/emitter.py +0 -0
  105. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/helper.py +0 -0
  106. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/manager.py +0 -0
  107. {dimples-0.5.7 → dimples-0.5.8}/dimples/group/packer.py +0 -0
  108. {dimples-0.5.7 → dimples-0.5.8}/dimples/register/__init__.py +0 -0
  109. {dimples-0.5.7 → dimples-0.5.8}/dimples/register/base.py +0 -0
  110. {dimples-0.5.7 → dimples-0.5.8}/dimples/register/ext.py +0 -0
  111. {dimples-0.5.7 → dimples-0.5.8}/dimples/register/run.py +0 -0
  112. {dimples-0.5.7 → dimples-0.5.8}/dimples/register/shared.py +0 -0
  113. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/__init__.py +0 -0
  114. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/archivist.py +0 -0
  115. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/cpu/__init__.py +0 -0
  116. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/cpu/ans.py +0 -0
  117. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/cpu/document.py +0 -0
  118. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/cpu/handshake.py +0 -0
  119. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/cpu/login.py +0 -0
  120. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/cpu/report.py +0 -0
  121. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/messenger.py +0 -0
  122. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/packer.py +0 -0
  123. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/processor.py +0 -0
  124. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/push.py +0 -0
  125. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/session.py +0 -0
  126. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/session_center.py +0 -0
  127. {dimples-0.5.7 → dimples-0.5.8}/dimples/server/trace.py +0 -0
  128. {dimples-0.5.7 → dimples-0.5.8}/dimples/station/__init__.py +0 -0
  129. {dimples-0.5.7 → dimples-0.5.8}/dimples/station/handler.py +0 -0
  130. {dimples-0.5.7 → dimples-0.5.8}/dimples/station/shared.py +0 -0
  131. {dimples-0.5.7 → dimples-0.5.8}/dimples/station/start.py +0 -0
  132. {dimples-0.5.7 → dimples-0.5.8}/dimples/utils/__init__.py +0 -0
  133. {dimples-0.5.7 → dimples-0.5.8}/dimples/utils/cache.py +0 -0
  134. {dimples-0.5.7 → dimples-0.5.8}/dimples/utils/config.py +0 -0
  135. {dimples-0.5.7 → dimples-0.5.8}/dimples/utils/dos.py +0 -0
  136. {dimples-0.5.7 → dimples-0.5.8}/dimples/utils/log.py +0 -0
  137. {dimples-0.5.7 → dimples-0.5.8}/dimples/utils/singleton.py +0 -0
  138. {dimples-0.5.7 → dimples-0.5.8}/dimples.egg-info/SOURCES.txt +0 -0
  139. {dimples-0.5.7 → dimples-0.5.8}/dimples.egg-info/dependency_links.txt +0 -0
  140. {dimples-0.5.7 → dimples-0.5.8}/dimples.egg-info/entry_points.txt +0 -0
  141. {dimples-0.5.7 → dimples-0.5.8}/dimples.egg-info/requires.txt +0 -0
  142. {dimples-0.5.7 → dimples-0.5.8}/dimples.egg-info/top_level.txt +0 -0
  143. {dimples-0.5.7 → dimples-0.5.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dimples
3
- Version: 0.5.7
3
+ Version: 0.5.8
4
4
  Summary: DIMP Library for Edges and Stations
5
5
  Home-page: https://github.com/dimchat/demo-py
6
6
  Author: Albert Moky
@@ -220,15 +220,14 @@ class Octopus(Runner, Logging):
220
220
  old_recipients = msg.get('recipients')
221
221
  old_recipients = [] if old_recipients is None else ID.convert(old_recipients)
222
222
  for item in neighbors:
223
- if item not in old_recipients:
224
- new_recipients.add(item)
225
- all_recipients = []
226
- for item in old_recipients:
227
- all_recipients.append(item)
228
- # avoid the new recipients redirect it to same targets
229
- self.info(msg='append new recipients: %s, %s => %s' % (receiver, new_recipients, all_recipients))
230
- for item in new_recipients:
231
- all_recipients.append(item)
223
+ if item in old_recipients:
224
+ self.info(msg='skip exists station: %s' % item)
225
+ continue
226
+ self.info(msg='new neighbor station: %s' % item)
227
+ new_recipients.add(item)
228
+ # update 'recipients' to avoid the new recipients redirect it to same targets
229
+ self.info(msg='append new recipients: %s, %s + %s' % (receiver, new_recipients, old_recipients))
230
+ all_recipients = list(old_recipients) + list(new_recipients)
232
231
  msg['recipients'] = ID.revert(all_recipients)
233
232
  #
234
233
  # 1. send to the new recipients (neighbor stations)
@@ -206,6 +206,9 @@ class Dispatcher(MessageDeliver, Logging):
206
206
  return [res]
207
207
 
208
208
  def __broadcast_message(self, msg: ReliableMessage, receiver: ID, neighbors: Set[ID]) -> List[Content]:
209
+ current = self.facebook.current_user
210
+ assert current is not None, 'failed to get current station'
211
+ current = current.identifier
209
212
  #
210
213
  # 0. check recipients
211
214
  #
@@ -213,15 +216,17 @@ class Dispatcher(MessageDeliver, Logging):
213
216
  old_recipients = msg.get('recipients')
214
217
  old_recipients = [] if old_recipients is None else ID.convert(old_recipients)
215
218
  for item in neighbors:
216
- if item not in old_recipients:
217
- new_recipients.add(item)
218
- all_recipients = []
219
- for item in old_recipients:
220
- all_recipients.append(item)
221
- # avoid the new recipients redirect it to same targets
222
- self.info(msg='append new recipients: %s, %s => %s' % (receiver, new_recipients, all_recipients))
223
- for item in new_recipients:
224
- all_recipients.append(item)
219
+ if item == current:
220
+ self.info(msg='skip current station: %s' % item)
221
+ continue
222
+ elif item in old_recipients:
223
+ self.info(msg='skip exists station: %s' % item)
224
+ continue
225
+ self.info(msg='new neighbor station: %s' % item)
226
+ new_recipients.add(item)
227
+ # set 'recipients' in the msg to avoid the new recipients redirect it to same targets
228
+ self.info(msg='append new recipients: %s, %s + %s' % (receiver, new_recipients, old_recipients))
229
+ all_recipients = list(old_recipients) + list(new_recipients)
225
230
  msg['recipients'] = ID.revert(all_recipients)
226
231
  #
227
232
  # 1. push to neighbor stations directly
@@ -230,10 +235,13 @@ class Dispatcher(MessageDeliver, Logging):
230
235
  for target in new_recipients:
231
236
  if session_push(msg=msg, receiver=target) == 0:
232
237
  indirect_neighbors.add(target)
233
- if len(indirect_neighbors) > 0:
234
- for item in indirect_neighbors:
235
- all_recipients.remove(item)
236
- msg['recipients'] = ID.revert(all_recipients)
238
+ # remove unsuccessful items
239
+ for item in indirect_neighbors:
240
+ new_recipients.discard(item)
241
+ # update 'recipients' before redirect via bridge
242
+ self.info(msg='update recipients: %s, %s + %s' % (receiver, new_recipients, old_recipients))
243
+ all_recipients = list(old_recipients) + list(new_recipients)
244
+ msg['recipients'] = ID.revert(all_recipients)
237
245
  #
238
246
  # 2. push to other neighbor stations via station bridge
239
247
  #
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dimples
3
- Version: 0.5.7
3
+ Version: 0.5.8
4
4
  Summary: DIMP Library for Edges and Stations
5
5
  Home-page: https://github.com/dimchat/demo-py
6
6
  Author: Albert Moky
@@ -14,7 +14,7 @@ import io
14
14
 
15
15
  from setuptools import setup, find_packages
16
16
 
17
- __version__ = '0.5.7'
17
+ __version__ = '0.5.8'
18
18
  __author__ = 'Albert Moky'
19
19
  __contact__ = 'albert.moky@gmail.com'
20
20
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes