controller.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /******************************************************************
  2. *
  3. * uEcho for C
  4. *
  5. * Copyright (C) Satoshi Konno 2015
  6. *
  7. * This is licensed under BSD-style license, see file COPYING.
  8. *
  9. ******************************************************************/
  10. #ifndef _UECHO_CONTROLLER_H_
  11. #define _UECHO_CONTROLLER_H_
  12. #include <uecho/const.h>
  13. #include <uecho/node.h>
  14. #include <uecho/typedef.h>
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. /****************************************
  19. * Constant
  20. ****************************************/
  21. #define uEchoControllerPostResponseMaxMiliTime 5000
  22. /****************************************
  23. * Data Type
  24. ****************************************/
  25. #if !defined(_UECHO_CONTROLLER_INTERNAL_H_)
  26. typedef void uEchoController;
  27. #endif
  28. typedef void (*uEchoControllerMessageListener)(uEchoController*, uEchoMessage*);
  29. typedef void (*uEchoControllerNodeListener)(uEchoController*, uEchoNode*, uEchoNodeStatus, uEchoMessage*);
  30. /****************************************
  31. * Function
  32. ****************************************/
  33. uEchoController* uecho_controller_new(void);
  34. bool uecho_controller_delete(uEchoController* ctrl);
  35. bool uecho_controller_addnode(uEchoController* ctrl, uEchoNode* node);
  36. uEchoNode* uecho_controller_getnodebyaddress(uEchoController* ctrl, const char* addr);
  37. uEchoNode* uecho_controller_getnodes(uEchoController* ctrl);
  38. size_t uecho_controller_getnodecount(uEchoController* ctrl);
  39. void uecho_controller_setmessagelistener(uEchoController* ctrl, uEchoControllerMessageListener listener);
  40. void uecho_controller_setnodelistener(uEchoController* ctrl, uEchoControllerNodeListener listener);
  41. bool uecho_controller_search(uEchoController* ctrl);
  42. bool uecho_controller_searchobject(uEchoController* ctrl, byte obj_code);
  43. bool uecho_controller_announcemessage(uEchoController* ctrl, uEchoMessage* msg);
  44. bool uecho_controller_sendmessage(uEchoController* ctrl, uEchoNode* node, uEchoMessage* msg);
  45. void uecho_controller_setpostwaitemilitime(uEchoController* ctrl, clock_t mtime);
  46. clock_t uecho_controller_getpostwaitemilitime(uEchoController* ctrl);
  47. bool uecho_controller_postmessage(uEchoController* ctrl, uEchoNode* node, uEchoMessage* req_msg, uEchoMessage* res_msg);
  48. bool uecho_controller_start(uEchoController* ctrl);
  49. bool uecho_controller_stop(uEchoController* ctrl);
  50. bool uecho_controller_isrunning(uEchoController* ctrl);
  51. void uecho_controller_setuserdata(uEchoController* ctrl, void* data);
  52. void* uecho_controller_getuserdata(uEchoController* ctrl);
  53. uEchoNode* uecho_controller_getlocalnode(uEchoController* ctrl);
  54. /****************************************
  55. * Function (Node)
  56. ****************************************/
  57. uEchoController* uecho_node_getcontroller(uEchoNode* node);
  58. #ifdef __cplusplus
  59. }
  60. #endif
  61. #endif /* _UECHO_CONTROLLER_H_ */