session.h
1 #pragma once 2 #include <stddef.h> 3 #include <atomic> 4 #include <stdint.h> 5 6 namespace programs::shell::session { 7 8 struct RingBuffer { 9 char *data; 10 uint16_t capacity; 11 std::atomic<uint16_t> head; 12 std::atomic<uint16_t> tail; 13 }; 14 15 struct WriteBuffer { 16 char *data; 17 size_t capacity; 18 size_t position; 19 }; 20 21 void reset(RingBuffer *ring); 22 bool push(RingBuffer *ring, char ch); 23 int pop(RingBuffer *ring, char *ch); 24 25 void reset(WriteBuffer *buffer); 26 bool push(WriteBuffer *buffer, char ch); 27 28 } 29