Vinnie Falco a55d9aa4c3 Tidy up 32 and 64 bit build support (fix #49):
This fixes up support for building both 32 and 64 bit targets, especially on Windows.
2016-08-26 13:06:39 -04:00
2016-08-12 21:02:39 -04:00
2016-08-12 21:02:44 -04:00
2016-08-12 21:02:40 -04:00
2013-06-02 08:55:07 -07:00
2016-08-12 21:02:44 -04:00
2016-08-12 21:02:40 -04:00

Beast


CppCon 2016

I will be giving a lightning talk on Beast at CppCon 2016 in Bellevue, Washington from September 18 to September 22. If you'd like to meet me and hear the talk or ask questions about Beast feel free to approach me in person or send me an email at vinnie.falco@gmail.com to schedule some time.

Beast is used in rippled, an open source server application that implements a decentralized cryptocurrency system.

About CppCon 2016: http://cppcon.org


Join the chat at https://gitter.im/vinniefalco/Beast ![Build Status] (https://travis-ci.org/vinniefalco/Beast.svg?branch=master) ![codecov] (https://codecov.io/gh/vinniefalco/Beast/branch/master/graph/badge.svg) ![coveralls] (https://coveralls.io/repos/github/vinniefalco/Beast/badge.svg?branch=master) ![Documentation] (https://img.shields.io/badge/documentation-master-brightgreen.svg) ![License] (https://img.shields.io/badge/license-boost-brightgreen.svg)

Beast provides implementations of the HTTP and WebSocket protocols built on top of Boost.Asio and other parts of boost.

Requirements:

  • Boost
  • C++11 or greater
  • OpenSSL (optional)

This software is currently in beta: interfaces are subject to change. For recent changes see CHANGELOG. The library has been submitted to the Boost Library Incubator

Example WebSocket program:

#include <beast/core/to_string.hpp>
#include <beast/websocket.hpp>
#include <boost/asio.hpp>
#include <iostream>
#include <string>

int main()
{
    // Normal boost::asio setup
    std::string const host = "echo.websocket.org";
    boost::asio::io_service ios;
    boost::asio::ip::tcp::resolver r(ios);
    boost::asio::ip::tcp::socket sock(ios);
    boost::asio::connect(sock,
        r.resolve(boost::asio::ip::tcp::resolver::query{host, "80"}));

    // WebSocket connect and send message using beast
    beast::websocket::stream<boost::asio::ip::tcp::socket&> ws(sock);
    ws.handshake(host, "/");
    ws.write(boost::asio::buffer("Hello, world!"));

    // Receive WebSocket message, print and close using beast
    beast::streambuf sb;
    beast::websocket::opcode op;
    ws.read(op, sb);
    ws.close(beast::websocket::close_code::normal);
    std::cout << to_string(sb.data()) << "\n";
}

Example HTTP program:

#include <beast/http.hpp>
#include <boost/asio.hpp>
#include <iostream>
#include <string>

int main()
{
    // Normal boost::asio setup
    std::string const host = "boost.org";
    boost::asio::io_service ios;
    boost::asio::ip::tcp::resolver r(ios);
    boost::asio::ip::tcp::socket sock(ios);
    boost::asio::connect(sock,
        r.resolve(boost::asio::ip::tcp::resolver::query{host, "http"}));

    // Send HTTP request using beast
    beast::http::request_v1<beast::http::empty_body> req;
    req.method = "GET";
    req.url = "/";
    req.version = 11;
    req.headers.replace("Host", host + ":" + std::to_string(sock.remote_endpoint().port()));
    req.headers.replace("User-Agent", "Beast");
    beast::http::prepare(req);
    beast::http::write(sock, req);

    // Receive and print HTTP response using beast
    beast::streambuf sb;
    beast::http::response_v1<beast::http::streambuf_body> resp;
    beast::http::read(sock, sb, resp);
    std::cout << resp;
}

Links:

Please report issues or questions here: https://github.com/vinniefalco/Beast/issues

Description
Decentralized cryptocurrency blockchain daemon implementing the XRP Ledger protocol in C++
Readme 350 MiB
Languages
C++ 99%
CMake 0.5%
Python 0.2%
Mako 0.2%