3737#include < bitcoin/database/error.hpp>
3838#include < bitcoin/database/file/file.hpp>
3939
40+ namespace libbitcoin {
41+ namespace database {
42+
43+ BC_PUSH_WARNING (NO_THROW_IN_NOEXCEPT)
44+
45+ using namespace system ;
46+
4047// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41- #include < chrono>
42- #include < iostream>
48+ constexpr auto sp = " " ;
4349
4450enum logger
4551{
46- xopen = 0
52+ xopen,
53+ xclose,
54+ xmap,
55+ xunmap,
56+ xremap,
57+ xflush
4758};
4859
49- constexpr auto sp = " " ;
50-
5160size_t ticks () NOEXCEPT
5261{
5362 using clock = std::chrono::high_resolution_clock;
5463 static const auto start = clock::now ();
5564
5665 using namespace std ::chrono;
57- const auto span = duration_cast<milliseconds >(clock::now () - start);
58- return bc::system:: to_unsigned (span.count ());
66+ const auto span = duration_cast<nanoseconds >(clock::now () - start);
67+ return to_unsigned (span.count ());
5968}
60- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6169
62- namespace libbitcoin {
63- namespace database {
64-
65- BC_PUSH_WARNING (NO_THROW_IN_NOEXCEPT)
66-
67- using namespace system ;
70+ void map::log (auto kind) NOEXCEPT
71+ {
72+ std::cerr << ticks () << sp << kind << sp << opened_ << std::endl;
73+ }
74+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6875
6976map::map (const path& filename, size_t minimum, size_t expansion,
7077 bool random) NOEXCEPT
@@ -100,10 +107,9 @@ code map::open() NOEXCEPT
100107 if (const auto ec = file::open_ex (opened_, filename_, random_))
101108 return ec;
102109
103- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104- // 42 0 confirmed.data 19303540
110+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
105111 std::cerr << ticks () << sp << logger::xopen << sp << filename_ << sp << opened_ << std::endl;
106- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
112+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107113
108114 return file::size_ex (logical_, opened_);
109115}
@@ -119,10 +125,12 @@ code map::close() NOEXCEPT
119125 if (opened_ == file::invalid)
120126 return error::success;
121127
128+ // ~~~~~~~~~~~~~~~~~~
129+ log (logger::xclose);
130+ // ~~~~~~~~~~~~~~~~~~
122131 const auto descriptor = opened_;
123132 opened_ = file::invalid;
124133 logical_ = zero;
125-
126134 return file::close_ex (descriptor);
127135}
128136
@@ -488,6 +496,9 @@ bool map::flush_() NOEXCEPT
488496 if (!success)
489497 set_first_code (error::fsync_failure);
490498
499+ // ~~~~~~~~~~~~~~~~~~
500+ log (logger::xflush);
501+ // ~~~~~~~~~~~~~~~~~~
491502 return success;
492503}
493504
@@ -516,6 +527,10 @@ bool map::unmap_() NOEXCEPT
516527 loaded_ = false ;
517528 capacity_ = zero;
518529 memory_map_ = {};
530+
531+ // ~~~~~~~~~~~~~~~~~~
532+ log (logger::xunmap);
533+ // ~~~~~~~~~~~~~~~~~~
519534 return success;
520535}
521536
@@ -533,6 +548,9 @@ bool map::map_() NOEXCEPT
533548 memory_map_ = pointer_cast<uint8_t >(::mmap (nullptr , size,
534549 PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0 ));
535550
551+ // ~~~~~~~~~~~~~~~~~~
552+ log (logger::xmap);
553+ // ~~~~~~~~~~~~~~~~~~
536554 return finalize_ (size);
537555}
538556
@@ -578,6 +596,9 @@ bool map::remap_(size_t size) NOEXCEPT
578596 PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0 ));
579597#endif
580598
599+ // ~~~~~~~~~~~~~~~~~~
600+ log (logger::xremap);
601+ // ~~~~~~~~~~~~~~~~~~
581602 return finalize_ (size);
582603}
583604
0 commit comments