Fix gcc warnings and errors

This commit is contained in:
Vinnie Falco
2013-08-09 19:23:24 -07:00
parent 173090f63f
commit a277fc3fbb
7 changed files with 77 additions and 49 deletions

View File

@@ -62,13 +62,13 @@ namespace beast
#include "tests/beast_TestPeerLogic.h"
#include "tests/beast_TestPeerTest.h"
#include "tests/detail/beast_TestPeerType.h"
#include "tests/detail/beast_TestPeerTestType.h"
#include "tests/detail/beast_TestPeerDetailsTcp.h"
#include "tests/detail/beast_TestPeerLogicSyncServer.h"
#include "tests/detail/beast_TestPeerLogicSyncClient.h"
#include "tests/detail/beast_TestPeerLogicAsyncServer.h"
#include "tests/detail/beast_TestPeerLogicAsyncClient.h"
#include "tests/detail/beast_TestPeerType.h"
#include "tests/detail/beast_TestPeerTestType.h"
#include "tests/detail/beast_TestPeerDetailsTcp.h"
}

View File

@@ -72,7 +72,7 @@ public:
// if Object did not have a declaration for
// protocol_type::socket
//
template <typename Object, class Enable = void>
template <typename AsioObject, class Enable = void>
struct native_socket
{
typedef void* native_socket_type;
@@ -83,16 +83,15 @@ public:
native_socket_type m_socket;
};
template <typename Object>
struct native_socket <Object, typename boost::enable_if <boost::is_class <
typename Object::protocol_type::socket> >::type>
template <typename AsioObject>
struct native_socket <AsioObject, typename boost::enable_if <boost::is_class <
typename AsioObject::protocol_type::socket> >::type>
{
typedef typename Object::protocol_type::socket native_socket_type;
typedef typename AsioObject::protocol_type::socket native_socket_type;
native_socket (Socket& peer)
: m_socket (&peer.this_layer <native_socket_type> ()) { }
native_socket_type& get () noexcept { return *m_socket; }
native_socket_type& operator-> () noexcept { return *m_socket; }
private:
native_socket_type* m_socket;
};

View File

@@ -25,7 +25,7 @@ public:
timeoutSeconds = 3
};
TestPeerTests () : UnitTest ("TestPeer", "beast")
TestPeerTests () : UnitTest ("TestPeer", "beast", runManual)
{
}

View File

@@ -31,8 +31,6 @@ protected:
typedef protocol_type::endpoint endpoint_type;
typedef protocol_type::resolver resolver_type;
struct NoArg { }; // dummy
public:
typedef protocol_type arg_type;
typedef socket_type native_socket_type;

View File

@@ -20,19 +20,49 @@
#ifndef BEAST_TESTPEERTYPE_H_INCLUDED
#define BEAST_TESTPEERTYPE_H_INCLUDED
template <typename Logic, typename DetailsType>
template <typename Logic, typename Details>
class TestPeerType
: public DetailsType
: public Details
, public Logic
, public TestPeer
, public Thread
{
protected:
// TestPeerDetails
using Details::get_socket;
using Details::get_acceptor;
using Details::get_io_service;
// Details
typedef typename Details::protocol_type protocol_type;
typedef typename Details::socket_type socket_type;
typedef typename Details::acceptor_type acceptor_type;
typedef typename Details::endpoint_type endpoint_type;
typedef typename Details::resolver_type resolver_type;
using Details::get_native_socket;
using Details::get_native_acceptor;
using Details::get_endpoint;
// TestPeerLogic
using Logic::error;
using Logic::socket;
using Logic::get_role;
using Logic::get_model;
using Logic::on_connect;
using Logic::on_connect_async;
using Logic::pure_virtual;
public:
typedef typename DetailsType::arg_type arg_type;
typedef TestPeerType <Logic, DetailsType> ThisType;
// Details
typedef typename Details::arg_type arg_type;
typedef typename Details::native_socket_type native_socket_type;
typedef typename Details::native_acceptor_type native_acceptor_type;
typedef TestPeerType <Logic, Details> ThisType;
TestPeerType (arg_type const& arg)
: DetailsType (arg)
: Details (arg)
, Logic (get_socket ())
, Thread (name ())
{
@@ -162,13 +192,17 @@ public:
if (failure (get_native_acceptor ().open (get_endpoint (get_role ()).protocol (), error ())))
return;
if (failure (get_native_acceptor ().set_option (socket_type::reuse_address (true), error ())))
// VFALCO TODO Figure out how to not hard code boost::asio::socket_base
if (failure (get_native_acceptor ().set_option (
boost::asio::socket_base::reuse_address (true), error ())))
return;
if (failure (get_native_acceptor ().bind (get_endpoint (get_role ()), error ())))
return;
if (failure (get_native_acceptor ().listen (socket_type::max_connections, error ())))
// VFALCO TODO Figure out how to not hard code boost::asio::socket_base
if (failure (get_native_acceptor ().listen (
boost::asio::socket_base::max_connections, error ())))
return;
}
};

View File

@@ -34,7 +34,7 @@ MultiSocket* MultiSocket::New (boost::asio::io_service& io_service,
class MultiSocketTests : public UnitTest
{
public:
class Details : public TestPeerDetails
class MultiSocketDetails : public TestPeerDetails
{
public:
typedef int arg_type;
@@ -54,7 +54,7 @@ public:
tcpv6 = 32
};
Details (arg_type flags)
MultiSocketDetails (arg_type flags)
: m_flags (flags)
{
m_socketOptions.useClientSsl = (flags & client_ssl) != 0;
@@ -66,6 +66,8 @@ public:
static String getArgName (arg_type arg)
{
String s;
if (arg & tcpv4) s << "tcpv4:";
if (arg & tcpv6) s << "tcpv6:";
if (arg != 0)
{
s << "[";
@@ -73,8 +75,6 @@ public:
if (arg & server_ssl) s << "server_ssl,";
if (arg & server_ssl_required) s << "server_ssl_required,";
if (arg & server_proxy) s << "server_proxy,";
if (arg & tcpv4) s << "tcpv4,";
if (arg & tcpv6) s << "tcpv6,";
s = s.substring (0, s.length () - 1) + "]";
}
else
@@ -104,8 +104,10 @@ public:
MultiSocket::Options m_socketOptions;
};
//--------------------------------------------------------------------------
template <class InternetProtocol>
class DetailsType : public Details
class MultiSocketDetailsType : public MultiSocketDetails
{
protected:
typedef InternetProtocol protocol_type;
@@ -118,8 +120,8 @@ public:
typedef socket_type native_socket_type;
typedef acceptor_type native_acceptor_type;
explicit DetailsType (arg_type flags = none)
: Details (flags)
explicit MultiSocketDetailsType (arg_type flags = none)
: MultiSocketDetails (flags)
, m_socket (get_io_service ())
, m_acceptor (get_io_service ())
, m_multiSocket (m_socket, getSocketOptions ())
@@ -149,24 +151,20 @@ public:
endpoint_type get_endpoint (TestPeer::Role role)
{
if (getFlags () & Details::tcpv4)
{
if (role == TestPeer::Role::server)
{
return endpoint_type (boost::asio::ip::address_v4::any (), 1053);
}
else
{
return endpoint_type (boost::asio::ip::address_v4::loopback (), 1053);
}
}
else
if (getFlags () & MultiSocketDetails::tcpv6)
{
if (role == TestPeer::Role::server)
return endpoint_type (boost::asio::ip::tcp::v6 (), 1052);
else
return endpoint_type (boost::asio::ip::address_v6 ().from_string ("::1"), 1052);
}
else
{
if (role == TestPeer::Role::server)
return endpoint_type (boost::asio::ip::address_v4::any (), 1053);
else
return endpoint_type (boost::asio::ip::address_v4::loopback (), 1053);
}
}
protected:
@@ -176,7 +174,7 @@ public:
SocketWrapper <acceptor_type> m_acceptor_wrapper;
};
MultiSocketTests () : UnitTest ("MultiSocket", "ripple")
MultiSocketTests () : UnitTest ("MultiSocket", "ripple", runManual)
{
}
@@ -195,7 +193,7 @@ public:
template <typename InternetProtocol, class Arg>
void testProtocol (Arg const& arg)
{
testAsync <DetailsType <InternetProtocol> > (arg);
testAsync <MultiSocketDetailsType <InternetProtocol> > (arg);
}
void testOptions (int flags)
@@ -208,14 +206,14 @@ public:
void runTest ()
{
// These should pass
testOptions (Details::none);
testOptions (Details::server_ssl);
testOptions (Details::client_ssl | Details::server_ssl);
testOptions (Details::client_ssl | Details::server_ssl_required);
testOptions (MultiSocketDetails::none);
testOptions (MultiSocketDetails::server_ssl);
testOptions (MultiSocketDetails::client_ssl | MultiSocketDetails::server_ssl);
testOptions (MultiSocketDetails::client_ssl | MultiSocketDetails::server_ssl_required);
// These should fail
testOptions (Details::client_ssl);
testOptions (Details::server_ssl_required);
testOptions (MultiSocketDetails::client_ssl);
testOptions (MultiSocketDetails::server_ssl_required);
}
};

View File

@@ -14,12 +14,11 @@ public:
boost::asio::ssl::context& context,
Handler& handler)
: m_handler (handler)
, mSocket (io_service, context)
, mStrand (io_service)
, mSocket (io_service, context)
#if RIPPLE_USES_BEAST_SOCKETS
, m_socketWrapper (mSocket)
#endif
{
}
@@ -258,11 +257,11 @@ private:
private:
Handler& m_handler;
boost::asio::io_service::strand mStrand;
AutoSocket mSocket;
#if RIPPLE_USES_BEAST_SOCKETS
SocketWrapper <AutoSocket> m_socketWrapper;
#endif
boost::asio::io_service::strand mStrand;
boost::asio::streambuf mLineBuffer;
Blob mQueryVec;