main.py 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. OK = 0
  4. ERROR = 1
  5. ## Return :: (HookSpec, State)
  6. ##
  7. ## HookSpec :: [(HookName, CallbackModule, CallbackFunction, Opts)]
  8. ## State :: Any
  9. ##
  10. ## HookName :: "client_connect" | "client_connack" | "client_connected" | ...
  11. ## CallbackModule :: ...
  12. ## CallbackFunctiin :: ...
  13. ## Opts :: [(Key, Value)]
  14. def init():
  15. ## Maybe a connection object?
  16. state = ()
  17. hookspec = [("client_connect", "main", "on_client_connect", []),
  18. ("client_connack", "main", "on_client_connack", []),
  19. ("client_connected", "main", "on_client_connected", []),
  20. ("client_disconnected", "main", "on_client_disconnected", []),
  21. ("client_authenticate", "main", "on_client_authenticate", []),
  22. ("client_check_acl", "main", "on_client_check_acl", []),
  23. ("client_subscribe", "main", "on_client_subscribe", []),
  24. ("client_unsubscribe", "main", "on_client_unsubscribe", []),
  25. ("session_created", "main", "on_session_created", []),
  26. ("session_subscribed", "main", "on_session_subscribed", []),
  27. ("session_unsubscribed","main", "on_session_unsubscribed", []),
  28. ("session_resumed", "main", "on_session_resumed", []),
  29. ("session_discarded", "main", "on_session_discarded", []),
  30. ("session_takeovered", "main", "on_session_takeovered", []),
  31. ("session_terminated", "main", "on_session_terminated", []),
  32. ("message_publish", "main", "on_message_publish", [("topics", ["t/#"])]),
  33. ("message_delivered", "main", "on_message_delivered", [("topics", ["t/#"])]),
  34. ("message_acked", "main", "on_message_acked", [("topics", ["t/#"])]),
  35. ("message_dropped", "main", "on_message_dropped", [("topics", ["t/#"])])
  36. ]
  37. return (OK, (hookspec, state))
  38. def deinit():
  39. return
  40. ##--------------------------------------------------------------------
  41. ## Callback functions
  42. ##--------------------------------------------------------------------
  43. ##--------------------------------------------------------------------
  44. ## Clients
  45. def on_client_connect(conninfo, props, state):
  46. print("on_client_connect: conninfo: {0}, props: {1}, state: {2}".format(conninfo, props, state))
  47. return
  48. def on_client_connack(conninfo, rc, props, state):
  49. print("on_client_connack: conninfo: {0}, rc{1}, props: {2}, state: {3}".format(conninfo, rc, props, state))
  50. return
  51. def on_client_connected(clientinfo, state):
  52. print("on_client_connected: clientinfo: {0}, state: {1}".format(clientinfo, state))
  53. return
  54. def on_client_disconnected(clientinfo, reason, state):
  55. print("on_client_disconnected: clientinfo: {0}, reason: {1}, state: {2}".format(clientinfo, reason, state))
  56. return
  57. def on_client_authenticate(clientinfo, authresult, state):
  58. print("on_client_authenticate: clientinfo: {0}, authresult: {1}, state: {2}".format(clientinfo, authresult, state))
  59. ## True / False
  60. return (OK, True)
  61. def on_client_check_acl(clientinfo, pubsub, topic, result, state):
  62. print("on_client_check_acl: clientinfo: {0}, pubsub: {1}, topic: {2}, result: {3}, state: {4}".format(clientinfo, pubsub, topic, result, state))
  63. ## True / False
  64. return (OK, True)
  65. def on_client_subscribe(clientinfo, props, topics, state):
  66. print("on_client_subscribe: clientinfo: {0}, props: {1}, topics: {2}, state: {3}".format(clientinfo, props, topics, state))
  67. return
  68. def on_client_unsubscribe(clientinfo, props, topics, state):
  69. print("on_client_unsubscribe: clientinfo: {0}, props: {1}, topics: {2}, state: {3}".format(clientinfo, props, topics, state))
  70. return
  71. ##--------------------------------------------------------------------
  72. ## Sessions
  73. def on_session_created(clientinfo, state):
  74. print("on_session_created: clientinfo: {0}, state: {1}".format(clientinfo, state))
  75. return
  76. def on_session_subscribed(clientinfo, topic, opts, state):
  77. print("on_session_subscribed: clientinfo: {0}, topic: {1}, opts: {2}, state: {3}".format(clientinfo, topic, opts, state))
  78. return
  79. def on_session_unsubscribed(clientinfo, topic, state):
  80. print("on_session_unsubscribed: clientinfo: {0}, topic: {1}, state: {2}".format(clientinfo, topic, state))
  81. return
  82. def on_session_resumed(clientinfo, state):
  83. print("on_session_resumed: clientinfo: {0}, state: {1}".format(clientinfo, state))
  84. return
  85. def on_session_discarded(clientinfo, state):
  86. print("on_session_discared: clientinfo: {0}, state: {1}".format(clientinfo, state))
  87. return
  88. def on_session_takeovered(clientinfo, state):
  89. print("on_session_takeovered: clientinfo: {0}, state: {1}".format(clientinfo, state))
  90. return
  91. def on_session_terminated(clientinfo, reason, state):
  92. print("on_session_terminated: clientinfo: {0}, reason: {1}, state: {2}".format(clientinfo, reason, state))
  93. return
  94. ##--------------------------------------------------------------------
  95. ## Messages
  96. def on_message_publish(message, state):
  97. print("on_message_publish: message: {0}, state: {1}".format(message, state))
  98. return message
  99. def on_message_dropped(message, reason, state):
  100. print("on_message_dropped: message: {0}, reason: {1}, state: {2}".format(message, reason, state))
  101. return
  102. def on_message_delivered(clientinfo, message, state):
  103. print("on_message_delivered: clientinfo: {0}, message: {1}, state: {2}".format(clientinfo, message, state))
  104. return
  105. def on_message_acked(clientinfo, message, state):
  106. print("on_message_acked: clientinfo: {0}, message: {1}, state: {2}".format(clientinfo, message, state))
  107. return