004bed4318da4a7cc693ac26e24137a1a9fe8108
[sip-router] / modules / websocket / ws_mod.c
1 /*
2  * $Id$
3  *
4  * Copyright (C) 2012 Crocodile RCS Ltd
5  *
6  * This file is part of Kamailio, a free SIP server.
7  *
8  * Kamailio is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version
12  *
13  * Kamailio is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License 
19  * along with this program; if not, write to the Free Software 
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
21  *
22  */
23
24 #include "../../dprint.h"
25 #include "../../sr_module.h"
26 #include "../../parser/msg_parser.h"
27 #include "ws_handshake.h"
28 #include "ws_mod.h"
29
30 MODULE_VERSION
31
32 static int mod_init(void);
33
34 sl_api_t ws_slb;
35 int ws_ping_interval = 25;      /* time (in seconds) after which a Ping will be
36                                    sent on an idle connection */
37 int ws_ping_timeout = 1;        /* time (in seconds) to wait for a Pong in
38                                    response to a Ping before closing a
39                                    connection */
40
41 static param_export_t params[]=
42 {
43         {"ping_interval",       INT_PARAM, &ws_ping_interval},
44         {"ping_timeout",        INT_PARAM, &ws_ping_timeout},
45 };
46
47 static cmd_export_t cmds[]= 
48 {
49     {"ws_handle_handshake", (cmd_function)ws_handle_handshake, 0,
50         0, 0,
51         ANY_ROUTE},
52     {0, 0, 0, 0, 0, 0}
53 };
54
55 struct module_exports exports= 
56 {
57         "websocket",
58         DEFAULT_DLFLAGS,        /* dlopen flags */
59         cmds,                   /* Exported functions */
60         params,                 /* Exported parameters */
61         0,                      /* exported statistics */
62         0,                      /* exported MI functions */
63         0,                      /* exported pseudo-variables */
64         0,                      /* extra processes */
65         mod_init,               /* module initialization function */
66         0,                      /* response function */
67         0,                      /* destroy function */
68         0                       /* per-child initialization function */
69 };
70
71 static int mod_init(void)
72 {
73         if (sl_load_api(&ws_slb) != 0)
74         {
75                 LM_ERR("cannot bind to SL\n");
76                 return -1;
77         }
78
79         /* TODO: register module with core to receive WS/WSS messages */
80
81         return 0;
82 }