summaryrefslogtreecommitdiff
path: root/frameworks/middleware/examples
diff options
context:
space:
mode:
authorJan Altenberg <jan@linutronix.de>2014-05-28 09:59:44 +0200
committerJan Altenberg <jan@linutronix.de>2014-05-28 09:59:44 +0200
commitaa917ad3ea5d20f1d2eed18e188f999206805ced (patch)
tree28b6821452945f42f475baed5b79ef0e9810930c /frameworks/middleware/examples
parentcf0a003df645cec7f4f8405f9f03402b9dcf050e (diff)
parent541d5387d74bc185fd95124b1c9071748c859914 (diff)
Merge branch 'master' into kconfig_jan
Diffstat (limited to 'frameworks/middleware/examples')
-rw-r--r--frameworks/middleware/examples/celery/README3
-rw-r--r--frameworks/middleware/examples/celery/exec_task.py15
-rwxr-xr-xframeworks/middleware/examples/celery/test.py21
-rwxr-xr-xframeworks/middleware/examples/celery/worker.sh2
-rw-r--r--frameworks/middleware/examples/corba/AUTHORS0
-rw-r--r--frameworks/middleware/examples/corba/ChangeLog0
-rw-r--r--frameworks/middleware/examples/corba/Makefile.am29
-rw-r--r--frameworks/middleware/examples/corba/NEWS0
-rw-r--r--frameworks/middleware/examples/corba/README12
-rwxr-xr-xframeworks/middleware/examples/corba/Receiver.cpp9
-rwxr-xr-xframeworks/middleware/examples/corba/Supplier.cpp1
-rwxr-xr-xframeworks/middleware/examples/corba/autogen.sh3
-rw-r--r--frameworks/middleware/examples/corba/configure.ac28
-rw-r--r--frameworks/middleware/examples/corba/ping_I.cpp1
-rw-r--r--frameworks/middleware/examples/dbus/AUTHORS0
-rw-r--r--frameworks/middleware/examples/dbus/ChangeLog0
-rw-r--r--frameworks/middleware/examples/dbus/Makefile.am8
-rw-r--r--frameworks/middleware/examples/dbus/NEWS0
-rw-r--r--frameworks/middleware/examples/dbus/README0
-rwxr-xr-xframeworks/middleware/examples/dbus/autogen.sh3
-rwxr-xr-xframeworks/middleware/examples/dbus/compile.sh3
-rw-r--r--frameworks/middleware/examples/dbus/configure.ac24
-rw-r--r--frameworks/middleware/examples/dbus/ping-client.c24
-rw-r--r--frameworks/middleware/examples/dbus/ping-server.c2
-rwxr-xr-xframeworks/middleware/examples/soap/client.py13
-rwxr-xr-xframeworks/middleware/examples/soap/server.py18
-rwxr-xr-xframeworks/middleware/examples/xmlrpc/client.py14
-rwxr-xr-xframeworks/middleware/examples/xmlrpc/server.py23
-rw-r--r--frameworks/middleware/examples/xmpp/README28
-rw-r--r--frameworks/middleware/examples/xmpp/client.cpp24
-rw-r--r--frameworks/middleware/examples/xmpp/myclient.cpp32
-rw-r--r--frameworks/middleware/examples/xmpp/myclient.h17
-rw-r--r--frameworks/middleware/examples/xmpp/xmpp.pro15
33 files changed, 352 insertions, 20 deletions
diff --git a/frameworks/middleware/examples/celery/README b/frameworks/middleware/examples/celery/README
new file mode 100644
index 0000000..9045901
--- /dev/null
+++ b/frameworks/middleware/examples/celery/README
@@ -0,0 +1,3 @@
+apt-get install python-celery
+./worker.sh
+./test.py
diff --git a/frameworks/middleware/examples/celery/exec_task.py b/frameworks/middleware/examples/celery/exec_task.py
new file mode 100644
index 0000000..9169250
--- /dev/null
+++ b/frameworks/middleware/examples/celery/exec_task.py
@@ -0,0 +1,15 @@
+import os
+
+from celery import Celery
+
+app = Celery ('tasks', broker='sqla+sqlite:///celerydb.sqlite',
+ backend='db+sqlite:///results.sqlite')
+
+@app.task
+def execute (command):
+ return os.system (command)
+
+@app.task
+def execute2 (command):
+ if os.system (command):
+ raise Exception ("command not found")
diff --git a/frameworks/middleware/examples/celery/test.py b/frameworks/middleware/examples/celery/test.py
new file mode 100755
index 0000000..c64951b
--- /dev/null
+++ b/frameworks/middleware/examples/celery/test.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+
+import sys
+import traceback
+
+from exec_task import execute, execute2
+
+
+
+result = execute2.delay ("/bin/treu")
+try:
+ print "/bin/treu:", result.get (timeout=10)
+except:
+ print "exception occured; backtrace:"
+ print result.traceback
+
+print "\n\n"
+
+result = execute2.delay ("/bin/true")
+print "/bin/true:", result.get (timeout=10)
+
diff --git a/frameworks/middleware/examples/celery/worker.sh b/frameworks/middleware/examples/celery/worker.sh
new file mode 100755
index 0000000..1705198
--- /dev/null
+++ b/frameworks/middleware/examples/celery/worker.sh
@@ -0,0 +1,2 @@
+#!/bin/sh
+celery -A exec_task worker --loglevel=info
diff --git a/frameworks/middleware/examples/corba/AUTHORS b/frameworks/middleware/examples/corba/AUTHORS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/corba/AUTHORS
diff --git a/frameworks/middleware/examples/corba/ChangeLog b/frameworks/middleware/examples/corba/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/corba/ChangeLog
diff --git a/frameworks/middleware/examples/corba/Makefile.am b/frameworks/middleware/examples/corba/Makefile.am
new file mode 100644
index 0000000..72a6a67
--- /dev/null
+++ b/frameworks/middleware/examples/corba/Makefile.am
@@ -0,0 +1,29 @@
+IDL_COMPILER=tao_idl
+IDL_COMPILER_OPT=-GI
+
+IDL_GEN_H_SRV = pingI.h pingS.h
+IDL_GEN_S_SRV = pingS.cpp
+IDL_GEN_H_CLT = pingC.h pingC.inl
+IDL_GEN_S_CLT = pingC.cpp
+
+pingI.h: ping.idl
+ $(IDL_COMPILER) $(IDL_COMPILER_OPT) ping.idl
+
+noinst_HEADERS = $(IDL_GEN_H_SRV) $(IDL_GEN_H_CLT)
+
+CLEANFILES = $(IDL_GEN_H_SRV) $(IDL_GEN_S_SRV) \
+ $(IDL_GEN_H_CLT) $(IDL_GEN_S_CLT) pingI.cpp
+
+CORBA_CFLAGS = $(TAO_CFLAGS) $(TAO_CosNaming_CFLAGS) \
+ $(TAO_PortableServer_CFLAGS) $(TAO_RTCORBA_CFLAGS)
+CORBA_LIBS = $(TAO_LIBS) $(TAO_CosNaming_LIBS) $(TAO_PortableServer_LIBS) \
+ $(TAO_RTCORBA_LIBS)
+
+bin_PROGRAMS = receiver supplier
+receiver_SOURCES = ping_I.cpp $(IDL_GEN_S_SRV) $(IDL_GEN_S_CLT) Receiver.cpp
+receiver_CFLAGS = $(CORBA_CFLAGS)
+receiver_LDADD = $(CORBA_LIBS)
+
+supplier_SOURCES = Supplier.cpp $(IDL_GEN_S_CLT)
+supplier_CFLAGS = $(CORBA_CFLAGS)
+supplier_LDADD = $(CORBA_LIBS)
diff --git a/frameworks/middleware/examples/corba/NEWS b/frameworks/middleware/examples/corba/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/corba/NEWS
diff --git a/frameworks/middleware/examples/corba/README b/frameworks/middleware/examples/corba/README
new file mode 100644
index 0000000..f17e373
--- /dev/null
+++ b/frameworks/middleware/examples/corba/README
@@ -0,0 +1,12 @@
+apt-get install -t experimental libtao-dev mpc-ace libtao-orbsvcs-dev \
+tao-cosnaming tao-idl tao-utils
+
+./autogen.sh
+./configure
+make
+
+tao_cosnaming -ORBEndpoint iiop://localhost:55555
+
+
+./receiver -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService
+./supplier test -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService
diff --git a/frameworks/middleware/examples/corba/Receiver.cpp b/frameworks/middleware/examples/corba/Receiver.cpp
index 45ac9dc..f8b0068 100755
--- a/frameworks/middleware/examples/corba/Receiver.cpp
+++ b/frameworks/middleware/examples/corba/Receiver.cpp
@@ -78,8 +78,9 @@ int main(int argc, char* argv[]){
root_poa->destroy(1,1);
orb->destroy();
- } catch(CORBA::Exception &any) {
- std::cout<<"Exception: "<<any<<std::endl;
- }
- return 0;
+ } catch(CORBA::Exception &any) {
+ std::cout<<"Exception: "<<any<<std::endl;
+ }
+
+ return 0;
}
diff --git a/frameworks/middleware/examples/corba/Supplier.cpp b/frameworks/middleware/examples/corba/Supplier.cpp
index 8d6f413..b7f92ac 100755
--- a/frameworks/middleware/examples/corba/Supplier.cpp
+++ b/frameworks/middleware/examples/corba/Supplier.cpp
@@ -82,5 +82,6 @@ int main(int argc, char* argv[])
} catch(CORBA::Exception &any) {
std::cout<<"Exception occured: "<<any<<std::endl;
}
+
return 0;
}
diff --git a/frameworks/middleware/examples/corba/autogen.sh b/frameworks/middleware/examples/corba/autogen.sh
new file mode 100755
index 0000000..58c0175
--- /dev/null
+++ b/frameworks/middleware/examples/corba/autogen.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+automake --add-missing
+autoreconf -sif
diff --git a/frameworks/middleware/examples/corba/configure.ac b/frameworks/middleware/examples/corba/configure.ac
new file mode 100644
index 0000000..6127c33
--- /dev/null
+++ b/frameworks/middleware/examples/corba/configure.ac
@@ -0,0 +1,28 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.69])
+AC_INIT([corba-example], [1.0], [manut@linutronix.de])
+AC_CONFIG_SRCDIR([Receiver.cpp])
+AM_INIT_AUTOMAKE([dist-bzip2])
+AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+AC_PROG_CXX
+
+# Checks for libraries.
+PKG_CHECK_MODULES([TAO], [TAO])
+PKG_CHECK_MODULES([TAO_CosNaming], [TAO_CosNaming])
+PKG_CHECK_MODULES([TAO_PortableServer], [TAO_PortableServer])
+PKG_CHECK_MODULES([TAO_RTCORBA], [TAO_RTCORBA])
+
+# Checks for header files.
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+AC_CHECK_FUNCS([clock_gettime])
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/frameworks/middleware/examples/corba/ping_I.cpp b/frameworks/middleware/examples/corba/ping_I.cpp
index 309d1e8..e02924f 100644
--- a/frameworks/middleware/examples/corba/ping_I.cpp
+++ b/frameworks/middleware/examples/corba/ping_I.cpp
@@ -21,4 +21,3 @@ void Linutronix_Ping_i::send (
clock_gettime(CLOCK_MONOTONIC, &time_rx);
std::cout<<time_rx.tv_sec<<":"<<time_rx.tv_nsec/1000<<": "<<payload<<"\n";
}
-
diff --git a/frameworks/middleware/examples/dbus/AUTHORS b/frameworks/middleware/examples/dbus/AUTHORS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/AUTHORS
diff --git a/frameworks/middleware/examples/dbus/ChangeLog b/frameworks/middleware/examples/dbus/ChangeLog
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/ChangeLog
diff --git a/frameworks/middleware/examples/dbus/Makefile.am b/frameworks/middleware/examples/dbus/Makefile.am
new file mode 100644
index 0000000..830a98e
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/Makefile.am
@@ -0,0 +1,8 @@
+bin_PROGRAMS = pingserver pingclient
+pingserver_SOURCES = ping-server.c
+pingserver_CFLAGS = $(DBUS_CFLAGS)
+pingserver_LDADD = $(DBUS_LIBS)
+
+pingclient_SOURCES = ping-client.c
+pingclient_CFLAGS = $(DBUS_CFLAGS)
+pingclient_LDADD = $(DBUS_LIBS)
diff --git a/frameworks/middleware/examples/dbus/NEWS b/frameworks/middleware/examples/dbus/NEWS
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/NEWS
diff --git a/frameworks/middleware/examples/dbus/README b/frameworks/middleware/examples/dbus/README
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/README
diff --git a/frameworks/middleware/examples/dbus/autogen.sh b/frameworks/middleware/examples/dbus/autogen.sh
new file mode 100755
index 0000000..58c0175
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/autogen.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+automake --add-missing
+autoreconf -sif
diff --git a/frameworks/middleware/examples/dbus/compile.sh b/frameworks/middleware/examples/dbus/compile.sh
deleted file mode 100755
index d2b2822..0000000
--- a/frameworks/middleware/examples/dbus/compile.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-gcc -o server -lrt -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lglib-2.0 ping-server.c
-gcc -o client -lrt -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lglib-2.0 ping-client.c
diff --git a/frameworks/middleware/examples/dbus/configure.ac b/frameworks/middleware/examples/dbus/configure.ac
new file mode 100644
index 0000000..bf99b42
--- /dev/null
+++ b/frameworks/middleware/examples/dbus/configure.ac
@@ -0,0 +1,24 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.69])
+AC_INIT([dbus-example], [1.0], [manut@linutronix.de])
+AC_CONFIG_SRCDIR([ping-server.c])
+AM_INIT_AUTOMAKE([dist-bzip2])
+AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+AC_PROG_CC
+
+# Checks for libraries.
+PKG_CHECK_MODULES([DBUS], [dbus-glib-1])
+# Checks for header files.
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+AC_CHECK_FUNCS([clock_gettime])
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/frameworks/middleware/examples/dbus/ping-client.c b/frameworks/middleware/examples/dbus/ping-client.c
index e3035e4..ceb3205 100644
--- a/frameworks/middleware/examples/dbus/ping-client.c
+++ b/frameworks/middleware/examples/dbus/ping-client.c
@@ -12,10 +12,10 @@ int main (int argc, char **argv)
DBusConnection *bus;
DBusError error;
- if (argc > 1)
- v_STRING = argv[1];
- else
- v_STRING = "no arg given";
+ if (argc > 1)
+ v_STRING = argv[1];
+ else
+ v_STRING = "no arg given";
/* Create a new event loop to run in */
loop = g_main_loop_new (NULL, FALSE);
@@ -42,8 +42,8 @@ int main (int argc, char **argv)
static gboolean send_ping (DBusConnection *bus)
{
DBusMessage *message;
- struct timespec tx_time;
- struct timespec done_time;
+ struct timespec tx_time;
+ struct timespec done_time;
message = dbus_message_new_signal ("/de/linutronix/Ping",
"de.linutronix.Ping", "Ping");
@@ -51,12 +51,16 @@ static gboolean send_ping (DBusConnection *bus)
dbus_message_append_args (message,
DBUS_TYPE_STRING, &v_STRING,
DBUS_TYPE_INVALID);
- clock_gettime(CLOCK_MONOTONIC, &tx_time);
+
+ clock_gettime(CLOCK_MONOTONIC, &tx_time);
+
/* Send the signal */
dbus_connection_send (bus, message, NULL);
- clock_gettime(CLOCK_MONOTONIC, &done_time);
- g_print("%d:%d\n%d:%d\n\n", tx_time.tv_sec, tx_time.tv_nsec/1000,
- done_time.tv_sec, done_time.tv_nsec/1000);
+ clock_gettime(CLOCK_MONOTONIC, &done_time);
+
+ g_print("%d:%d\n%d:%d\n\n", tx_time.tv_sec, tx_time.tv_nsec/1000,
+ done_time.tv_sec, done_time.tv_nsec/1000);
+
/* Free the signal now we have finished with it */
dbus_message_unref (message);
/* Return TRUE to tell the event loop we want to be called again */
diff --git a/frameworks/middleware/examples/dbus/ping-server.c b/frameworks/middleware/examples/dbus/ping-server.c
index 36dd122..96b2397 100644
--- a/frameworks/middleware/examples/dbus/ping-server.c
+++ b/frameworks/middleware/examples/dbus/ping-server.c
@@ -60,7 +60,6 @@ static DBusHandlerResult signal_filter
clock_gettime(CLOCK_MONOTONIC, &rx_time);
g_print("ping received: %s - %d:%d\n", s, rx_time.tv_sec,
rx_time.tv_nsec/1000);
- // dbus_free (s);
} else {
g_print("ping received, but error getting message: %s\n", error.message);
dbus_error_free (&error);
@@ -69,4 +68,3 @@ static DBusHandlerResult signal_filter
}
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
}
-
diff --git a/frameworks/middleware/examples/soap/client.py b/frameworks/middleware/examples/soap/client.py
new file mode 100755
index 0000000..5151234
--- /dev/null
+++ b/frameworks/middleware/examples/soap/client.py
@@ -0,0 +1,13 @@
+#!/usr/bin/python
+
+from datetime import datetime
+from ZSI.client import Binding
+
+b = Binding(url='http://localhost:8000/')
+
+t = b.today (5)
+# t = 2014-02-18 15:59:50.571927
+conv = datetime.strptime (t, "%Y-%m-%d %H:%M:%S.%f")
+print "Today: %s" % conv.strftime ("%d.%m.%Y, %H:%M")
+
+print b.load ("string")
diff --git a/frameworks/middleware/examples/soap/server.py b/frameworks/middleware/examples/soap/server.py
new file mode 100755
index 0000000..32a550a
--- /dev/null
+++ b/frameworks/middleware/examples/soap/server.py
@@ -0,0 +1,18 @@
+#!/usr/bin/python
+
+from datetime import datetime
+from ZSI import dispatch
+
+def today (arg):
+ print "today arg:", arg
+ today = datetime.today ()
+ return str (today)
+
+def load (arg):
+ print "load arg:", arg
+ fd = open ("/proc/loadavg", "r")
+ loadavg = fd.read ()
+ sysload = loadavg.split ()
+ return sysload[0]
+
+dispatch.AsServer (port=8000, rpc=True)
diff --git a/frameworks/middleware/examples/xmlrpc/client.py b/frameworks/middleware/examples/xmlrpc/client.py
new file mode 100755
index 0000000..2b466b7
--- /dev/null
+++ b/frameworks/middleware/examples/xmlrpc/client.py
@@ -0,0 +1,14 @@
+#!/usr/bin/python
+
+import xmlrpclib
+from datetime import datetime
+
+proxy = xmlrpclib.ServerProxy ("http://localhost:8000/")
+
+today = proxy.today ()
+# today = 20140218T14:23:45
+converted = datetime.strptime (today.value, "%Y%m%dT%H:%M:%S")
+print "Today: %s" % converted.strftime ("%d.%m.%Y, %H:%M")
+
+load = proxy.load ()
+print "system load:", load
diff --git a/frameworks/middleware/examples/xmlrpc/server.py b/frameworks/middleware/examples/xmlrpc/server.py
new file mode 100755
index 0000000..c805198
--- /dev/null
+++ b/frameworks/middleware/examples/xmlrpc/server.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+
+from datetime import datetime
+from SimpleXMLRPCServer import SimpleXMLRPCServer
+import xmlrpclib
+
+def today ():
+ today = datetime.today ()
+ return xmlrpclib.DateTime (today)
+
+def load ():
+ fd = open ("/proc/loadavg", "r")
+ loadavg = fd.read ()
+ sysload = loadavg.split ()
+ return xmlrpclib.FloatType (sysload[0])
+
+server = SimpleXMLRPCServer (("localhost", 8000))
+
+server.register_function (today, "today")
+server.register_function (load, "load")
+
+print "Listening on port 8000..."
+server.serve_forever ()
diff --git a/frameworks/middleware/examples/xmpp/README b/frameworks/middleware/examples/xmpp/README
new file mode 100644
index 0000000..ef147ce
--- /dev/null
+++ b/frameworks/middleware/examples/xmpp/README
@@ -0,0 +1,28 @@
+a) apt-get install libqxmpp-dev psi ejabberd
+
+b) edit /etc/ejabberd/ejabberd.cfg to allow inband registration:
+
+ --8<---
+ %% No username can be registered via in-band registration:
+ %% To enable in-band registration, replace 'deny' with 'allow'
+ % (note that if you remove mod_register from modules list then users will not
+ % be able to change their password as well as register).
+ % This setting is default because it's more safe.
+ {access, register, [{allow, all}]}.
+ --8<---
+
+c) start psi and configure it to use 'localhost' as server and create two
+ accounts: <yourname>:<yourpass>
+ qtapp:test
+
+d) login with <yourname> and qtapp, add both accounts to their contact list,
+ and try to send messages. logoff the qtapp account.
+
+e) build the qt client application and start it:
+
+qmake
+make
+./client
+
+f) the qtapp account needs now to be online in psi, write a messagte to qtapp
+ the message should be displayed in the commandline
diff --git a/frameworks/middleware/examples/xmpp/client.cpp b/frameworks/middleware/examples/xmpp/client.cpp
new file mode 100644
index 0000000..9390438
--- /dev/null
+++ b/frameworks/middleware/examples/xmpp/client.cpp
@@ -0,0 +1,24 @@
+/*
+* Copyright (C) 2008-2010 Manjeet Dahiya
+*
+* Author:
+* Manjeet Dahiya
+* modified 2014 by Manuel Traut <manut@linutronix.de>
+*/
+
+#include <QtCore/QCoreApplication>
+
+//#include <qxmpp/QXmppLogger.h>
+
+#include "myclient.h"
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication a(argc, argv);
+ // QXmppLogger::getLogger()->setLoggingType(QXmppLogger::StdoutLogging);
+
+ MyClient client;
+ client.connectToServer("qtapp@localhost", "test");
+
+ return a.exec();
+}
diff --git a/frameworks/middleware/examples/xmpp/myclient.cpp b/frameworks/middleware/examples/xmpp/myclient.cpp
new file mode 100644
index 0000000..fa28603
--- /dev/null
+++ b/frameworks/middleware/examples/xmpp/myclient.cpp
@@ -0,0 +1,32 @@
+/*
+* Copyright (C) 2008-2010 Manjeet Dahiya
+*
+* Author:
+* Manjeet Dahiya
+*
+* modified 2014 by Manuel Traut <manut@linutronix.de>
+*/
+
+#include <qxmpp/QXmppMessage.h>
+#include <iostream>
+
+#include "myclient.h"
+
+MyClient::MyClient() : QXmppClient()
+{
+ bool check = connect(this,
+ SIGNAL(messageReceived(QXmppMessage)),
+ SLOT(message_rx(QXmppMessage)));
+ Q_ASSERT(check);
+ Q_UNUSED(check);
+}
+
+MyClient::~MyClient() { ; }
+
+void MyClient::message_rx(const QXmppMessage& message)
+{
+ QString from = message.from();
+ QString msg = message.body();
+ std::cout<<from.toStdString()<<": "<<msg.toStdString()<<std::endl;
+ sendPacket(QXmppMessage("", from, "you mean " + msg + "??"));
+}
diff --git a/frameworks/middleware/examples/xmpp/myclient.h b/frameworks/middleware/examples/xmpp/myclient.h
new file mode 100644
index 0000000..22d864c
--- /dev/null
+++ b/frameworks/middleware/examples/xmpp/myclient.h
@@ -0,0 +1,17 @@
+#ifndef CLIENT_H
+#define CLIENT_H
+
+#include <qxmpp/QXmppClient.h>
+
+class MyClient : public QXmppClient
+{
+ Q_OBJECT
+public:
+ MyClient();
+ ~MyClient();
+
+public slots:
+ void message_rx(const QXmppMessage&);
+};
+
+#endif
diff --git a/frameworks/middleware/examples/xmpp/xmpp.pro b/frameworks/middleware/examples/xmpp/xmpp.pro
new file mode 100644
index 0000000..7f0be00
--- /dev/null
+++ b/frameworks/middleware/examples/xmpp/xmpp.pro
@@ -0,0 +1,15 @@
+######################################################################
+# Automatically generated by qmake (2.01a) Tue Feb 18 19:47:09 2014
+######################################################################
+
+TEMPLATE = app
+TARGET = client
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+SOURCES += client.cpp myclient.cpp
+HEADERS += myclient.h
+
+QT += network
+LIBS += -lqxmpp