1 /* ==================================================================== 2 * The Kannel Software License, Version 1.0 3 * 4 * Copyright (c) 2001-2014 Kannel Group 5 * Copyright (c) 1998-2001 WapIT Ltd. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * 3. The end-user documentation included with the redistribution, 21 * if any, must include the following acknowledgment: 22 * "This product includes software developed by the 23 * Kannel Group (http://www.kannel.org/)." 24 * Alternately, this acknowledgment may appear in the software itself, 25 * if and wherever such third-party acknowledgments normally appear. 26 * 27 * 4. The names "Kannel" and "Kannel Group" must not be used to 28 * endorse or promote products derived from this software without 29 * prior written permission. For written permission, please 30 * contact org@kannel.org. 31 * 32 * 5. Products derived from this software may not be called "Kannel", 33 * nor may "Kannel" appear in their name, without prior written 34 * permission of the Kannel Group. 35 * 36 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 37 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 38 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 39 * DISCLAIMED. IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS 40 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 41 * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 42 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 43 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 44 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 45 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 46 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 47 * ==================================================================== 48 * 49 * This software consists of voluntary contributions made by many 50 * individuals on behalf of the Kannel Group. For more information on 51 * the Kannel Group, please see <http://www.kannel.org/>. 52 * 53 * Portions of this software are based upon software originally written at 54 * WapIT Ltd., Helsinki, Finland for the Kannel project. 55 */ 56 57 /* 58 * shared.h - utility functions shared by Kannel boxes 59 * 60 * The functions declared here are not part of any box in particular, but 61 * are quite specific to Kannel, so they are not suitable for gwlib, either. 62 * 63 * Lars Wirzenius 64 */ 65 66 #ifndef SHARED_H 67 #define SHARED_H 68 69 70 #include "gwlib/gwlib.h" 71 #include "msg.h" 72 73 #define INFINITE_TIME -1 74 75 /* 76 * Program status. Set this to shutting_down to make read_from_bearerbox 77 * return even if the bearerbox hasn't closed the connection yet. 78 */ 79 extern volatile enum program_status { 80 starting_up, 81 running, 82 shutting_down 83 } program_status; 84 85 86 /* 87 * Open a connection to the bearerbox. 88 */ 89 Connection *connect_to_bearerbox_real(Octstr *host, int port, int ssl, Octstr *our_host); 90 void connect_to_bearerbox(Octstr *host, int port, int ssl, Octstr *our_host); 91 92 93 /* 94 * Close connection to the bearerbox. 95 */ 96 void close_connection_to_bearerbox_real(Connection *conn); 97 void close_connection_to_bearerbox(void); 98 99 100 /* 101 * Receive and store Msg from bearerbox into msg. Unblock the call when 102 * the given timeout for conn_wait() is reached. Use a negative value, 103 * ie. -1 for an infinite blocking, hence no timeout applies. 104 * Return 0 if Msg received ; -1 if error occurs; 1 if timedout. 105 */ 106 int read_from_bearerbox_real(Connection *conn, Msg **msg, double seconds); 107 int read_from_bearerbox(Msg **msg, double seconds); 108 109 110 /* 111 * Send an Msg to the bearerbox, and destroy the Msg. 112 */ 113 void write_to_bearerbox_real(Connection *conn, Msg *pmsg); 114 void write_to_bearerbox(Msg *msg); 115 116 117 /* 118 * Delivers a SMS to the bearerbox and returns an error code: 0 if 119 * successfull. -1 if transfer failed. 120 * 121 * Note: Message is only destroyed if successfully delivered! 122 */ 123 int deliver_to_bearerbox_real(Connection *conn, Msg *msg); 124 int deliver_to_bearerbox(Msg *msg); 125 126 127 /* 128 * Validates an OSI date. 129 */ 130 Octstr *parse_date(Octstr *date); 131 132 133 /* 134 * Restarts process with a given params 135 */ 136 int restart_box(char **argv); 137 138 #endif 139 140 141 142 143 144 145