C++ core with working memory pool
[electrum-server.git] / backends / libbitcoin / membuf.cpp
1 #include <boost/python.hpp>
2 namespace python = boost::python;
3
4 #include "memory_buffer.hpp"
5
6 struct memory_buffer_wrapper
7 {
8     memory_buffer_wrapper(async_service_ptr service, blockchain_ptr chain,
9         transaction_pool_ptr txpool)
10     {
11         membuf = std::make_shared<memory_buffer>(service, chain, txpool);
12     }
13
14     void set_handles(python::object handle_tx_stored,
15         python::object handle_tx_confirmed)
16     {
17         membuf->set_handles(handle_tx_stored, handle_tx_confirmed);
18     }
19
20     void receive(const message::transaction& tx,
21         python::object handle_receive)
22     {
23         membuf->receive(tx, handle_receive);
24     }
25
26     memory_buffer_ptr membuf;
27 };
28
29 BOOST_PYTHON_MODULE(membuf)
30 {
31     using namespace boost::python;
32     class_<memory_buffer_wrapper>("memory_buffer", init<
33             async_service_ptr, blockchain_ptr, transaction_pool_ptr>())
34         .def("receive", &memory_buffer_wrapper::receive)
35         .def("set_handles", &memory_buffer_wrapper::set_handles)
36         .def_readonly("internal_ptr", &memory_buffer_wrapper::membuf)
37     ;
38     class_<memory_buffer_ptr>("internal_memory_buffer", no_init);
39 }
40