Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ lib_LTLIBRARIES = src/libbitcoin-server.la
src_libbitcoin_server_la_CPPFLAGS = -I${srcdir}/include -DSYSCONFDIR=\"${sysconfdir}\" ${bitcoin_protocol_CPPFLAGS} ${bitcoin_node_CPPFLAGS}
src_libbitcoin_server_la_LIBADD = ${bitcoin_protocol_LIBS} ${bitcoin_node_LIBS}
src_libbitcoin_server_la_SOURCES = \
src/address_key.cpp \
src/configuration.cpp \
src/parser.cpp \
src/server_node.cpp \
Expand All @@ -43,8 +44,8 @@ src_libbitcoin_server_la_SOURCES = \
src/interface/blockchain.cpp \
src/interface/protocol.cpp \
src/interface/transaction_pool.cpp \
src/messages/incoming.cpp \
src/messages/outgoing.cpp \
src/messages/message.cpp \
src/messages/route.cpp \
src/services/block_service.cpp \
src/services/heartbeat_service.cpp \
src/services/query_service.cpp \
Expand Down Expand Up @@ -108,8 +109,8 @@ include_bitcoin_server_interface_HEADERS = \

include_bitcoin_server_messagesdir = ${includedir}/bitcoin/server/messages
include_bitcoin_server_messages_HEADERS = \
include/bitcoin/server/messages/incoming.hpp \
include/bitcoin/server/messages/outgoing.hpp
include/bitcoin/server/messages/message.hpp \
include/bitcoin/server/messages/route.hpp

include_bitcoin_server_servicesdir = ${includedir}/bitcoin/server/services
include_bitcoin_server_services_HEADERS = \
Expand All @@ -120,6 +121,7 @@ include_bitcoin_server_services_HEADERS = \

include_bitcoin_server_utilitydir = ${includedir}/bitcoin/server/utility
include_bitcoin_server_utility_HEADERS = \
include/bitcoin/server/utility/address_key.hpp \
include/bitcoin/server/utility/authenticator.hpp \
include/bitcoin/server/utility/fetch_helpers.hpp

Expand Down
10 changes: 6 additions & 4 deletions builds/msvc/vs2013/libbitcoin-server/libbitcoin-server.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -78,15 +78,16 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\blockchain.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\protocol.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\transaction_pool.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\incoming.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\outgoing.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\message.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\route.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\parser.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\server_node.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\block_service.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\heartbeat_service.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\query_service.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\services\transaction_service.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\settings.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\address_key.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\authenticator.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\fetch_helpers.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\server\version.hpp" />
Expand All @@ -95,13 +96,14 @@
<ClInclude Include="..\..\resource.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\src\address_key.cpp" />
<ClCompile Include="..\..\..\..\src\configuration.cpp" />
<ClCompile Include="..\..\..\..\src\interface\address.cpp" />
<ClCompile Include="..\..\..\..\src\interface\blockchain.cpp" />
<ClCompile Include="..\..\..\..\src\interface\protocol.cpp" />
<ClCompile Include="..\..\..\..\src\interface\transaction_pool.cpp" />
<ClCompile Include="..\..\..\..\src\messages\incoming.cpp" />
<ClCompile Include="..\..\..\..\src\messages\outgoing.cpp" />
<ClCompile Include="..\..\..\..\src\messages\message.cpp" />
<ClCompile Include="..\..\..\..\src\messages\route.cpp" />
<ClCompile Include="..\..\..\..\src\parser.cpp" />
<ClCompile Include="..\..\..\..\src\server_node.cpp" />
<ClCompile Include="..\..\..\..\src\services\block_service.cpp" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,12 +82,6 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\interface\blockchain.hpp">
<Filter>include\bitcoin\server\interface</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\outgoing.hpp">
<Filter>include\bitcoin\server\messages</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\incoming.hpp">
<Filter>include\bitcoin\server\messages</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\query_worker.hpp">
<Filter>include\bitcoin\server\workers</Filter>
</ClInclude>
Expand All @@ -112,6 +106,15 @@
<ClInclude Include="..\..\..\..\include\bitcoin\server\workers\notification_worker.hpp">
<Filter>include\bitcoin\server\workers</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\route.hpp">
<Filter>include\bitcoin\server\messages</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\messages\message.hpp">
<Filter>include\bitcoin\server\messages</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\server\utility\address_key.hpp">
<Filter>include\bitcoin\server\utility</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\..\src\server_node.cpp">
Expand All @@ -138,12 +141,6 @@
<ClCompile Include="..\..\..\..\src\settings.cpp">
<Filter>src</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\messages\incoming.cpp">
<Filter>src\messages</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\messages\outgoing.cpp">
<Filter>src\messages</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\utility\fetch_helpers.cpp">
<Filter>src\utility</Filter>
</ClCompile>
Expand All @@ -168,6 +165,15 @@
<ClCompile Include="..\..\..\..\src\workers\notification_worker.cpp">
<Filter>src\workers</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\messages\route.cpp">
<Filter>src\messages</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\messages\message.cpp">
<Filter>src\messages</Filter>
</ClCompile>
<ClCompile Include="..\..\..\..\src\address_key.cpp">
<Filter>src\utility</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="..\..\resource.rc" />
Expand Down
4 changes: 0 additions & 4 deletions console/executor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,13 @@
#include "executor.hpp"

#include <algorithm>
#include <chrono>
#include <csignal>
#include <functional>
#include <future>
#include <iostream>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <boost/filesystem.hpp>
#include <boost/format.hpp>
#include <bitcoin/server.hpp>
Expand All @@ -37,9 +35,7 @@ namespace libbitcoin {
namespace server {

using boost::format;
using namespace std::chrono;
using namespace std::placeholders;
using namespace std::this_thread;
using namespace boost::system;
using namespace bc::config;
using namespace bc::database;
Expand Down
5 changes: 3 additions & 2 deletions include/bitcoin/server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,13 @@
#include <bitcoin/server/interface/blockchain.hpp>
#include <bitcoin/server/interface/protocol.hpp>
#include <bitcoin/server/interface/transaction_pool.hpp>
#include <bitcoin/server/messages/incoming.hpp>
#include <bitcoin/server/messages/outgoing.hpp>
#include <bitcoin/server/messages/message.hpp>
#include <bitcoin/server/messages/route.hpp>
#include <bitcoin/server/services/block_service.hpp>
#include <bitcoin/server/services/heartbeat_service.hpp>
#include <bitcoin/server/services/query_service.hpp>
#include <bitcoin/server/services/transaction_service.hpp>
#include <bitcoin/server/utility/address_key.hpp>
#include <bitcoin/server/utility/authenticator.hpp>
#include <bitcoin/server/utility/fetch_helpers.hpp>
#include <bitcoin/server/workers/notification_worker.hpp>
Expand Down
41 changes: 20 additions & 21 deletions include/bitcoin/server/interface/address.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,44 +21,43 @@
#define LIBBITCOIN_SERVER_ADDRESS_HPP

#include <bitcoin/server/define.hpp>
#include <bitcoin/server/messages/incoming.hpp>
#include <bitcoin/server/messages/outgoing.hpp>
#include <bitcoin/server/messages/message.hpp>
#include <bitcoin/server/server_node.hpp>

namespace libbitcoin {
namespace server {

// TODO: move to bc::protocol and integrate with zmq::message.
class BCS_API route
{
bool secure;
bool delimited;
data_queue identities;
};

/// Address interface.
/// Class and method names are published and mapped to the zeromq interface.
class BCS_API address
{
public:
/// Fetch the blockchain and transaction pool history of a payment address.
static void fetch_history2(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Alias for subscribe, preserved for backward compatability.
static void renew(server_node& node, const message& request,
send_handler handler);

/// Subscribe to payment or stealth address notifications by prefix.
static void subscribe(server_node& node, const message& request,
send_handler handler);

/// Subscribe to payment and stealth address notifications by prefix.
static void subscribe(server_node& node, const incoming& request,
static void subscribe2(server_node& node, const message& request,
send_handler handler);

/// Unsubscribe to payment and stealth address notifications by prefix.
static void unsubscribe2(server_node& node, const message& request,
send_handler handler);

static bool unwrap_subscribe_args(route& reply_to, binary& prefix_filter,
chain::subscribe_type& type, const incoming& request);
private:
static bool unwrap_subscribe_args(binary& prefix_filter,
chain::subscribe_type& type, const message& request);

// TODO: can't we just call subscribe again? This would prevent duplicates.
/////// Subscribe to payment and stealth address notifications by prefix.
////static void renew(server_node& node,
//// const incoming& request, send_handler handler);
////
////static bool unwrap_renew_args(route& reply_to, binary& prefix_filter,
//// chain::subscribe_type& type, const incoming& request);
static bool unwrap_subscribe2_args(binary& prefix_filter,
const message& request);
};

} // namespace server
Expand Down
43 changes: 21 additions & 22 deletions include/bitcoin/server/interface/blockchain.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@
#include <cstddef>
#include <bitcoin/blockchain.hpp>
#include <bitcoin/server/define.hpp>
#include <bitcoin/server/messages/incoming.hpp>
#include <bitcoin/server/messages/outgoing.hpp>
#include <bitcoin/server/messages/message.hpp>
#include <bitcoin/server/server_node.hpp>

namespace libbitcoin {
Expand All @@ -38,77 +37,77 @@ class BCS_API blockchain
public:
/// Fetch the blockchain history of a payment address.
static void fetch_history(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch a transaction from the blockchain by its hash.
static void fetch_transaction(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch the current height of the blockchain.
static void fetch_last_height(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch a block header by hash or height (conditional serialization).
static void fetch_block_header(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch tx hashes of block by hash or height (conditional serialization).
static void fetch_block_transaction_hashes(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch the block index of a transaction and the height of its block.
static void fetch_transaction_index(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch the inpoint which is spent by the specified output.
static void fetch_spend(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch the height of a block by its hash.
static void fetch_block_height(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Fetch the blockchain history of a stealth address by its prefix filter.
static void fetch_stealth(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

private:
static void last_height_fetched(const code& ec, size_t last_height,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

static void fetch_block_header_by_hash(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

static void fetch_block_header_by_height(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

static void block_header_fetched(const code& ec,
const chain::header& block, const incoming& request,
const chain::header& block, const message& request,
send_handler handler);

static void fetch_block_transaction_hashes_by_hash(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

static void fetch_block_transaction_hashes_by_height(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

static void block_transaction_hashes_fetched(const code& ec,
const hash_list& hashes, const incoming& request,
const hash_list& hashes, const message& request,
send_handler handler);

static void transaction_index_fetched(const code& ec, size_t block_height,
size_t index, const incoming& request, send_handler handler);
size_t index, const message& request, send_handler handler);

static void spend_fetched(const code& ec,
const chain::input_point& inpoint, const incoming& request,
const chain::input_point& inpoint, const message& request,
send_handler handler);

static void block_height_fetched(const code& ec, size_t block_height,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

static void stealth_fetched(const code& ec,
const chain::stealth_compact::list& stealth_results,
const incoming& request, send_handler handler);
const message& request, send_handler handler);
};

} // namespace server
Expand Down
9 changes: 4 additions & 5 deletions include/bitcoin/server/interface/protocol.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@

#include <cstddef>
#include <bitcoin/server/define.hpp>
#include <bitcoin/server/messages/incoming.hpp>
#include <bitcoin/server/messages/outgoing.hpp>
#include <bitcoin/server/messages/message.hpp>
#include <bitcoin/server/server_node.hpp>

namespace libbitcoin {
Expand All @@ -36,15 +35,15 @@ class BCS_API protocol
public:
/// Broadcast a transaction to all connected peers.
static void broadcast_transaction(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

/// Determine the count of all connected peers.
static void total_connections(server_node& node,
const incoming& request, send_handler handler);
const message& request, send_handler handler);

private:
static void handle_total_connections(size_t count,
const incoming& request, send_handler handler);
const message& request, send_handler handler);
};

} // namespace server
Expand Down
Loading