Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import gmod
  2. import inspect
  3. import flask.sansio.scaffold
  4. import threading
  5. import base64
  6. print(",,,")
  7. p=print
  8. sock = gmod.glob["sock"]
  9. app = gmod.glob["app"]
  10. def um_info(o):
  11. p()
  12. # return
  13. for en in dir(o):
  14. # if "url" not in en:continue
  15. p(en)
  16. p()
  17. # for en in o:
  18. # p(en)
  19. r'''
  20. @sock.route('/<path:path>')
  21. def echo2345(sock,*a,**kw):
  22. p("E2..",a,kw)
  23. while True:
  24. data = sock.receive()
  25. sock.send(data)
  26. for en in dir(sock):
  27. p(en)
  28. # '''
  29. import json
  30. def group_jsend(group,o,sender):
  31. # if type(sender=="")
  32. # sock.slf["channel_id"]
  33. slf = getattr(sender,"slf",None)
  34. _from = "IDK"
  35. if slf:
  36. _from= slf["channel_name"]
  37. # _from = "IDK"
  38. # slf["group"]
  39. o["from"]=_from
  40. p("SLF:",slf,sender)
  41. msg = json.dumps(o)
  42. send_to_channel(group,msg,sender)
  43. def send_to_channel(name,message,sender):
  44. group = gmod.glob["groups"].get(name,set())
  45. for en in group:
  46. pass
  47. p("....",en._srv_rec)
  48. # en._group_send(name,message)
  49. # en._srv_rec(name,message)
  50. en._srv_rec([name,message,sender])
  51. # en.(name,message)
  52. def add_to_channel(sock,name):
  53. pass
  54. gmod.glob["groups"].setdefault(name,set())
  55. group = gmod.glob["groups"].get(name)
  56. old_group_size = len(group)
  57. group.add(sock)
  58. return old_group_size
  59. # gmod.glob["groups"].setdefault
  60. def dicard_on_close(sock):
  61. gmod.glob["all_ws_conn"].discard(sock)
  62. for name,group in gmod.glob["groups"].items():
  63. group.discard(sock)
  64. def discard_closed():
  65. cnt = 0
  66. doomed = []
  67. p("~~~~~~~~~~~~~~~~~~~~~~~~~~")
  68. p(gmod.glob["all_ws_conn"])
  69. for en in gmod.glob["all_ws_conn"]:
  70. cnt +=1
  71. if not en.connected:
  72. # doomed.append(en)
  73. doomed += (en,)
  74. p(en,cnt,en.connected)
  75. # gmod.glob["all_ws_conn"].discard(en)
  76. gmod.glob["all_ws_conn"].difference_update(doomed)
  77. doomed_groups = []
  78. groups = gmod.glob["groups"]
  79. for name,group in groups.items():
  80. group.difference_update(doomed)
  81. if not len(group):
  82. doomed_groups.append(name)
  83. for name in doomed_groups:
  84. print("EMPTY:",name)
  85. del groups[name]
  86. p(doomed)
  87. def runinfo():
  88. # gmod.glob["groups"]={}
  89. # p("..",gmod.glob["groups"])
  90. # return
  91. # p("Q",gmod.glob["groups"])
  92. for name,group in gmod.glob["groups"].items():
  93. p(name,":::",len(group))
  94. if app._got_first_request:
  95. p(len(gmod.glob["all_ws_conn"]))
  96. for en in gmod.glob["all_ws_conn"]:
  97. p(en,en.connected)
  98. p(hash(1),hash(2),hash(en))
  99. # for e2 in dir(en):
  100. # p(e2)
  101. discard_closed()
  102. # empty str if no =
  103. # overwrites for multiple vals
  104. def parse_qs(s):
  105. o={}
  106. for param in s.split("&"):
  107. kv = (*param.split("=",1),"")
  108. o[kv[0]]=kv[1]
  109. return o
  110. try:
  111. runinfo()
  112. except Exception as E:
  113. p("ERR:",E)
  114. class cls_abc:
  115. def abc123(*a,**kw):
  116. p("abc123",a,kw)
  117. gmod.gx.group_jsend = group_jsend
  118. gmod.gx.send_to_channel = send_to_channel
  119. gmod.gx.add_to_channel = add_to_channel
  120. gmod.gx.dicard_on_close = dicard_on_close
  121. gmod.gx.discard_closed = discard_closed
  122. gmod.gx.parse_qs = parse_qs
  123. # class flask_channels
  124. cnt=0
  125. for thread in threading.enumerate():
  126. print(cnt,thread.name)
  127. cnt+=1