12#if defined(OS_USE_OS_APP_CONFIG_H)
13#include <cmsis-plus/os-app-config.h>
29#pragma clang diagnostic ignored "-Wc++98-compat"
44 std::size_t file_descriptors_manager::size__;
46#pragma GCC diagnostic push
48#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
50 io** file_descriptors_manager::descriptors_array__;
51#pragma GCC diagnostic pop
65 size__ =
size + reserved__;
66 descriptors_array__ =
new class io*[size__];
70#pragma GCC diagnostic push
72#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
74 descriptors_array__[i] =
nullptr;
75#pragma GCC diagnostic pop
81 trace::printf (
"file_descriptors_manager::%s(%) @%p\n", __func__,
this);
83 delete[] descriptors_array__;
93 if ((fildes < 0) || (
static_cast<std::size_t
> (fildes) >= size__)
94 || (descriptors_array__ ==
nullptr))
98#pragma GCC diagnostic push
100#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
102 return descriptors_array__[fildes];
103#pragma GCC diagnostic pop
109 if ((fildes < 0) || (
static_cast<std::size_t
> (fildes) >= size__))
119#if defined(OS_TRACE_POSIX_IO_FILE_DESCRIPTORS_MANAGER)
130 for (std::size_t i = reserved__; i < size__; ++i)
132#pragma GCC diagnostic push
133#if defined(__clang__)
134#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
136 if (descriptors_array__[i] ==
nullptr)
138 descriptors_array__[i] =
io;
140#if defined(OS_TRACE_POSIX_IO_FILE_DESCRIPTORS_MANAGER)
144 return static_cast<int> (i);
146#pragma GCC diagnostic pop
157 if ((fildes < 0) || (
static_cast<std::size_t
> (fildes) >= size__))
170#pragma GCC diagnostic push
171#if defined(__clang__)
172#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
174 descriptors_array__[fildes] =
io;
175#pragma GCC diagnostic pop
183#if defined(OS_TRACE_POSIX_IO_FILE_DESCRIPTORS_MANAGER)
184 trace::printf (
"file_descriptors_manager::%s(%d)\n", __func__, fildes);
187 if ((fildes < 0) || (
static_cast<std::size_t
> (fildes) >= size__))
193#pragma GCC diagnostic push
194#if defined(__clang__)
195#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
197 descriptors_array__[fildes]->clear_file_descriptor ();
198 descriptors_array__[fildes] =
nullptr;
199#pragma GCC diagnostic pop
206 assert ((fildes >= 0) && (
static_cast<std::size_t
> (fildes) < size__));
207#pragma GCC diagnostic push
208#if defined(__clang__)
209#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
211 auto*
const io = descriptors_array__[fildes];
212#pragma GCC diagnostic pop
217 return reinterpret_cast<class
socket*
> (
io);
223 std::size_t count = reserved__;
227#pragma GCC diagnostic push
228#if defined(__clang__)
229#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
231 if (descriptors_array__[i] !=
nullptr)
235#pragma GCC diagnostic pop
static class socket * socket(int fildes)
~file_descriptors_manager()
static bool valid(int fildes)
static int deallocate(file_descriptor_t fildes)
file_descriptors_manager(std::size_t size)
static int assign(file_descriptor_t fildes, class io *io)
static int allocate(class io *io)
static class io * io(int fildes)
file_descriptor_t file_descriptor(void) const
type_t get_type(void) const
int printf(const char *format,...)
Write a formatted string to the trace device.