| /*! \file strrb.h |
| * Osmocom string ringbuffer handling routines. */ |
| /* |
| * (C) 2012-2013 by Katerina Barone-Adesi <kat.obsc@gmail.com> |
| * All Rights Reserved |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| */ |
| |
| #pragma once |
| |
| /*! \defgroup osmo_strrb Osmocom ringbuffers for log strings |
| * @{ |
| * \file strrb.h */ |
| |
| #include <unistd.h> |
| #include <stdbool.h> |
| #include <stdint.h> |
| |
| #include <osmocom/core/talloc.h> |
| |
| /*! A structure representing an osmocom string ringbuffer */ |
| |
| #define RB_MAX_MESSAGE_SIZE 240 |
| struct osmo_strrb { |
| uint16_t start; /*!< index of the first slot */ |
| uint16_t end; /*!< index of the last slot */ |
| uint16_t size; /*!< max number of messages to store */ |
| char **buffer; /*!< storage for messages */ |
| }; |
| |
| struct osmo_strrb *osmo_strrb_create(TALLOC_CTX * ctx, size_t rb_size); |
| bool osmo_strrb_is_empty(const struct osmo_strrb *rb); |
| const char *osmo_strrb_get_nth(const struct osmo_strrb *rb, |
| unsigned int string_index); |
| bool _osmo_strrb_is_bufindex_valid(const struct osmo_strrb *rb, |
| unsigned int offset); |
| size_t osmo_strrb_elements(const struct osmo_strrb *rb); |
| int osmo_strrb_add(struct osmo_strrb *rb, const char *data); |
| |
| /*! @} */ |