SolidSyslog coverage report
Current view: top level - Core/Source - SolidSyslogPassthroughBuffer.c (source / functions) Coverage Total Hit
Test: SolidSyslog Lines: 100.0 % 21 21
Test Date: 2026-11-12 23:14:35 Functions: 100.0 % 6 6

            Line data    Source code
       1              : /* SPDX-FileCopyrightText: Copyright 2026 Cozens Software Solutions Limited
       2              :  * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0 OR LicenseRef-PolyForm-Internal-Use-1.0.0 OR LicenseRef-COSOSO-Commercial
       3              :  */
       4              : 
       5              : #include "SolidSyslogPassthroughBuffer.h"
       6              : 
       7              : #include <stdbool.h>
       8              : #include <stddef.h>
       9              : 
      10              : #include "SolidSyslogBufferDefinition.h"
      11              : #include "SolidSyslogError.h"
      12              : #include "SolidSyslogNullBuffer.h"
      13              : #include "SolidSyslogPassthroughBufferErrors.h"
      14              : #include "SolidSyslogPassthroughBufferPrivate.h"
      15              : #include "SolidSyslogSender.h"
      16              : 
      17              : const struct SolidSyslogErrorSource SolidSyslogPassthroughBufferErrorSource = {
      18              :     "PassthroughBuffer",
      19              :     SolidSyslogPassthroughBufferErrors_Name
      20              : };
      21              : 
      22              : static bool PassthroughBuffer_Read(struct SolidSyslogBuffer* base, void* data, size_t maxSize, size_t* bytesRead);
      23              : static void PassthroughBuffer_Write(struct SolidSyslogBuffer* base, const void* data, size_t size);
      24              : static bool PassthroughBuffer_IsFull(struct SolidSyslogBuffer* base);
      25              : 
      26              : static inline struct SolidSyslogPassthroughBuffer* PassthroughBuffer_SelfFromBase(struct SolidSyslogBuffer* base);
      27              : 
      28          133 : void SolidSyslogPassthroughBuffer_Initialise(struct SolidSyslogBuffer* base, struct SolidSyslogSender* sender)
      29              : {
      30          133 :     struct SolidSyslogPassthroughBuffer* self = PassthroughBuffer_SelfFromBase(base);
      31          133 :     self->Base.Write = PassthroughBuffer_Write;
      32          133 :     self->Base.Read = PassthroughBuffer_Read;
      33          133 :     self->Base.IsFull = PassthroughBuffer_IsFull;
      34          133 :     self->Sender = sender;
      35          133 : }
      36              : 
      37          133 : void SolidSyslogPassthroughBuffer_Cleanup(struct SolidSyslogBuffer* base)
      38              : {
      39              :     /* Overwrite the abstract base with the shared NullBuffer vtable so
      40              :      * use-after-destroy is a safe no-op rather than a NULL-fn-pointer crash. The
      41              :      * Sender pointer is private to this TU; the next SolidSyslogPassthroughBuffer_Initialise overwrites it. */
      42          133 :     *base = *SolidSyslogNullBuffer_Get();
      43          133 : }
      44              : 
      45           40 : static bool PassthroughBuffer_Read(struct SolidSyslogBuffer* base, void* data, size_t maxSize, size_t* bytesRead)
      46              : {
      47              :     (void) base;
      48              :     (void) data;
      49              :     (void) maxSize;
      50           40 :     *bytesRead = 0;
      51           40 :     return false;
      52              : }
      53              : 
      54           69 : static void PassthroughBuffer_Write(struct SolidSyslogBuffer* base, const void* data, size_t size)
      55              : {
      56           69 :     struct SolidSyslogPassthroughBuffer* self = PassthroughBuffer_SelfFromBase(base);
      57           69 :     (void) SolidSyslogSender_Send(self->Sender, data, size);
      58           69 : }
      59              : 
      60              : /* Nothing is queued, so nothing is ever outrun. */
      61           10 : static bool PassthroughBuffer_IsFull(struct SolidSyslogBuffer* base)
      62              : {
      63              :     (void) base;
      64           10 :     return false;
      65              : }
      66              : 
      67          202 : static inline struct SolidSyslogPassthroughBuffer* PassthroughBuffer_SelfFromBase(struct SolidSyslogBuffer* base)
      68              : {
      69          202 :     return (struct SolidSyslogPassthroughBuffer*) base;
      70              : }
        

Generated by: LCOV version 2.0-1