doubao_chat/include_lib/net/nopoll/nopoll_conn.h

248 lines
9.5 KiB
C

/*
* LibNoPoll: A websocket library
* Copyright (C) 2017 Advanced Software Production Line, S.L.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
*
* You may find a copy of the license under this software is released
* at COPYING file. This is LGPL software: you are welcome to develop
* proprietary applications using this library without any royalty or
* fee but returning back any change, improvement or addition in the
* form of source code, project image, documentation patches, etc.
*
* For commercial support on build Websocket enabled solutions
* contact us:
*
* Postal address:
* Advanced Software Production Line, S.L.
* Av. Juan Carlos I, Nº13, 2ºC
* Alcalá de Henares 28806 Madrid
* Spain
*
* Email address:
* info@aspl.es - http://www.aspl.es/nopoll
*/
#ifndef __NOPOLL_CONN_H__
#define __NOPOLL_CONN_H__
#include <nopoll.h>
BEGIN_C_DECLS
noPollConn *nopoll_conn_new(noPollCtx *ctx,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
#if defined(NOPOLL_LWIP_IPV6)
noPollConn *nopoll_conn_new6(noPollCtx *ctx,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
#endif
noPollConn *nopoll_conn_new_opts(noPollCtx *ctx,
noPollConnOpts *opts,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
noPollConn *nopoll_conn_new_with_socket(noPollCtx *ctx,
noPollConnOpts *opts,
int socket,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
noPollConn *nopoll_conn_tls_new(noPollCtx *ctx,
noPollConnOpts *options,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
#if defined(NOPOLL_LWIP_IPV6)
noPollConn *nopoll_conn_tls_new6(noPollCtx *ctx,
noPollConnOpts *options,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
#endif
noPollConn *nopoll_conn_tls_new_with_socket(noPollCtx *ctx,
noPollConnOpts *options,
int socket,
const char *host_ip,
const char *host_port,
const char *host_name,
const char *get_url,
const char *protocols,
const char *origin);
noPollConn *nopoll_conn_accept(noPollCtx *ctx, noPollConn *listener);
noPollConn *nopoll_conn_accept_socket(noPollCtx *ctx, noPollConn *listener, NOPOLL_SOCKET session);
nopoll_bool nopoll_conn_accept_complete(noPollCtx *ctx,
noPollConn *listener,
noPollConn *conn,
NOPOLL_SOCKET session,
nopoll_bool tls_on);
nopoll_bool nopoll_conn_ref(noPollConn *conn);
int nopoll_conn_ref_count(noPollConn *conn);
void nopoll_conn_unref(noPollConn *conn);
nopoll_bool nopoll_conn_is_ok(noPollConn *conn);
nopoll_bool nopoll_conn_is_ready(noPollConn *conn);
nopoll_bool nopoll_conn_is_tls_on(noPollConn *conn);
NOPOLL_SOCKET nopoll_conn_socket(noPollConn *conn);
void nopoll_conn_set_socket(noPollConn *conn, NOPOLL_SOCKET _socket);
int nopoll_conn_get_id(noPollConn *conn);
const char *nopoll_conn_get_requested_url(noPollConn *conn);
noPollCtx *nopoll_conn_ctx(noPollConn *conn);
noPollRole nopoll_conn_role(noPollConn *conn);
const char *nopoll_conn_host(noPollConn *conn);
const char *nopoll_conn_port(noPollConn *conn);
const char *nopoll_conn_get_origin(noPollConn *conn);
const char *nopoll_conn_get_host_header(noPollConn *conn);
const char *nopoll_conn_get_cookie(noPollConn *conn);
const char *nopoll_conn_get_accepted_protocol(noPollConn *conn);
const char *nopoll_conn_get_requested_protocol(noPollConn *conn);
void nopoll_conn_set_accepted_protocol(noPollConn *conn, const char *protocol);
int nopoll_conn_get_close_status(noPollConn *conn);
const char *nopoll_conn_get_close_reason(noPollConn *conn);
void nopoll_conn_shutdown(noPollConn *conn);
void nopoll_conn_close(noPollConn *conn);
void nopoll_conn_close_ext(noPollConn *conn, int status, const char *reason, int reason_size);
void nopoll_conn_set_hook(noPollConn *conn, noPollPtr ptr);
noPollPtr nopoll_conn_get_hook(noPollConn *conn);
nopoll_bool nopoll_conn_set_sock_block(NOPOLL_SOCKET socket,
nopoll_bool enable);
noPollMsg *nopoll_conn_get_msg(noPollConn *conn);
int nopoll_conn_send_text(noPollConn *conn, const char *content, long length);
int nopoll_conn_send_text_fragment(noPollConn *conn, const char *content, long length);
int nopoll_conn_send_binary(noPollConn *conn, const char *content, long length);
int nopoll_conn_send_binary_fragment(noPollConn *conn, const char *content, long length);
int nopoll_conn_complete_pending_write(noPollConn *conn);
int nopoll_conn_pending_write_bytes(noPollConn *conn);
int nopoll_conn_flush_writes(noPollConn *conn, long timeout, int previous_result);
int nopoll_conn_read(noPollConn *conn, char *buffer, int bytes, nopoll_bool block, long int timeout);
int nopoll_conn_read_pending(noPollConn *conn);
noPollConn *nopoll_conn_get_listener(noPollConn *conn);
nopoll_bool nopoll_conn_send_ping(noPollConn *conn);
nopoll_bool nopoll_conn_send_pong(noPollConn *conn, long length, noPollPtr content);
void nopoll_conn_set_on_msg(noPollConn *conn,
noPollOnMessageHandler on_msg,
noPollPtr user_data);
void nopoll_conn_set_on_ready(noPollConn *conn,
noPollActionHandler on_ready,
noPollPtr user_data);
void nopoll_conn_set_on_close(noPollConn *conn,
noPollOnCloseHandler on_close,
noPollPtr user_data);
int nopoll_conn_send_frame(noPollConn *conn, nopoll_bool fin, nopoll_bool masked,
noPollOpCode op_code, long length, noPollPtr content,
long sleep_in_header);
int __nopoll_conn_send_common(noPollConn *conn,
const char *content,
long length,
nopoll_bool has_fin,
long sleep_in_header,
noPollOpCode frame_type);
nopoll_bool nopoll_conn_wait_until_connection_ready(noPollConn *conn,
int timeout);
void nopoll_conn_connect_timeout(noPollCtx *ctx,
long microseconds_to_wait);
long nopoll_conn_get_connect_timeout(noPollCtx *ctx);
/** internal api **/
void nopoll_conn_complete_handshake(noPollConn *conn);
int nopoll_conn_default_receive(noPollConn *conn, char *buffer, int buffer_size);
int nopoll_conn_default_send(noPollConn *conn, char *buffer, int buffer_size);
void nopoll_conn_mask_content(noPollCtx *ctx, char *payload, int payload_size, char *mask, int desp);
END_C_DECLS
#endif