• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

AsioRealmProtocol.h

Go to the documentation of this file.
00001 #ifndef __ASIO_REALM_PROTOCOL__
00002 #define __ASIO_REALM_PROTOCOL__
00003 
00004 #include "RealmProtocol.h"
00005 
00006 namespace realm {
00007 
00008 namespace protocolv1 {
00009 
00010     template <typename WriteHandler>
00011     static void send(const RoutingPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) {
00012         std::vector<asio::const_buffer> bufs(4);
00013         bufs.push_back(asio::buffer(&p.type(), 1));
00014         bufs.push_back(asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe!
00015         bufs.push_back(asio::buffer(&p.getAddressCount(), 1));
00016         bufs.push_back(asio::buffer(&(p.getConnectionIds()[0]), p.getConnectionIds().size()));
00017         bufs.push_back(asio::buffer(*p.getMessage()));
00018         asio::async_write(socket, bufs, handler);
00019     }
00020 
00021     template <typename WriteHandler>
00022     static void send(const DeliverPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) {
00023         std::vector<asio::const_buffer> bufs(4);
00024         bufs.push_back(asio::buffer(&p.type(), 1));
00025         bufs.push_back(asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe!
00026         bufs.push_back(asio::buffer(&p.getConnectionId(), 1));
00027         bufs.push_back(asio::buffer(*p.getMessage()));
00028         asio::async_write(socket, bufs, handler);
00029     }
00030 
00031     template <typename WriteHandler>
00032     static void send(const UserJoinedPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) {
00033         std::vector<asio::const_buffer> bufs(4);
00034         bufs.push_back(asio::buffer(&p.type(), 1));
00035         bufs.push_back(asio::buffer(&p.getPayloadSize(), 4)); // FIXME: not Big Endian safe!
00036         bufs.push_back(asio::buffer(&p.getConnectionId(), 1));
00037         bufs.push_back(asio::buffer(&p.isMaster(), 1));
00038         bufs.push_back(asio::buffer(*p.getUserInfo()));
00039         asio::async_write(socket, bufs, handler);
00040     }
00041 
00042     template <typename WriteHandler>
00043     static void send(const UserLeftPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) {
00044         std::vector<asio::const_buffer> bufs(2);
00045         bufs.push_back(asio::buffer(&p.type(), 1));
00046         bufs.push_back(asio::buffer(&p.getConnectionId(), 1));
00047         asio::async_write(socket, bufs, handler);
00048     }
00049 
00050     template <typename WriteHandler>
00051     static void send(const SessionTakeOverPacket& p, asio::ip::tcp::socket& socket, WriteHandler handler) {
00052         asio::async_write(socket, asio::buffer(&p.type(), 1), handler);
00053     }
00054 
00055 }
00056 
00057 }
00058 
00059 #endif /* ASIO_REALM_PROTOCOL__ */

Generated on Sun Feb 14 2021 for AbiWord by  doxygen 1.7.1