chat example moved to separate repo

This commit is contained in:
Martin Sustrik 2010-02-24 09:17:05 +01:00
parent 8980a98582
commit ccd47f1ee8
7 changed files with 3 additions and 191 deletions

View File

@ -4,8 +4,8 @@ if BUILD_PERF
DIR_PERF = perf
endif
SUBDIRS = src doc $(DIR_PERF) devices bindings examples
DIST_SUBDIRS = src doc perf devices bindings examples
SUBDIRS = src doc $(DIR_PERF) devices bindings
DIST_SUBDIRS = src doc perf devices bindings
EXTRA_DIST = \
$(top_srcdir)/foreign/openpgm/@pgm_basename@.tar.bz2 \

View File

@ -589,13 +589,6 @@ if test "x$with_perf" = "xno" -a "x$with_pgm_examples" = "xyes"; then
AC_MSG_ERROR([cannot configure --with-pgm-examples without --with-perf.]);
fi
# Chat example
chat="no"
AC_ARG_WITH([chat], [AS_HELP_STRING([--with-chat], [build chatroom example [default=no]])], [with_chat=yes], [with_chat=no])
if test "x$with_chat" != "xno"; then
chat="yes"
fi
AM_CONDITIONAL(BUILD_PYTHON, test "x$pyzmq" = "xyes")
AM_CONDITIONAL(BUILD_JAVA, test "x$jzmq" = "xyes")
AM_CONDITIONAL(BUILD_PYTHON, test "x$pyzmq" = "xyes")
@ -608,7 +601,6 @@ AM_CONDITIONAL(BUILD_FORWARDER, test "x$forwarder" = "xyes")
AM_CONDITIONAL(BUILD_STREAMER, test "x$streamer" = "xyes")
AM_CONDITIONAL(BUILD_QUEUE, test "x$queue" = "xyes")
AM_CONDITIONAL(BUILD_PERF, test "x$perf" = "xyes")
AM_CONDITIONAL(BUILD_CHAT, test "x$chat" = "xyes")
AM_CONDITIONAL(ON_MINGW, test "x$on_mingw32" = "xyes")
AM_CONDITIONAL(BUILD_PGM_EXAMPLES, test "x$with_pgm_examples" = "xyes")
AM_CONDITIONAL(INSTALL_MAN, test "x$install_man" = "xyes")
@ -631,8 +623,7 @@ AC_OUTPUT(Makefile src/Makefile doc/Makefile bindings/python/Makefile \
bindings/java/Makefile perf/Makefile perf/c/Makefile perf/cpp/Makefile \
perf/python/Makefile perf/ruby/Makefile perf/java/Makefile src/libzmq.pc \
devices/Makefile devices/zmq_forwarder/Makefile \
devices/zmq_streamer/Makefile devices/zmq_queue/Makefile bindings/Makefile \
examples/Makefile examples/chat/Makefile)
devices/zmq_streamer/Makefile devices/zmq_queue/Makefile bindings/Makefile)
# On Linux patch libtool to delete hardcoded paths (rpath).
case "${host_os}" in
@ -674,8 +665,6 @@ AC_MSG_RESULT([ Forwarder: $forwarder])
AC_MSG_RESULT([ Streamer: $streamer])
AC_MSG_RESULT([ Queue: $queue])
AC_MSG_RESULT([ Performance tests: $perf])
AC_MSG_RESULT([ Examples:])
AC_MSG_RESULT([ Chat: $chat])
AC_MSG_RESULT([])
AC_MSG_RESULT([ ******************************************************** ])
AC_MSG_RESULT([])

View File

@ -1,7 +0,0 @@
if BUILD_CHAT
DIR_CHAT = chat
endif
SUBDIRS = $(DIR_CHAT)
DIST_SUBDIRS = chat

View File

@ -1,11 +0,0 @@
INCLUDES = -I$(top_builddir)/bindings/c -I$(top_builddir)/bindings/cpp
noinst_PROGRAMS = display prompt
display_SOURCES = display.cpp
display_LDADD = $(top_builddir)/src/libzmq.la
display_CXXFLAGS = -Wall -pedantic -Werror
prompt_SOURCES = prompt.cpp
prompt_LDADD = $(top_builddir)/src/libzmq.la
prompt_CXXFLAGS = -Wall -pedantic -Werror

View File

@ -1,42 +0,0 @@
This example is a simple instant messaging implementation. There are multiple
participants in the chat, both sending and reading messages. The sending
application 'prompt' is separated from the application displaying the chat
'display' so that there's no need for sophisticated GUI.
To run the example you'll need both applications plus the 'forwarder' device
that will play role of messaging server (chatroom). Build it this way:
$ ./autogen.sh
$ ./configure --with-chat --with-forwarder
$ make
$ sudo make install
Once it is built create the configuration file (say config.xml) for the
forwarder describing which network endpoints are to be used for incoming and
outgoing messages:
<forwarder>
<in>
<bind addr = "tcp://eth0:5555"/>
</in>
<out>
<bind addr = "tcp://eth0:5556"/>
</out>
</forwarder>
You are of course free to define mutliple endpoints for either incoming or
outgoing messages.
Now start the forwarder:
$ zmq_forwarder ./config.xml
At this point the messaging server is ready to accept connections from
messaging clients. When starting the sending application, specify your name
so that messages can be attributed to you:
$ ./prompt tcp://myserver:5555 "John Doe"
$ ./display tcp://myserver:5556

View File

@ -1,50 +0,0 @@
/*
Copyright (c) 2007-2010 iMatix Corporation
This file is part of 0MQ.
0MQ is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
0MQ 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <zmq.hpp>
#include <stdio.h>
#include <string.h>
#include <assert.h>
int main (int argc, const char *argv [])
{
// Check the command line syntax.
if (argc != 2) {
fprintf (stderr, "usage: display <address>\n");
return 1;
}
// Retrieve command line arguments
const char *address = argv [1];
// Initialise 0MQ infrastructure.
zmq::context_t ctx (1, 1);
zmq::socket_t s (ctx, ZMQ_SUB);
s.setsockopt (ZMQ_SUBSCRIBE, "", 0);
s.connect (address);
while (true) {
// Get a message and print it to the console.
zmq::message_t msg;
s.recv (&msg);
fprintf (stdout, "%s", (char*) msg.data ());
fflush (stdout);
}
}

View File

@ -1,67 +0,0 @@
/*
Copyright (c) 2007-2010 iMatix Corporation
This file is part of 0MQ.
0MQ is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
0MQ 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <zmq.hpp>
#include <stdio.h>
#include <string.h>
#include <assert.h>
int main (int argc, const char *argv [])
{
// Check the command line syntax.
if (argc != 3) {
fprintf (stderr, "usage: prompt <address> <username>\n");
return 1;
}
// Retrieve command line arguments
const char *address = argv [1];
const char *username = argv [2];
// Initialise 0MQ infrastructure.
zmq::context_t ctx (1, 1);
zmq::socket_t s (ctx, ZMQ_PUB);
s.connect (address);
// Prepare a message buffer. Place username at the beginning
// of the message.
char textbuf [1024];
#ifdef _MSC_VER
_snprintf_s (textbuf, sizeof (textbuf), sizeof (textbuf), "%s: ",
username);
#else
snprintf (textbuf, sizeof (textbuf), "%s: ", username);
#endif
size_t prefixsz = strlen (textbuf);
char *text = textbuf + prefixsz;
while (true) {
// Let user type the enter the message text.
char *rcc = fgets (text, sizeof (textbuf) - prefixsz, stdin);
assert (rcc);
// Create the message (terminating zero is part of the message).
zmq::message_t msg (strlen (textbuf) + 1);
memcpy (msg.data (), textbuf, msg.size ());
// Send the message
s.send (msg);
}
}