mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-13 10:52:56 +01:00
chat example moved to separate repo
This commit is contained in:
parent
8980a98582
commit
ccd47f1ee8
@ -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 \
|
||||
|
13
configure.in
13
configure.in
@ -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([])
|
||||
|
@ -1,7 +0,0 @@
|
||||
|
||||
if BUILD_CHAT
|
||||
DIR_CHAT = chat
|
||||
endif
|
||||
|
||||
SUBDIRS = $(DIR_CHAT)
|
||||
DIST_SUBDIRS = chat
|
@ -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
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user