soup-socket.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
  2. /*
  3. * Copyright (C) 2000-2003, Ximian, Inc.
  4. */
  5. #ifndef SOUP_SOCKET_H
  6. #define SOUP_SOCKET_H 1
  7. #include <libsoup/soup-types.h>
  8. G_BEGIN_DECLS
  9. #define SOUP_TYPE_SOCKET (soup_socket_get_type ())
  10. #define SOUP_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SOCKET, SoupSocket))
  11. #define SOUP_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SOCKET, SoupSocketClass))
  12. #define SOUP_IS_SOCKET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SOCKET))
  13. #define SOUP_IS_SOCKET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_SOCKET))
  14. #define SOUP_SOCKET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_SOCKET, SoupSocketClass))
  15. struct _SoupSocket {
  16. GObject parent;
  17. };
  18. typedef struct {
  19. GObjectClass parent_class;
  20. /* signals */
  21. void (*readable) (SoupSocket *sock);
  22. void (*writable) (SoupSocket *sock);
  23. void (*disconnected) (SoupSocket *sock);
  24. void (*new_connection) (SoupSocket *listener, SoupSocket *new_sock);
  25. /* Padding for future expansion */
  26. void (*_libsoup_reserved1) (void);
  27. void (*_libsoup_reserved2) (void);
  28. void (*_libsoup_reserved3) (void);
  29. void (*_libsoup_reserved4) (void);
  30. } SoupSocketClass;
  31. #define SOUP_SOCKET_LOCAL_ADDRESS "local-address"
  32. #define SOUP_SOCKET_REMOTE_ADDRESS "remote-address"
  33. #define SOUP_SOCKET_FLAG_NONBLOCKING "non-blocking"
  34. #define SOUP_SOCKET_IS_SERVER "is-server"
  35. #define SOUP_SOCKET_SSL_CREDENTIALS "ssl-creds"
  36. #define SOUP_SOCKET_SSL_STRICT "ssl-strict"
  37. #define SOUP_SOCKET_SSL_FALLBACK "ssl-fallback"
  38. #define SOUP_SOCKET_TRUSTED_CERTIFICATE "trusted-certificate"
  39. #define SOUP_SOCKET_ASYNC_CONTEXT "async-context"
  40. #define SOUP_SOCKET_USE_THREAD_CONTEXT "use-thread-context"
  41. #define SOUP_SOCKET_TIMEOUT "timeout"
  42. #define SOUP_SOCKET_TLS_CERTIFICATE "tls-certificate"
  43. #define SOUP_SOCKET_TLS_ERRORS "tls-errors"
  44. typedef void (*SoupSocketCallback) (SoupSocket *sock,
  45. guint status,
  46. gpointer user_data);
  47. SOUP_AVAILABLE_IN_2_4
  48. GType soup_socket_get_type (void);
  49. SOUP_AVAILABLE_IN_2_4
  50. SoupSocket *soup_socket_new (const char *optname1,
  51. ...) G_GNUC_NULL_TERMINATED;
  52. SOUP_AVAILABLE_IN_2_4
  53. void soup_socket_connect_async (SoupSocket *sock,
  54. GCancellable *cancellable,
  55. SoupSocketCallback callback,
  56. gpointer user_data);
  57. SOUP_AVAILABLE_IN_2_4
  58. guint soup_socket_connect_sync (SoupSocket *sock,
  59. GCancellable *cancellable);
  60. SOUP_AVAILABLE_IN_2_4
  61. int soup_socket_get_fd (SoupSocket *sock);
  62. SOUP_AVAILABLE_IN_2_4
  63. gboolean soup_socket_listen (SoupSocket *sock);
  64. SOUP_AVAILABLE_IN_2_4
  65. gboolean soup_socket_start_ssl (SoupSocket *sock,
  66. GCancellable *cancellable);
  67. SOUP_AVAILABLE_IN_2_4
  68. gboolean soup_socket_start_proxy_ssl (SoupSocket *sock,
  69. const char *ssl_host,
  70. GCancellable *cancellable);
  71. SOUP_AVAILABLE_IN_2_4
  72. gboolean soup_socket_is_ssl (SoupSocket *sock);
  73. SOUP_AVAILABLE_IN_2_4
  74. void soup_socket_disconnect (SoupSocket *sock);
  75. SOUP_AVAILABLE_IN_2_4
  76. gboolean soup_socket_is_connected (SoupSocket *sock);
  77. SOUP_AVAILABLE_IN_2_4
  78. SoupAddress *soup_socket_get_local_address (SoupSocket *sock);
  79. SOUP_AVAILABLE_IN_2_4
  80. SoupAddress *soup_socket_get_remote_address (SoupSocket *sock);
  81. typedef enum {
  82. SOUP_SOCKET_OK,
  83. SOUP_SOCKET_WOULD_BLOCK,
  84. SOUP_SOCKET_EOF,
  85. SOUP_SOCKET_ERROR
  86. } SoupSocketIOStatus;
  87. SOUP_AVAILABLE_IN_2_4
  88. SoupSocketIOStatus soup_socket_read (SoupSocket *sock,
  89. gpointer buffer,
  90. gsize len,
  91. gsize *nread,
  92. GCancellable *cancellable,
  93. GError **error);
  94. SOUP_AVAILABLE_IN_2_4
  95. SoupSocketIOStatus soup_socket_read_until (SoupSocket *sock,
  96. gpointer buffer,
  97. gsize len,
  98. gconstpointer boundary,
  99. gsize boundary_len,
  100. gsize *nread,
  101. gboolean *got_boundary,
  102. GCancellable *cancellable,
  103. GError **error);
  104. SOUP_AVAILABLE_IN_2_4
  105. SoupSocketIOStatus soup_socket_write (SoupSocket *sock,
  106. gconstpointer buffer,
  107. gsize len,
  108. gsize *nwrote,
  109. GCancellable *cancellable,
  110. GError **error);
  111. G_END_DECLS
  112. #endif /* SOUP_SOCKET_H */