SocketBuffer.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright (c) 2009, 2020 IBM Corp.
3  *
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v2.0
6  * and Eclipse Distribution License v1.0 which accompany this distribution.
7  *
8  * The Eclipse Public License is available at
9  * https://www.eclipse.org/legal/epl-2.0/
10  * and the Eclipse Distribution License is available at
11  * http://www.eclipse.org/org/documents/edl-v10.php.
12  *
13  * Contributors:
14  * Ian Craggs - initial API and implementation and/or initial documentation
15  * Ian Craggs, Allan Stockdill-Mander - SSL updates
16  *******************************************************************************/
17 
18 #if !defined(SOCKETBUFFER_H)
19 #define SOCKETBUFFER_H
20 
21 #if defined(_WIN32) || defined(_WIN64)
22 #include <winsock2.h>
23 #else
24 #include <sys/socket.h>
25 #endif
26 
27 #if defined(OPENSSL)
28 #include <openssl/ssl.h>
29 #endif
30 
31 #if defined(_WIN32) || defined(_WIN64)
32  typedef WSABUF iobuf;
33 #else
34  typedef struct iovec iobuf;
35 #endif
36 
37 typedef struct
38 {
39  int socket;
40  unsigned int index;
41  size_t headerlen;
42  char fixed_header[5];
43  size_t buflen,
44  datalen;
45  char* buf;
46 } socket_queue;
47 
48 typedef struct
49 {
50  int socket, count;
51  size_t total;
52 #if defined(OPENSSL)
53  SSL* ssl;
54 #endif
55  size_t bytes;
56  iobuf iovecs[5];
57  int frees[5];
59 
60 #define SOCKETBUFFER_COMPLETE 0
61 #if !defined(SOCKET_ERROR)
62  #define SOCKET_ERROR -1
63 #endif
64 #define SOCKETBUFFER_INTERRUPTED -22 /* must be the same value as TCPSOCKET_INTERRUPTED */
65 
66 int SocketBuffer_initialize(void);
67 void SocketBuffer_terminate(void);
69 char* SocketBuffer_getQueuedData(int socket, size_t bytes, size_t* actual_len);
70 int SocketBuffer_getQueuedChar(int socket, char* c);
71 void SocketBuffer_interrupted(int socket, size_t actual_len);
72 char* SocketBuffer_complete(int socket);
73 void SocketBuffer_queueChar(int socket, char c);
74 
75 #if defined(OPENSSL)
76 int SocketBuffer_pendingWrite(int socket, SSL* ssl, int count, iobuf* iovecs, int* frees, size_t total, size_t bytes);
77 #else
78 int SocketBuffer_pendingWrite(int socket, int count, iobuf* iovecs, int* frees, size_t total, size_t bytes);
79 #endif
82 pending_writes* SocketBuffer_updateWrite(int socket, char* topic, char* payload);
83 
84 #endif
string topic
Definition: test2.py:8
char * SocketBuffer_complete(int socket)
Definition: SocketBuffer.c:281
void SocketBuffer_interrupted(int socket, size_t actual_len)
Definition: SocketBuffer.c:252
int SocketBuffer_getQueuedChar(int socket, char *c)
Definition: SocketBuffer.c:219
pending_writes * SocketBuffer_getWrite(int socket)
Definition: SocketBuffer.c:399
constexpr size_t count()
Definition: core.h:960
char * SocketBuffer_getQueuedData(int socket, size_t bytes, size_t *actual_len)
Definition: SocketBuffer.c:176
int SocketBuffer_pendingWrite(int socket, int count, iobuf *iovecs, int *frees, size_t total, size_t bytes)
Definition: SocketBuffer.c:349
void SocketBuffer_cleanup(int socket)
Definition: SocketBuffer.c:151
pending_writes * SocketBuffer_updateWrite(int socket, char *topic, char *payload)
Definition: SocketBuffer.c:424
void SocketBuffer_queueChar(int socket, char c)
Definition: SocketBuffer.c:303
unsigned int index
Definition: SocketBuffer.h:40
size_t datalen
Definition: SocketBuffer.h:43
MQTTClient c
Definition: test10.c:1656
size_t headerlen
Definition: SocketBuffer.h:41
struct iovec iobuf
Definition: SocketBuffer.h:34
int SocketBuffer_initialize(void)
Definition: SocketBuffer.c:102
void SocketBuffer_terminate(void)
Definition: SocketBuffer.c:133
Definition: format.h:3618
int SocketBuffer_writeComplete(int socket)
Definition: SocketBuffer.c:411


plotjuggler
Author(s): Davide Faconti
autogenerated on Sun Dec 6 2020 03:48:11