From 21e79c833fcbd2d7c43380a2f74b5c0173c6c1a0 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Tue, 18 Feb 2014 23:24:52 +0100 Subject: corba example: switch to autotools ace/tao is now packaged in debian/experimental. it's definitely easier to use the packaged stuff instead of building ace/tao by your own. the mwc packaging of debian is currently a pain. it is shipped without config files for tao.., but the tao debian packages provide pkg-config support so this patch converts the project into a autotools project :) Signed-off-by: Manuel Traut --- frameworks/middleware/examples/corba/AUTHORS | 0 frameworks/middleware/examples/corba/ChangeLog | 0 frameworks/middleware/examples/corba/Makefile.am | 29 +++++++++++++++++++++++ frameworks/middleware/examples/corba/NEWS | 0 frameworks/middleware/examples/corba/README | 12 ++++++++++ frameworks/middleware/examples/corba/autogen.sh | 3 +++ frameworks/middleware/examples/corba/configure.ac | 28 ++++++++++++++++++++++ frameworks/middleware/examples/corba/ping_I.cpp | 1 - 8 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 frameworks/middleware/examples/corba/AUTHORS create mode 100644 frameworks/middleware/examples/corba/ChangeLog create mode 100644 frameworks/middleware/examples/corba/Makefile.am create mode 100644 frameworks/middleware/examples/corba/NEWS create mode 100644 frameworks/middleware/examples/corba/README create mode 100755 frameworks/middleware/examples/corba/autogen.sh create mode 100644 frameworks/middleware/examples/corba/configure.ac (limited to 'frameworks/middleware/examples') diff --git a/frameworks/middleware/examples/corba/AUTHORS b/frameworks/middleware/examples/corba/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/frameworks/middleware/examples/corba/ChangeLog b/frameworks/middleware/examples/corba/ChangeLog new file mode 100644 index 0000000..e69de29 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 diff --git a/frameworks/middleware/examples/corba/README b/frameworks/middleware/examples/corba/README new file mode 100644 index 0000000..74ca9bb --- /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 + +Naming_Service -ORBEndpoint iiop://localhost:55555 + + +./receiver -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService +./supplier -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService 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< Date: Tue, 18 Feb 2014 23:27:47 +0100 Subject: dbus example: remove compile.sh and make a autotools project compile.sh was a pain. didn't work with current debian. so this patch removes it and converts the example to an autools project. Signed-off-by: Manuel Traut --- frameworks/middleware/examples/dbus/AUTHORS | 0 frameworks/middleware/examples/dbus/ChangeLog | 0 frameworks/middleware/examples/dbus/Makefile.am | 8 ++++++++ frameworks/middleware/examples/dbus/NEWS | 0 frameworks/middleware/examples/dbus/README | 0 frameworks/middleware/examples/dbus/autogen.sh | 3 +++ frameworks/middleware/examples/dbus/compile.sh | 3 --- frameworks/middleware/examples/dbus/configure.ac | 24 +++++++++++++++++++++++ frameworks/middleware/examples/dbus/ping-client.c | 24 +++++++++++++---------- frameworks/middleware/examples/dbus/ping-server.c | 2 -- 10 files changed, 49 insertions(+), 15 deletions(-) create mode 100644 frameworks/middleware/examples/dbus/AUTHORS create mode 100644 frameworks/middleware/examples/dbus/ChangeLog create mode 100644 frameworks/middleware/examples/dbus/Makefile.am create mode 100644 frameworks/middleware/examples/dbus/NEWS create mode 100644 frameworks/middleware/examples/dbus/README create mode 100755 frameworks/middleware/examples/dbus/autogen.sh delete mode 100755 frameworks/middleware/examples/dbus/compile.sh create mode 100644 frameworks/middleware/examples/dbus/configure.ac (limited to 'frameworks/middleware/examples') diff --git a/frameworks/middleware/examples/dbus/AUTHORS b/frameworks/middleware/examples/dbus/AUTHORS new file mode 100644 index 0000000..e69de29 diff --git a/frameworks/middleware/examples/dbus/ChangeLog b/frameworks/middleware/examples/dbus/ChangeLog new file mode 100644 index 0000000..e69de29 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 diff --git a/frameworks/middleware/examples/dbus/README b/frameworks/middleware/examples/dbus/README new file mode 100644 index 0000000..e69de29 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; } - -- cgit v1.2.3 From de1b78ee51ee99165c7ad1030cc13a24fd05e394 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Tue, 18 Feb 2014 23:34:04 +0100 Subject: middleware: add a python xmlrpc example xmlrpc is supported by the python stdlib so let's play around with it! Signed-off-by: Manuel Traut --- frameworks/middleware/examples/xmlrpc/client.py | 14 ++++++++++++++ frameworks/middleware/examples/xmlrpc/server.py | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100755 frameworks/middleware/examples/xmlrpc/client.py create mode 100755 frameworks/middleware/examples/xmlrpc/server.py (limited to 'frameworks/middleware/examples') 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..ebde5ee --- /dev/null +++ b/frameworks/middleware/examples/xmlrpc/server.py @@ -0,0 +1,21 @@ +#!/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 () -- cgit v1.2.3 From a9f5c60272e630c3de528dc773eb5af491a01e0a Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Tue, 18 Feb 2014 23:34:33 +0100 Subject: middleware: add a python soap example it's a quite small one. Maybe we can add an interface description sometimes. Signed-off-by: Manuel Traut --- frameworks/middleware/examples/soap/client.py | 11 +++++++++++ frameworks/middleware/examples/soap/server.py | 18 ++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 frameworks/middleware/examples/soap/client.py create mode 100755 frameworks/middleware/examples/soap/server.py (limited to 'frameworks/middleware/examples') diff --git a/frameworks/middleware/examples/soap/client.py b/frameworks/middleware/examples/soap/client.py new file mode 100755 index 0000000..9cd35f2 --- /dev/null +++ b/frameworks/middleware/examples/soap/client.py @@ -0,0 +1,11 @@ +#!/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) -- cgit v1.2.3 From 07761742a5a104020c975f649bd188a950a4891c Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Tue, 18 Feb 2014 23:36:45 +0100 Subject: middleware/xmpp: add an example - this is a minimal qt client that can be used with a jabber/xmpp server - have a look at the README file for the test setup Signed-off-by: Manuel Traut --- frameworks/middleware/examples/xmpp/README | 28 +++++++++++++++++++++ frameworks/middleware/examples/xmpp/client.cpp | 24 ++++++++++++++++++ frameworks/middleware/examples/xmpp/myclient.cpp | 32 ++++++++++++++++++++++++ frameworks/middleware/examples/xmpp/myclient.h | 17 +++++++++++++ frameworks/middleware/examples/xmpp/xmpp.pro | 15 +++++++++++ 5 files changed, 116 insertions(+) create mode 100644 frameworks/middleware/examples/xmpp/README create mode 100644 frameworks/middleware/examples/xmpp/client.cpp create mode 100644 frameworks/middleware/examples/xmpp/myclient.cpp create mode 100644 frameworks/middleware/examples/xmpp/myclient.h create mode 100644 frameworks/middleware/examples/xmpp/xmpp.pro (limited to 'frameworks/middleware/examples') 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: : + qtapp:test + +d) login with 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 +*/ + +#include + +//#include + +#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 +*/ + +#include +#include + +#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< + +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 -- cgit v1.2.3 From fd369b1d74b95904b91bfd0fc6c7c52aacd31872 Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Tue, 18 Feb 2014 23:50:21 +0100 Subject: middleware/example/corba/README document option of supplier that is send to the receiver Signed-off-by: Manuel Traut --- frameworks/middleware/examples/corba/README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'frameworks/middleware/examples') diff --git a/frameworks/middleware/examples/corba/README b/frameworks/middleware/examples/corba/README index 74ca9bb..5d71b99 100644 --- a/frameworks/middleware/examples/corba/README +++ b/frameworks/middleware/examples/corba/README @@ -9,4 +9,4 @@ Naming_Service -ORBEndpoint iiop://localhost:55555 ./receiver -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService -./supplier -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService +./supplier test -ORBInitRef NameService=corbaloc:iiop:localhost:55555/NameService -- cgit v1.2.3 From 5ec6915a8f955c8ef72165e7392718a0b1f75bfa Mon Sep 17 00:00:00 2001 From: Manuel Traut Date: Wed, 19 Feb 2014 09:36:54 +0100 Subject: middleware: add celery section and example celery is a python framework for job execution Signed-off-by: Manuel Traut --- frameworks/middleware/examples/celery/README | 3 + frameworks/middleware/examples/celery/exec_task.py | 15 +++++ frameworks/middleware/examples/celery/test.py | 36 ++++++++++ frameworks/middleware/examples/celery/worker.sh | 2 + frameworks/middleware/pres_middleware.tex | 77 ++++++++++++++++++++++ 5 files changed, 133 insertions(+) create mode 100644 frameworks/middleware/examples/celery/README create mode 100644 frameworks/middleware/examples/celery/exec_task.py create mode 100755 frameworks/middleware/examples/celery/test.py create mode 100755 frameworks/middleware/examples/celery/worker.sh (limited to 'frameworks/middleware/examples') 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..7d79c8e --- /dev/null +++ b/frameworks/middleware/examples/celery/test.py @@ -0,0 +1,36 @@ +#!/usr/bin/python + +import sys +import traceback + +from exec_task import execute, execute2 + +execute.delay ("echo hello world") + +print "\n\n" + +result = execute.delay ("sleep 2") +print "result ready?", result.ready () +print "wait for result..." +ret = result.get (timeout=10) +print "task done", ret + +print "\n\n" + +result = execute.delay ("/bin/false") +print "/bin/false:", result.get (timeout=10) + +print "\n\n" + +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/pres_middleware.tex b/frameworks/middleware/pres_middleware.tex index c2933ba..c2eacc7 100644 --- a/frameworks/middleware/pres_middleware.tex +++ b/frameworks/middleware/pres_middleware.tex @@ -445,6 +445,83 @@ MyClient::message_rx(const QXmppMessage& msg) \subsection{Celery} +\begin{frame} +\frametitle{Overview} +\begin{itemize} +\item Distributed Task Queue +\item based on message passing +\item real-time operation and scheduling +\item Tasks can be hosted on a single or on mulitple workers +\item synchronous and asynchronous execution +\item rate limit support +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{implementations} +\begin{itemize} +\item celery-project: Python +\item celery-php: PHP +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{celeryproject} +\begin{block}{supports multiple message broker} +\begin{itemize} +\item database: Django, or any supported by SQLAlchemy +\item RabbitMQ +\item Redis +\item Amazon SQS (experimental) +\end{itemize} +\end{block} +\end{frame} + +\begin{frame} +\frametitle{celeryproject} +\begin{block}{supports multiple result storage} +\begin{itemize} +\item database: any supported by SQLAlchemy +\item memcached +\item Redis +\item AMQP +\item Cassandra +\item IronCache +\end{itemize} +\end{block} +\end{frame} + +\begin{frame}[fragile] +\frametitle{celeryproject, example} +exec\_task.py +\begin{lstlisting}{language=python} +import os +from celery import Celery + +app = Celery ('tasks', broker='sqla+sqlite:///celerydb.sqlite) + +@app.task +def execute (command): + os.system (command) +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] +\frametitle{celeryproject, example} +test.py +\begin{lstlisting}{language=python} +from exec_task import execute + +execute.delay ("echo hello world") +\end{lstlisting} + +start the example: +\begin{lstlisting}{language=bash} +term1% celery -A exec_task worker +term2% ./test.py +\end{lstlisting} +\dots an example using return values and exceptions is in the example dir +\end{frame} \subsection{DDS} -- cgit v1.2.3