c-libp2p/include/libp2p/net/stream.h

38 lines
918 B
C

#pragma once
/**
* An interface in front of various streams
*/
struct Stream {
/**
* A generic socket descriptor
*/
void* socket_descriptor;
/**
* Reads from the stream
* @param stream the stream
* @param buffer where to put the results
* @param max_buffer_size don't read more than this many bytes
* @param bytes_read how many bytes were read
* @returns true(1) on success, false(0) otherwise
*/
int (*read)(struct Stream* stream, char* buffer, size_t max_buffer_size, size_t* bytes_read);
/**
* Writes to a stream
* @param stream the stream
* @param buffer what to write
* @param how much to write
* @returns true(1) on success, false(0) otherwise
*/
int (*write)(struct Stream* stream, char* buffer, size_t buffer_size);
/**
* Closes a stream
* @param stream the stream
* @returns true(1) on success, otherwise false(0)
*/
int (*close)(struct Stream* stream);
};