forked from gatzka/scramjet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsocket_peer.h
60 lines (52 loc) · 1.94 KB
/
socket_peer.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* SPDX-License-Identifier: MIT
*
* The MIT License (MIT)
*
* Copyright (c) <2020> <Stephan Gatzka>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
#ifndef SCRAMJET_SOCKET_PEER_H
#define SCRAMJET_SOCKET_PEER_H
#include <stddef.h>
#include "cio/buffered_stream.h"
#include "cio/eventloop.h"
#include "cio/read_buffer.h"
#include "cio/server_socket.h"
#include "cio/socket.h"
#include "cio/socket_address.h"
#include "cio/write_buffer.h"
#include "peer.h"
// TODO(gatzka): make BUFFER_SIZE configurable via cmake.
enum { BUFFER_SIZE = 128 };
struct socket_peer {
struct peer peer;
uint32_t message_length;
struct cio_socket socket;
struct cio_read_buffer rb;
struct cio_write_buffer wb;
uint32_t write_message_length;
struct cio_buffered_stream bs;
uint8_t buffer[BUFFER_SIZE];
};
enum cio_error prepare_socket_peer_connection(struct cio_server_socket *ss, struct cio_socket_address *endpoint, struct cio_eventloop *loop);
#endif