Cleanup the io queue interface by hiding the internal structures of the
send queue, and read queue.
This commit is contained in:
parent
71cdf158e4
commit
be098144db
@ -19,6 +19,23 @@
|
|||||||
|
|
||||||
#include "uhub.h"
|
#include "uhub.h"
|
||||||
|
|
||||||
|
struct ioq_send
|
||||||
|
{
|
||||||
|
size_t size; /** Size of send queue (in bytes, not messages) */
|
||||||
|
size_t offset; /** Queue byte offset in the first message. Should be 0 unless a partial write. */
|
||||||
|
#ifdef SSL_SUPPORT
|
||||||
|
size_t last_send; /** When using SSL, one have to send the exact same buffer and length if a write cannot complete. */
|
||||||
|
#endif
|
||||||
|
struct linked_list* queue; /** List of queued messages (struct adc_message) */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ioq_recv
|
||||||
|
{
|
||||||
|
char* buf;
|
||||||
|
size_t size;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG_SENDQ
|
#ifdef DEBUG_SENDQ
|
||||||
static void debug_msg(const char* prefix, struct adc_message* msg)
|
static void debug_msg(const char* prefix, struct adc_message* msg)
|
||||||
{
|
{
|
||||||
|
@ -21,25 +21,8 @@
|
|||||||
#define HAVE_UHUB_IO_QUEUE_H
|
#define HAVE_UHUB_IO_QUEUE_H
|
||||||
|
|
||||||
struct adc_message;
|
struct adc_message;
|
||||||
struct linked_list;
|
struct ioq_send;
|
||||||
typedef int (*ioq_write)(void* desc, const void* buf, size_t len);
|
struct ioq_recv;
|
||||||
typedef int (*ioq_read)(void* desc, void* buf, size_t len);
|
|
||||||
|
|
||||||
struct ioq_send
|
|
||||||
{
|
|
||||||
size_t size; /** Size of send queue (in bytes, not messages) */
|
|
||||||
size_t offset; /** Queue byte offset in the first message. Should be 0 unless a partial write. */
|
|
||||||
#ifdef SSL_SUPPORT
|
|
||||||
size_t last_send; /** When using SSL, one have to send the exact same buffer and length if a write cannot complete. */
|
|
||||||
#endif
|
|
||||||
struct linked_list* queue; /** List of queued messages (struct adc_message) */
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ioq_recv
|
|
||||||
{
|
|
||||||
char* buf;
|
|
||||||
size_t size;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a send queue
|
* Create a send queue
|
||||||
|
@ -80,13 +80,13 @@ static int check_send_queue(struct hub_info* hub, struct hub_user* user, struct
|
|||||||
if (user_flag_get(user, flag_user_list))
|
if (user_flag_get(user, flag_user_list))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if ((user->send_queue->size + msg->length) > get_max_send_queue(hub))
|
if ((ioq_send_get_bytes(user->send_queue) + msg->length) > get_max_send_queue(hub))
|
||||||
{
|
{
|
||||||
LOG_WARN("send queue overflowed, message discarded.");
|
LOG_WARN("send queue overflowed, message discarded.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user->send_queue->size > get_max_send_queue_soft(hub))
|
if (ioq_send_get_bytes(user->send_queue) > get_max_send_queue_soft(hub))
|
||||||
{
|
{
|
||||||
LOG_WARN("send queue soft overflowed.");
|
LOG_WARN("send queue soft overflowed.");
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user