ktp_session.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #ifndef _klish_ktp_session_h
  2. #define _klish_ktp_session_h
  3. #include <faux/faux.h>
  4. #include <faux/list.h>
  5. #include <faux/eloop.h>
  6. #include <faux/error.h>
  7. #include <klish/ksession.h>
  8. #include <klish/ktp.h>
  9. #define USOCK_PATH_MAX sizeof(((struct sockaddr_un *)0)->sun_path)
  10. #define KLISH_DEFAULT_UNIX_SOCKET_PATH "/tmp/klish-unix-socket"
  11. typedef struct ktpd_session_s ktpd_session_t;
  12. typedef struct ktp_session_s ktp_session_t;
  13. C_DECL_BEGIN
  14. // Common KTP functions
  15. int ktp_connect_unix(const char *sun_path);
  16. void ktp_disconnect(int fd);
  17. int ktp_accept(int listen_sock);
  18. bool_t ktp_check_header(faux_hdr_t *hdr);
  19. faux_msg_t *ktp_msg_preform(ktp_cmd_e cmd, uint32_t status);
  20. bool_t ktp_send_error(faux_async_t *async, ktp_cmd_e cmd, const char *error);
  21. bool_t ktp_peer_ev(faux_eloop_t *eloop, faux_eloop_type_e type,
  22. void *associated_data, void *user_data);
  23. bool_t ktp_stall_cb(faux_async_t *async, size_t len, void *user_data);
  24. // Client KTP session
  25. typedef bool_t (*ktp_session_stdout_cb_fn)(ktp_session_t *ktp,
  26. const char *line, size_t len, void *user_data);
  27. ktp_session_t *ktp_session_new(int sock);
  28. void ktp_session_free(ktp_session_t *session);
  29. bool_t ktp_session_done(const ktp_session_t *ktp);
  30. bool_t ktp_session_set_done(ktp_session_t *ktp, bool_t done);
  31. faux_error_t *ktp_session_error(const ktp_session_t *ktp);
  32. bool_t ktp_session_set_stdout_cb(ktp_session_t *ktp,
  33. ktp_session_stdout_cb_fn stdout_cb, void *stdout_udata);
  34. bool_t ktp_session_set_stderr_cb(ktp_session_t *ktp,
  35. ktp_session_stdout_cb_fn stderr_cb, void *stderr_udata);
  36. bool_t ktp_session_connected(ktp_session_t *session);
  37. int ktp_session_fd(const ktp_session_t *session);
  38. bool_t ktp_session_req_cmd(ktp_session_t *ktp, const char *line,
  39. int *retcode, faux_error_t *error, bool_t dry_run);
  40. // Server KTP session
  41. typedef bool_t (*ktpd_session_stall_cb_fn)(ktpd_session_t *session,
  42. void *user_data);
  43. ktpd_session_t *ktpd_session_new(int sock, kscheme_t *scheme,
  44. const char *start_entry, faux_eloop_t *eloop);
  45. void ktpd_session_free(ktpd_session_t *session);
  46. bool_t ktpd_session_connected(ktpd_session_t *session);
  47. int ktpd_session_fd(const ktpd_session_t *session);
  48. bool_t ktpd_session_async_in(ktpd_session_t *session);
  49. bool_t ktpd_session_async_out(ktpd_session_t *session);
  50. C_DECL_END
  51. #endif // _klish_ktp_session_h