6 #include <lfringbuffer.h>
10 #include <level_logger.h>
11 #include <file_writer.h>
13 iris::file_writer writer("./log.txt");
14 // this creates a logging thread
15 iris::level_logger g_log(&writer, iris::TRACE);
19 #define ITERATIONS (int) 1000000
20 lfringbuffer rbuf(1024);
27 sslfqueue<buffer_t> q;
31 while (i <= ITERATIONS) {
34 std::this_thread::yield();
36 assert(std::stoi(std::string(b.b, b.b + b.size)) == b.data);
38 rbuf.release(b.alloc_size);
43 int main(int argc, char const *argv[]) {
46 //configure thread level parameters, these should be done before any logging
48 g_log.set_thread_queue_size(1024);
50 g_log.set_thread_ringbuf_size(20480);
52 g_log.info("Greetings from %s, bye %d\n", "iris", 0);
54 //this tells logging thread to persist the data into file and waits
55 g_log.sync_and_close();
60 assert(512 == rbuf.acquire(512, p1));
63 assert(256 == rbuf.acquire(256, p2));
66 assert(p2 - p1 == 512);
68 assert(0 == rbuf.acquire(512, p1));
70 assert(rbuf.freespace() == 256);
72 assert(0 == rbuf.acquire(512, p3));
76 assert(768 == rbuf.acquire(512, p3));
78 printf("rbuf.freespace(): %lu\n", rbuf.freespace());
79 assert(rbuf.freespace() == 0);
82 printf("rbuf.freespace(): %lu\n", rbuf.freespace());
83 assert(256 == rbuf.freespace());
85 printf("rbuf.freespace(): %lu\n", rbuf.freespace());
86 assert(1024 == rbuf.freespace());
88 std::thread recyler(recyle);
91 while (i <= ITERATIONS) {
92 std::string s(std::to_string(i));
97 while (!(size = rbuf.acquire(s.size(), ptr)))
98 std::this_thread::yield();
101 memcpy(b.b, s.c_str(), s.size());
107 std::this_thread::yield();