src/modules/websocket/ws_frame.h
48e7ee70
 /*
a33d556f
  * Copyright (C) 2012-2013 Crocodile RCS Ltd
48e7ee70
  *
  * This file is part of Kamailio, a free SIP server.
  *
  * Kamailio is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  *
  * Kamailio 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 General Public License for more details.
  *
634336dc
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
9e1ff448
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
48e7ee70
  *
661d7d3a
  * Exception: permission to copy, modify, propagate, and distribute a work
  * formed by combining OpenSSL toolkit software and the code in this file,
  * such as linking with software components and libraries released under
  * OpenSSL project license.
  *
48e7ee70
  */
 
 #ifndef _WS_FRAME_H
 #define _WS_FRAME_H
 
cf83221d
 #include "../../core/config.h"
 #include "../../core/sr_module.h"
 #include "../../core/str.h"
53e603f5
 #include "../../core/events.h"
2f2bf30e
 #include "../../core/rpc.h"
2f30521e
 #include "ws_conn.h"
 
fa7688bb
 typedef enum { LOCAL_CLOSE = 0, REMOTE_CLOSE } ws_close_type_t;
2f30521e
 
5d8239f5
 enum
 {
 	KEEPALIVE_MECHANISM_NONE = 0,
 	KEEPALIVE_MECHANISM_PING = 1,
b4cf8f68
 	KEEPALIVE_MECHANISM_PONG = 2,
 	KEEPALIVE_MECHANISM_CONCHECK = 3
5d8239f5
 };
fa7688bb
 #define DEFAULT_KEEPALIVE_MECHANISM KEEPALIVE_MECHANISM_PING
5d8239f5
 extern int ws_keepalive_mechanism;
 
fa7688bb
 #define DEFAULT_KEEPALIVE_TIMEOUT 180 /* seconds */
a33d556f
 
5d8239f5
 extern str ws_ping_application_data;
c0e687d8
 #define DEFAULT_PING_APPLICATION_DATA SRVAPP_SIGNATURE
 #define DEFAULT_PING_APPLICATION_DATA_LEN SRVAPP_SIGNATURE_LEN
5d8239f5
 
2f30521e
 extern stat_var *ws_failed_connections;
 extern stat_var *ws_local_closed_connections;
 extern stat_var *ws_received_frames;
 extern stat_var *ws_remote_closed_connections;
 extern stat_var *ws_transmitted_frames;
21fa34f6
 extern stat_var *ws_sip_failed_connections;
 extern stat_var *ws_sip_local_closed_connections;
 extern stat_var *ws_sip_received_frames;
 extern stat_var *ws_sip_remote_closed_connections;
 extern stat_var *ws_sip_transmitted_frames;
 extern stat_var *ws_msrp_failed_connections;
 extern stat_var *ws_msrp_local_closed_connections;
 extern stat_var *ws_msrp_received_frames;
 extern stat_var *ws_msrp_remote_closed_connections;
 extern stat_var *ws_msrp_transmitted_frames;
48e7ee70
 
53e603f5
 int ws_frame_receive(sr_event_param_t *evp);
 int ws_frame_transmit(sr_event_param_t *evp);
5d8239f5
 void ws_keepalive(unsigned int ticks, void *param);
64adb292
 
9af456f2
 int ws_close(sip_msg_t *msg);
64adb292
 int w_ws_close0(sip_msg_t *msg, char *p1, char *p2);
 int ws_close2(sip_msg_t *msg, int status, str *reason);
 int w_ws_close2(sip_msg_t *msg, char *_status, char *_reason);
 int ws_close3(sip_msg_t *msg, int status, str *reason, int con);
 int w_ws_close3(sip_msg_t *msg, char *_status, char *_reason, char *_con);
48e7ee70
 
fa7688bb
 void ws_rpc_close(rpc_t *rpc, void *ctx);
 void ws_rpc_ping(rpc_t *rpc, void *ctx);
 void ws_rpc_pong(rpc_t *rpc, void *ctx);
2f2bf30e
 
48e7ee70
 #endif /* _WS_FRAME_H */