Files
OmniSocket/include/peer_transport.h

60 lines
1.9 KiB
C

#ifndef OMNISOCKET_PEER_TRANSPORT_H
#define OMNISOCKET_PEER_TRANSPORT_H
#include "common.h"
#include "network.h"
#include <stddef.h>
#include <stdint.h>
typedef struct PeerTransport PeerTransport;
typedef struct PeerTransportSession PeerTransportSession;
typedef struct PeerTransportEvent {
int kind;
PeerTransportSession *session;
MsgHeader header;
} PeerTransportEvent;
enum {
PEER_TRANSPORT_EVENT_NONE = 0,
PEER_TRANSPORT_EVENT_MESSAGE = 1,
PEER_TRANSPORT_EVENT_CLOSED = 2
};
PeerTransport *peer_transport_open(OmniRole role,
OmniProtocol proto,
const char *bind_ip,
uint16_t bind_port,
const char *peer_ip,
uint16_t peer_port);
void peer_transport_close(PeerTransport *transport);
PeerTransportSession *peer_transport_default_session(PeerTransport *transport);
int peer_transport_send(PeerTransport *transport,
PeerTransportSession *session,
uint32_t type,
const void *payload,
uint32_t payload_len);
int peer_transport_next_event(PeerTransport *transport,
PeerTransportEvent *event,
uint8_t *payload_buf,
size_t payload_cap,
int timeout_ms);
void peer_transport_close_session(PeerTransport *transport,
PeerTransportSession *session);
const char *peer_transport_session_remote(const PeerTransportSession *session,
char *buf,
size_t buf_sz);
uint16_t peer_transport_session_remote_port(const PeerTransportSession *session);
const char *peer_transport_proto_name(OmniProtocol proto);
#endif