aboutsummaryrefslogtreecommitdiffstats
path: root/test_apps/esme.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-11-07 08:32:31 +0100
committerHarald Welte <laforge@gnumonks.org>2012-11-07 08:32:31 +0100
commit4b233b4f3b22f79c2bdd60703d309c9929f74ab6 (patch)
tree91b2622eb54d509b5c78896aca56babc120f1b7b /test_apps/esme.c
initial import of libsmpp34-1.101.10
Diffstat (limited to 'test_apps/esme.c')
-rw-r--r--test_apps/esme.c109
1 files changed, 109 insertions, 0 deletions
diff --git a/test_apps/esme.c b/test_apps/esme.c
new file mode 100644
index 0000000..31ea222
--- /dev/null
+++ b/test_apps/esme.c
@@ -0,0 +1,109 @@
+
+/*
+ * Copyright (C) 2006 Raul Tremsal
+ * File : esme.c
+ * Author: Raul Tremsal <ultraismo@yahoo.com>
+ *
+ * This file is part of libsmpp34 (c-open-smpp3.4 library).
+ *
+ * The libsmpp34 library 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 library 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 library; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <libxml/xmlmemory.h>
+#include <libxml/parser.h>
+
+#include "esme.h"
+
+extern char *optarg;
+char file_config[256];
+xmlDocPtr d; /* document */
+xmlNodePtr c; /* config */
+xmlNodePtr conn_tcp; /* conn_tcp */
+xmlNodePtr conn_smpp; /* conn_smpp */
+xmlNodePtr smpp_msg; /* smpp_msg */
+
+int sock_tcp = 0;
+
+
+#define HELP_FORMAT " -c file.xml [-h]\n" \
+" -c /path/to/file.xml: config file path.\n" \
+" -h : Help, show this message.\n"
+
+int main( int argc, char **argv )
+{
+ int co;
+
+ while( (co = getopt(argc, argv, "c:h")) != EOF ){
+ switch( co ){
+ case 'c':
+ snprintf(file_config, sizeof(file_config), "%s", optarg);
+ break;
+ default:
+ printf("Error: unrecognized option\n");
+ case 'h':
+ printf("usage: %s %s\n", argv[0], HELP_FORMAT);
+ return( -1 );
+ };
+ };
+
+ if( strcmp(file_config, "") == 0 ){ printf("Error in parameters\n");
+ printf("usage: %s %s\n", argv[0], HELP_FORMAT); return( -1 ); };
+ d = xmlParseFile( file_config );
+ if( d == NULL ){ printf("Error in xmlParseFile()\n");
+ printf("usage: %s %s\n", argv[0], HELP_FORMAT); return( -1 ); };
+ c = xmlDocGetRootElement( d );
+ if( c == NULL ){ printf("Error in xmlDocGetRootElement()\n");
+ printf("usage: %s %s\n", argv[0], HELP_FORMAT); return( -1 ); };
+
+ XML_IN_NODE(c, "config", c=c->xmlChildrenNode;break;, return(-1); );
+ XML_IN_NODE(c, "conn_tcp", conn_tcp=c;break;, return(-1); );
+ XML_IN_NODE(c, "conn_smpp", conn_smpp=c;break;, return(-1); );
+ XML_IN_NODE(c, "smpp_msg", smpp_msg=c;break;, return(-1); );
+
+ /* do tcp connect */
+ if( do_tcp_connect( conn_tcp, &sock_tcp ) ){
+ printf("Error in tcp connect.\n"); goto lb_free_document; };
+
+ /* do smpp connect */
+ if( do_smpp_connect( conn_smpp, sock_tcp ) ){
+ printf("Error in smpp connect.\n"); goto lb_tcp_close; };
+
+ /* do smpp send message */
+ if( do_smpp_send_message( smpp_msg, sock_tcp ) ){
+ printf("Error in smpp send message.\n"); goto lb_smpp_close; };
+
+ /* That's all folks */
+ /* taaa taratatata tatatatatata */
+ /* taaa taratatata tatatatatata */
+ /* ta aaa ta aaa tatatata */
+ /* ta aaa ta aaa tatatata */
+ /* taaa taratatata tatatatatata */
+ /* :) */
+
+lb_smpp_close: /* do smpp close */
+ if( do_smpp_close( sock_tcp ) ) printf("Error in smpp close.\n");
+
+lb_tcp_close: /* do tcp close */
+ if( do_tcp_close( sock_tcp ) ) printf("Error in tcp close.\n");
+
+lb_free_document: /* free xml document */
+ xmlFreeDoc( d );
+
+ return( 0 );
+};