Skip to content

Commit c2fd121

Browse files
committed
Refactor beast::asio:
* New tools for completion handlers: - wrap_handler provides composed io_service execution guarantees. - bind_handler rebinds arguments to handlers. - shared_handler type-erases any completion handler. - buffer_sequence type-erases templated BufferSequences - abstract_socket replaces Socket - socket_wrapper replaces SocketWrapper - beast::asio placeholders to work with std::bind * Removed obsolete classes and functions - AbstractHandler - ComposedAsyncOperation - SharedFunction - SharedHandler - SharedHandlerAllocator - SharedHandlerPtr - SharedHandlerType - SocketBase - SocketWrapperStrand - wrapHandler * Refactored classes to use new tools - abstract_socket - socket_wrapper - HandshakeDetector - HttpClientType * Miscellanous tidying - socket classes moved to beast::asio namespace - beast asio files provide their own namespace declaration. - Fix IsCallPossible conflicting template parameter name - Use <boost/get_pointer.hpp> for C++11 compatibility. - Remove extraneous include path from build environment.
1 parent e3c1375 commit c2fd121

File tree

161 files changed

+3138
-3786
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

161 files changed

+3138
-3786
lines changed

Builds/QtCreator/rippled.pro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ linux-g++:QMAKE_CXXFLAGS += \
4545
-pthread
4646

4747
INCLUDEPATH += \
48-
"../../src" \
48+
"../../src/BeastConfig/" \
4949
"../../src/leveldb/" \
5050
"../../src/leveldb/port" \
5151
"../../src/leveldb/include" \

Builds/VisualStudio2013/RippleD.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<PreprocessorDefinitions>_VARIADIC_MAX=10;_WIN32_WINNT=0x0600;_SCL_SECURE_NO_WARNINGS;_CRT_SECURE_NO_WARNINGS;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
1515
<MultiProcessorCompilation>true</MultiProcessorCompilation>
1616
<WarningLevel>Level3</WarningLevel>
17-
<AdditionalIncludeDirectories>$(RepoDir)\src\protobuf\src;$(RepoDir)\src\protobuf\vsprojects;$(RepoDir)\src;$(RepoDir)\src\leveldb;$(RepoDir)\src\leveldb\include;$(RepoDir)\build\proto;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
17+
<AdditionalIncludeDirectories>$(RepoDir)\src\BeastConfig;$(RepoDir)\src\protobuf\src;$(RepoDir)\src\protobuf\vsprojects;$(RepoDir)\src\leveldb;$(RepoDir)\src\leveldb\include;$(RepoDir)\build\proto;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
1818
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
1919
<ExceptionHandling>Async</ExceptionHandling>
2020
<DisableSpecificWarnings>4018;4244</DisableSpecificWarnings>

Builds/VisualStudio2013/RippleD.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2228,6 +2228,7 @@
22282228
</ClCompile>
22292229
</ItemGroup>
22302230
<ItemGroup>
2231+
<ClInclude Include="..\..\src\BeastConfig\BeastConfig.h" />
22312232
<ClInclude Include="..\..\src\ripple\algorithm\api\CycledSet.h" />
22322233
<ClInclude Include="..\..\src\ripple\algorithm\api\DecayingSample.h" />
22332234
<ClInclude Include="..\..\src\ripple\common\byte_view.h" />
@@ -2663,7 +2664,6 @@
26632664
<ClInclude Include="..\..\src\ripple_rpc\ripple_rpc.h" />
26642665
<ClInclude Include="..\..\src\ripple_websocket\autosocket\AutoSocket.h" />
26652666
<ClInclude Include="..\..\src\ripple_websocket\ripple_websocket.h" />
2666-
<ClInclude Include="..\..\src\BeastConfig.h" />
26672667
<ClInclude Include="..\..\src\leveldb\db\builder.h" />
26682668
<ClInclude Include="..\..\src\leveldb\db\dbformat.h" />
26692669
<ClInclude Include="..\..\src\leveldb\db\db_impl.h" />

Builds/VisualStudio2013/RippleD.vcxproj.filters

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2069,7 +2069,6 @@
20692069
<ClInclude Include="..\..\src\ripple_app\misc\Validations.h">
20702070
<Filter>[2] Old Ripple\ripple_app\misc</Filter>
20712071
</ClInclude>
2072-
<ClInclude Include="..\..\src\BeastConfig.h" />
20732072
<ClInclude Include="..\..\src\ripple_core\functional\Config.h">
20742073
<Filter>[2] Old Ripple\ripple_core\functional</Filter>
20752074
</ClInclude>

SConstruct

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,10 @@ else:
149149
#
150150
INCLUDE_PATHS = [
151151
'.',
152-
'src',
152+
'src/BeastConfig',
153153
'src/leveldb',
154154
'src/leveldb/port',
155155
'src/leveldb/include',
156-
'src/beast',
157156
'build/proto'
158157
]
159158

File renamed without changes.

src/beast/Builds/VisualStudio2013/beast.vcxproj

Lines changed: 14 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,15 @@
8383
<ItemGroup>
8484
<ClInclude Include="..\..\beast\Arithmetic.h" />
8585
<ClInclude Include="..\..\beast\Asio.h" />
86+
<ClInclude Include="..\..\beast\asio\abstract_socket.h" />
87+
<ClInclude Include="..\..\beast\asio\bind_handler.h" />
88+
<ClInclude Include="..\..\beast\asio\buffer_sequence.h" />
8689
<ClInclude Include="..\..\beast\asio\io_latency_probe.h" />
8790
<ClInclude Include="..\..\beast\asio\IPAddressConversion.h" />
91+
<ClInclude Include="..\..\beast\asio\placeholders.h" />
92+
<ClInclude Include="..\..\beast\asio\shared_handler.h" />
93+
<ClInclude Include="..\..\beast\asio\socket_wrapper.h" />
94+
<ClInclude Include="..\..\beast\asio\wrap_handler.h" />
8895
<ClInclude Include="..\..\beast\Atomic.h" />
8996
<ClInclude Include="..\..\beast\Boost.h" />
9097
<ClInclude Include="..\..\beast\boost\ErrorCode.h" />
@@ -150,6 +157,7 @@
150157
<ClInclude Include="..\..\beast\HeapBlock.h" />
151158
<ClInclude Include="..\..\beast\HTTP.h" />
152159
<ClInclude Include="..\..\beast\http\impl\http-parser\http_parser.h" />
160+
<ClInclude Include="..\..\beast\http\impl\http_parser.h" />
153161
<ClInclude Include="..\..\beast\http\ParsedURL.h" />
154162
<ClInclude Include="..\..\beast\http\URL.h" />
155163
<ClInclude Include="..\..\beast\Insight.h" />
@@ -238,15 +246,7 @@
238246
<ClInclude Include="..\..\beast\utility\StaticObject.h" />
239247
<ClInclude Include="..\..\beast\Version.h" />
240248
<ClInclude Include="..\..\config\BeastConfig.h" />
241-
<ClInclude Include="..\..\modules\beast_asio\async\AbstractHandler.h" />
242249
<ClInclude Include="..\..\modules\beast_asio\async\AsyncObject.h" />
243-
<ClInclude Include="..\..\modules\beast_asio\async\ComposedAsyncOperation.h" />
244-
<ClInclude Include="..\..\modules\beast_asio\async\WrapHandler.h" />
245-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandler.h" />
246-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandlerAllocator.h" />
247-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandlerPtr.h" />
248-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandlerType.h" />
249-
<ClInclude Include="..\..\modules\beast_asio\basics\BuffersType.h" />
250250
<ClInclude Include="..\..\modules\beast_asio\basics\FixedInputBuffer.h" />
251251
<ClInclude Include="..\..\modules\beast_asio\basics\PeerRole.h" />
252252
<ClInclude Include="..\..\modules\beast_asio\basics\SharedArg.h" />
@@ -270,9 +270,6 @@
270270
<ClInclude Include="..\..\modules\beast_asio\protocol\HandshakeDetector.h" />
271271
<ClInclude Include="..\..\modules\beast_asio\protocol\InputParser.h" />
272272
<ClInclude Include="..\..\modules\beast_asio\protocol\PrefilledReadStream.h" />
273-
<ClInclude Include="..\..\modules\beast_asio\sockets\Socket.h" />
274-
<ClInclude Include="..\..\modules\beast_asio\sockets\SocketBase.h" />
275-
<ClInclude Include="..\..\modules\beast_asio\sockets\SocketWrapper.h" />
276273
<ClInclude Include="..\..\modules\beast_asio\system\BoostIncludes.h" />
277274
<ClInclude Include="..\..\modules\beast_asio\system\OpenSSLIncludes.h" />
278275
<ClInclude Include="..\..\modules\beast_asio\tests\TestPeer.h" />
@@ -325,7 +322,6 @@
325322
<ClInclude Include="..\..\modules\beast_core\memory\MemoryAlignment.h" />
326323
<ClInclude Include="..\..\modules\beast_core\memory\MemoryBlock.h" />
327324
<ClInclude Include="..\..\modules\beast_core\memory\OptionalScopedPointer.h" />
328-
<ClInclude Include="..\..\modules\beast_core\memory\SharedFunction.h" />
329325
<ClInclude Include="..\..\modules\beast_core\memory\SharedSingleton.h" />
330326
<ClInclude Include="..\..\modules\beast_core\misc\Main.h" />
331327
<ClInclude Include="..\..\modules\beast_core\misc\Result.h" />
@@ -424,6 +420,12 @@
424420
<ClInclude Include="..\..\modules\beast_sqlite\sqlite\sqlite3ext.h" />
425421
</ItemGroup>
426422
<ItemGroup>
423+
<ClCompile Include="..\..\beast\asio\abstract_socket.cpp">
424+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
425+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
426+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
427+
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
428+
</ClCompile>
427429
<ClCompile Include="..\..\beast\asio\Asio.cpp" />
428430
<ClCompile Include="..\..\beast\asio\impl\IPAddressConversion.cpp">
429431
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -743,12 +745,6 @@
743745
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
744746
</ClCompile>
745747
<ClCompile Include="..\..\beast\utility\Utility.cpp" />
746-
<ClCompile Include="..\..\modules\beast_asio\async\SharedHandler.cpp">
747-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
748-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
749-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
750-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
751-
</ClCompile>
752748
<ClCompile Include="..\..\modules\beast_asio\basics\PeerRole.cpp">
753749
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
754750
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
@@ -826,18 +822,6 @@
826822
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
827823
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
828824
</ClCompile>
829-
<ClCompile Include="..\..\modules\beast_asio\sockets\Socket.cpp">
830-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
831-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
832-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
833-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
834-
</ClCompile>
835-
<ClCompile Include="..\..\modules\beast_asio\sockets\SocketBase.cpp">
836-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
837-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
838-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
839-
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
840-
</ClCompile>
841825
<ClCompile Include="..\..\modules\beast_asio\system\BoostUnitTests.cpp">
842826
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
843827
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>

src/beast/Builds/VisualStudio2013/beast.vcxproj.filters

Lines changed: 27 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,6 @@
159159
<Filter Include="beast_asio">
160160
<UniqueIdentifier>{54bbe439-76c3-4781-becc-9c70a2be6d82}</UniqueIdentifier>
161161
</Filter>
162-
<Filter Include="beast_asio\sockets">
163-
<UniqueIdentifier>{af535ad5-a06c-462f-8ac0-8207a708e032}</UniqueIdentifier>
164-
</Filter>
165162
<Filter Include="beast_asio\system">
166163
<UniqueIdentifier>{c7a576bb-27b2-486e-aa14-3c51aa86c50f}</UniqueIdentifier>
167164
</Filter>
@@ -710,36 +707,12 @@
710707
<ClInclude Include="..\..\modules\beast_core\system\SystemStats.h">
711708
<Filter>beast_core\system</Filter>
712709
</ClInclude>
713-
<ClInclude Include="..\..\modules\beast_asio\async\ComposedAsyncOperation.h">
714-
<Filter>beast_asio\async</Filter>
715-
</ClInclude>
716-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandler.h">
717-
<Filter>beast_asio\async</Filter>
718-
</ClInclude>
719-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandlerAllocator.h">
720-
<Filter>beast_asio\async</Filter>
721-
</ClInclude>
722-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandlerPtr.h">
723-
<Filter>beast_asio\async</Filter>
724-
</ClInclude>
725-
<ClInclude Include="..\..\modules\beast_asio\async\SharedHandlerType.h">
726-
<Filter>beast_asio\async</Filter>
727-
</ClInclude>
728710
<ClInclude Include="..\..\modules\beast_asio\basics\FixedInputBuffer.h">
729711
<Filter>beast_asio\basics</Filter>
730712
</ClInclude>
731713
<ClInclude Include="..\..\modules\beast_asio\basics\PeerRole.h">
732714
<Filter>beast_asio\basics</Filter>
733715
</ClInclude>
734-
<ClInclude Include="..\..\modules\beast_asio\sockets\Socket.h">
735-
<Filter>beast_asio\sockets</Filter>
736-
</ClInclude>
737-
<ClInclude Include="..\..\modules\beast_asio\sockets\SocketBase.h">
738-
<Filter>beast_asio\sockets</Filter>
739-
</ClInclude>
740-
<ClInclude Include="..\..\modules\beast_asio\sockets\SocketWrapper.h">
741-
<Filter>beast_asio\sockets</Filter>
742-
</ClInclude>
743716
<ClInclude Include="..\..\modules\beast_asio\system\OpenSSLIncludes.h">
744717
<Filter>beast_asio\system</Filter>
745718
</ClInclude>
@@ -824,9 +797,6 @@
824797
<ClInclude Include="..\..\modules\beast_asio\http\HTTPParserImpl.h">
825798
<Filter>beast_asio\http</Filter>
826799
</ClInclude>
827-
<ClInclude Include="..\..\modules\beast_asio\basics\BuffersType.h">
828-
<Filter>beast_asio\basics</Filter>
829-
</ClInclude>
830800
<ClInclude Include="..\..\modules\beast_core\memory\SharedSingleton.h">
831801
<Filter>beast_core\memory</Filter>
832802
</ClInclude>
@@ -839,9 +809,6 @@
839809
<ClInclude Include="..\..\modules\beast_core\diagnostic\FatalError.h">
840810
<Filter>beast_core\diagnostic</Filter>
841811
</ClInclude>
842-
<ClInclude Include="..\..\modules\beast_core\memory\SharedFunction.h">
843-
<Filter>beast_core\memory</Filter>
844-
</ClInclude>
845812
<ClInclude Include="..\..\beast\Config.h">
846813
<Filter>beast</Filter>
847814
</ClInclude>
@@ -986,12 +953,6 @@
986953
<ClInclude Include="..\..\beast\crypto\Sha256.h">
987954
<Filter>beast\crypto</Filter>
988955
</ClInclude>
989-
<ClInclude Include="..\..\modules\beast_asio\async\WrapHandler.h">
990-
<Filter>beast_asio\async</Filter>
991-
</ClInclude>
992-
<ClInclude Include="..\..\modules\beast_asio\async\AbstractHandler.h">
993-
<Filter>beast_asio\async</Filter>
994-
</ClInclude>
995956
<ClInclude Include="..\..\beast\Chrono.h">
996957
<Filter>beast</Filter>
997958
</ClInclude>
@@ -1338,6 +1299,30 @@
13381299
<ClInclude Include="..\..\beast\cxx14\utility.h">
13391300
<Filter>beast\cxx14</Filter>
13401301
</ClInclude>
1302+
<ClInclude Include="..\..\beast\asio\abstract_socket.h">
1303+
<Filter>beast\asio</Filter>
1304+
</ClInclude>
1305+
<ClInclude Include="..\..\beast\asio\bind_handler.h">
1306+
<Filter>beast\asio</Filter>
1307+
</ClInclude>
1308+
<ClInclude Include="..\..\beast\asio\buffer_sequence.h">
1309+
<Filter>beast\asio</Filter>
1310+
</ClInclude>
1311+
<ClInclude Include="..\..\beast\asio\placeholders.h">
1312+
<Filter>beast\asio</Filter>
1313+
</ClInclude>
1314+
<ClInclude Include="..\..\beast\asio\shared_handler.h">
1315+
<Filter>beast\asio</Filter>
1316+
</ClInclude>
1317+
<ClInclude Include="..\..\beast\asio\socket_wrapper.h">
1318+
<Filter>beast\asio</Filter>
1319+
</ClInclude>
1320+
<ClInclude Include="..\..\beast\asio\wrap_handler.h">
1321+
<Filter>beast\asio</Filter>
1322+
</ClInclude>
1323+
<ClInclude Include="..\..\beast\http\impl\http_parser.h">
1324+
<Filter>beast\http\impl</Filter>
1325+
</ClInclude>
13411326
</ItemGroup>
13421327
<ItemGroup>
13431328
<ClCompile Include="..\..\modules\beast_core\containers\DynamicObject.cpp">
@@ -1649,18 +1634,9 @@
16491634
<ClCompile Include="..\..\modules\beast_core\system\SystemStats.cpp">
16501635
<Filter>beast_core\system</Filter>
16511636
</ClCompile>
1652-
<ClCompile Include="..\..\modules\beast_asio\async\SharedHandler.cpp">
1653-
<Filter>beast_asio\async</Filter>
1654-
</ClCompile>
16551637
<ClCompile Include="..\..\modules\beast_asio\basics\PeerRole.cpp">
16561638
<Filter>beast_asio\basics</Filter>
16571639
</ClCompile>
1658-
<ClCompile Include="..\..\modules\beast_asio\sockets\Socket.cpp">
1659-
<Filter>beast_asio\sockets</Filter>
1660-
</ClCompile>
1661-
<ClCompile Include="..\..\modules\beast_asio\sockets\SocketBase.cpp">
1662-
<Filter>beast_asio\sockets</Filter>
1663-
</ClCompile>
16641640
<ClCompile Include="..\..\modules\beast_asio\system\BoostUnitTests.cpp">
16651641
<Filter>beast_asio\system</Filter>
16661642
</ClCompile>
@@ -1931,6 +1907,9 @@
19311907
<ClCompile Include="..\..\beast\cxx14\tests\integer_sequence.test.cpp">
19321908
<Filter>beast\cxx14\tests</Filter>
19331909
</ClCompile>
1910+
<ClCompile Include="..\..\beast\asio\abstract_socket.cpp">
1911+
<Filter>beast\asio</Filter>
1912+
</ClCompile>
19341913
</ItemGroup>
19351914
<ItemGroup>
19361915
<Text Include="..\..\TODO.txt">

src/beast/beast/Asio.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,4 @@
2020
#ifndef BEAST_ASIO_H_INCLUDED
2121
#define BEAST_ASIO_H_INCLUDED
2222

23-
#include "asio/IPAddressConversion.h"
24-
2523
#endif

src/beast/beast/asio/Asio.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,9 @@
2020
#include "BeastConfig.h"
2121

2222
#include "impl/IPAddressConversion.cpp"
23+
24+
#include "tests/wrap_handler_tests.cpp"
25+
#include "tests/bind_handler_tests.cpp"
26+
#include "tests/shared_handler_tests.cpp"
27+
28+
#include "abstract_socket.cpp" // TEMPORARY!

0 commit comments

Comments
 (0)