]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/fiber/examples/asio/ps/publisher.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / fiber / examples / asio / ps / publisher.cpp
1 //
2 // blocking_tcp_echo_client.cpp
3 // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 //
5 // Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6 //
7 // Distributed under the Boost Software License, Version 1.0. (See accompanying
8 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9 //
10
11 #include <cstdlib>
12 #include <cstring>
13 #include <iostream>
14
15 #include <boost/asio.hpp>
16
17 using boost::asio::ip::tcp;
18
19 enum {
20 max_length = 1024
21 };
22
23 int main( int argc, char* argv[]) {
24 try {
25 if ( 3 != argc) {
26 std::cerr << "Usage: publisher <host> <queue>\n";
27 return EXIT_FAILURE;
28 }
29 boost::asio::io_service io_service;
30 tcp::resolver resolver( io_service);
31 tcp::resolver::query query( tcp::v4(), argv[1], "9997");
32 tcp::resolver::iterator iterator = resolver.resolve(query);
33 tcp::socket s( io_service);
34 boost::asio::connect( s, iterator);
35 char msg[max_length];
36 std::string queue( argv[2]);
37 std::memset( msg, '\0', max_length);
38 std::memcpy( msg, queue.c_str(), queue.size() );
39 boost::asio::write( s, boost::asio::buffer( msg, max_length) );
40 for (;;) {
41 std::cout << "publish: ";
42 char request[max_length];
43 std::cin.getline( request, max_length);
44 boost::asio::write( s, boost::asio::buffer( request, max_length) );
45 }
46 return EXIT_SUCCESS;
47 } catch ( std::exception const& e) {
48 std::cerr << "Exception: " << e.what() << "\n";
49 }
50
51 return EXIT_FAILURE;
52 }