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 "SolidSyslogNullBuffer.h"
6 :
7 : #include <stdbool.h>
8 : #include <stddef.h>
9 :
10 : #include "SolidSyslogBufferDefinition.h"
11 :
12 : static bool NullBuffer_Read(struct SolidSyslogBuffer* base, void* data, size_t maxSize, size_t* bytesRead);
13 : static void NullBuffer_Write(struct SolidSyslogBuffer* base, const void* data, size_t size);
14 : static bool NullBuffer_IsFull(struct SolidSyslogBuffer* base);
15 :
16 1816 : struct SolidSyslogBuffer* SolidSyslogNullBuffer_Get(void)
17 : {
18 : static struct SolidSyslogBuffer instance =
19 : {.Write = NullBuffer_Write, .Read = NullBuffer_Read, .IsFull = NullBuffer_IsFull};
20 1816 : return &instance;
21 : }
22 :
23 : /* Read returns false ("nothing to deliver") so the Service algorithm
24 : * sees an empty Buffer and stops draining. */
25 22 : static bool NullBuffer_Read(struct SolidSyslogBuffer* base, void* data, size_t maxSize, size_t* bytesRead)
26 : {
27 : (void) base;
28 : (void) data;
29 : (void) maxSize;
30 22 : *bytesRead = 0;
31 22 : return false;
32 : }
33 :
34 : /* Write swallows the record - a misconfigured Buffer paired with a
35 : * caller that doesn't gate Log() must not block or crash. */
36 60 : static void NullBuffer_Write(struct SolidSyslogBuffer* base, const void* data, size_t size)
37 : {
38 : (void) base;
39 : (void) data;
40 : (void) size;
41 60 : }
42 :
43 : /* Nothing is ever queued, so nothing is ever outrun. */
44 5 : static bool NullBuffer_IsFull(struct SolidSyslogBuffer* base)
45 : {
46 : (void) base;
47 5 : return false;
48 : }
|