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 "SolidSyslogNullStream.h"
6 :
7 : #include <stdbool.h>
8 : #include <stddef.h>
9 : #include <stdint.h>
10 :
11 : #include "SolidSyslogStream.h"
12 : #include "SolidSyslogStreamDefinition.h"
13 :
14 : struct SolidSyslogAddress;
15 :
16 : static bool NullStream_Open(struct SolidSyslogStream* base, const struct SolidSyslogAddress* addr);
17 : static bool NullStream_Send(struct SolidSyslogStream* base, const void* buffer, size_t size);
18 : static SolidSyslogSsize NullStream_Read(struct SolidSyslogStream* base, void* buffer, size_t size);
19 : static void NullStream_Close(struct SolidSyslogStream* base);
20 : static uint32_t NullStream_Version(struct SolidSyslogStream* base);
21 :
22 2728 : struct SolidSyslogStream* SolidSyslogNullStream_Get(void)
23 : {
24 : static struct SolidSyslogStream instance = {
25 : .Open = NullStream_Open,
26 : .Send = NullStream_Send,
27 : .Read = NullStream_Read,
28 : .Close = NullStream_Close,
29 : .Version = NullStream_Version,
30 : };
31 2728 : return &instance;
32 : }
33 :
34 3 : static bool NullStream_Open(struct SolidSyslogStream* base, const struct SolidSyslogAddress* addr)
35 : {
36 : (void) base;
37 : (void) addr;
38 3 : return true;
39 : }
40 :
41 : /* Send returns true so the StreamSender treats the message as delivered
42 : * and the Store does not retain undeliverables. Mirrors NullSender_Send
43 : * and NullDatagram_SendTo. */
44 10 : static bool NullStream_Send(struct SolidSyslogStream* base, const void* buffer, size_t size)
45 : {
46 : (void) base;
47 : (void) buffer;
48 : (void) size;
49 10 : return true;
50 : }
51 :
52 : /* Read returns 0 ("would-block, nothing available") rather than < 0 (EOF / error)
53 : * so StreamSender does not flag a broken connection and tear it down. */
54 3 : static SolidSyslogSsize NullStream_Read(struct SolidSyslogStream* base, void* buffer, size_t size)
55 : {
56 : (void) base;
57 : (void) buffer;
58 : (void) size;
59 3 : return 0;
60 : }
61 :
62 3 : static void NullStream_Close(struct SolidSyslogStream* base)
63 : {
64 : (void) base;
65 3 : }
66 :
67 1 : static uint32_t NullStream_Version(struct SolidSyslogStream* base)
68 : {
69 : (void) base;
70 1 : return 0U;
71 : }
|