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+ xmap,
54+ // xexpand,
55+ // xreserve,
56+ // xallocate,
57+ // xset,
58+ xremap,
59+ xflush,
60+ xunmap,
61+ xclose
4762};
4863
49- constexpr auto sp = " " ;
50-
5164size_t ticks () NOEXCEPT
5265{
5366 using clock = std::chrono::high_resolution_clock;
5467 static const auto start = clock::now ();
5568
5669 using namespace std ::chrono;
57- const auto span = duration_cast<milliseconds >(clock::now () - start);
58- return bc::system:: to_unsigned (span.count ());
70+ const auto span = duration_cast<microseconds >(clock::now () - start);
71+ return to_unsigned (span.count ());
5972}
60- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6173
62- namespace libbitcoin {
63- namespace database {
64-
65- BC_PUSH_WARNING (NO_THROW_IN_NOEXCEPT)
74+ void map::log ( auto kind) NOEXCEPT
75+ {
76+ std::cerr << ticks () << sp << kind << sp << opened_ << std::endl;
77+ }
6678
67- using namespace system ;
79+ void map::log (auto kind, auto extra) NOEXCEPT
80+ {
81+ std::cerr << ticks () << sp << kind << sp << opened_ << sp << extra << std::endl;
82+ }
83+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6884
6985map::map (const path& filename, size_t minimum, size_t expansion,
7086 bool random) NOEXCEPT
@@ -100,11 +116,9 @@ code map::open() NOEXCEPT
100116 if (const auto ec = file::open_ex (opened_, filename_, random_))
101117 return ec;
102118
103- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
104- // 42 0 confirmed.data 19303540
105- std::cerr << ticks () << sp << logger::xopen << sp << filename_ << sp << opened_ << std::endl;
106- // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
107-
119+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
120+ log (logger::xopen, filename_);
121+ // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
108122 return file::size_ex (logical_, opened_);
109123}
110124
@@ -119,10 +133,12 @@ code map::close() NOEXCEPT
119133 if (opened_ == file::invalid)
120134 return error::success;
121135
136+ // ~~~~~~~~~~~~~~~~~~
137+ log (logger::xclose);
138+ // ~~~~~~~~~~~~~~~~~~
122139 const auto descriptor = opened_;
123140 opened_ = file::invalid;
124141 logical_ = zero;
125-
126142 return file::close_ex (descriptor);
127143}
128144
@@ -280,6 +296,9 @@ bool map::expand(size_t size) NOEXCEPT
280296 return false ;
281297 }
282298
299+ // ~~~~~~~~~~~~~~~~~~
300+ // //log(logger::xexpand, size - logical_);
301+ // ~~~~~~~~~~~~~~~~~~
283302 logical_ = size;
284303 return true ;
285304}
@@ -300,6 +319,9 @@ bool map::reserve(size_t chunk) NOEXCEPT
300319 return false ;
301320 }
302321
322+ // ~~~~~~~~~~~~~~~~~~
323+ // //log(logger::xreserve, chunk);
324+ // ~~~~~~~~~~~~~~~~~~
303325 // Same as allocate except logical does not change.
304326 return true ;
305327}
@@ -327,6 +349,9 @@ size_t map::allocate(size_t chunk) NOEXCEPT
327349 return storage::eof;
328350 }
329351
352+ // ~~~~~~~~~~~~~~~~~~
353+ // //log(logger::xallocate, chunk);
354+ // ~~~~~~~~~~~~~~~~~~
330355 std::swap (logical_, end);
331356 return end;
332357}
@@ -360,6 +385,9 @@ memory_ptr map::set(size_t offset, size_t size, uint8_t backfill) NOEXCEPT
360385 logical_ = end;
361386 }
362387
388+ // ~~~~~~~~~~~~~~~~~~
389+ // //log(logger::xset, size);
390+ // ~~~~~~~~~~~~~~~~~~
363391 return get (offset);
364392}
365393
@@ -488,6 +516,9 @@ bool map::flush_() NOEXCEPT
488516 if (!success)
489517 set_first_code (error::fsync_failure);
490518
519+ // ~~~~~~~~~~~~~~~~~~
520+ log (logger::xflush);
521+ // ~~~~~~~~~~~~~~~~~~
491522 return success;
492523}
493524
@@ -516,6 +547,10 @@ bool map::unmap_() NOEXCEPT
516547 loaded_ = false ;
517548 capacity_ = zero;
518549 memory_map_ = {};
550+
551+ // ~~~~~~~~~~~~~~~~~~
552+ log (logger::xunmap);
553+ // ~~~~~~~~~~~~~~~~~~
519554 return success;
520555}
521556
@@ -533,6 +568,9 @@ bool map::map_() NOEXCEPT
533568 memory_map_ = pointer_cast<uint8_t >(::mmap (nullptr , size,
534569 PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0 ));
535570
571+ // ~~~~~~~~~~~~~~~~~~
572+ log (logger::xmap);
573+ // ~~~~~~~~~~~~~~~~~~
536574 return finalize_ (size);
537575}
538576
@@ -578,6 +616,9 @@ bool map::remap_(size_t size) NOEXCEPT
578616 PROT_READ | PROT_WRITE, MAP_SHARED, opened_, 0 ));
579617#endif
580618
619+ // ~~~~~~~~~~~~~~~~~~
620+ log (logger::xremap);
621+ // ~~~~~~~~~~~~~~~~~~
581622 return finalize_ (size);
582623}
583624
0 commit comments