Add MessageQueue class
MessageQueue encapsulates a message queue built on top of a pipe. The message queue needs a handler for receiving messages and must be added to a worker for pumping messages through the pipe. Each Worker will have an instance of MessageQueue.
This commit is contained in:
@ -31,25 +31,24 @@ typedef enum mxs_poll_action
|
||||
MXS_POLL_ERROR = 0x10,
|
||||
} mxs_poll_action_t;
|
||||
|
||||
struct mxs_poll_data;
|
||||
/** Pointer to function that knows how to handle events for a particular
|
||||
* 'struct mxs_poll_data' structure.
|
||||
*
|
||||
* @param data The `mxs_poll_data` instance that contained this pointer.
|
||||
* @param wid The worker thread id.
|
||||
* @param events The epoll events.
|
||||
*
|
||||
* @return A combination of mxs_poll_action_t enumeration values.
|
||||
*/
|
||||
typedef uint32_t (*mxs_poll_handler_t)(struct mxs_poll_data* data, int wid, uint32_t events);
|
||||
|
||||
typedef struct mxs_poll_data
|
||||
{
|
||||
/** Pointer to function that knows how to handle events for this particular
|
||||
* 'struct mxs_poll_data' structure.
|
||||
*
|
||||
* @param data The `mxs_poll_data` instance that contained this pointer.
|
||||
* @param wid The worker thread id.
|
||||
* @param events The epoll events.
|
||||
*
|
||||
* @return A combination of mxs_poll_action_t enumeration values.
|
||||
*/
|
||||
uint32_t (*handler)(struct mxs_poll_data *data, int wid, uint32_t events);
|
||||
|
||||
mxs_poll_handler_t handler; /*< Handler for this particular kind of mxs_poll_data. */
|
||||
struct
|
||||
{
|
||||
/**
|
||||
* The id of the worker thread
|
||||
*/
|
||||
int id;
|
||||
int id; /*< The id of the worker thread. */
|
||||
} thread;
|
||||
} MXS_POLL_DATA;
|
||||
|
||||
|
36
include/maxscale/poll_core.hh
Normal file
36
include/maxscale/poll_core.hh
Normal file
@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
/*
|
||||
* Copyright (c) 2016 MariaDB Corporation Ab
|
||||
*
|
||||
* Use of this software is governed by the Business Source License included
|
||||
* in the LICENSE.TXT file and at www.mariadb.com/bsl.
|
||||
*
|
||||
* Change Date: 2019-07-01
|
||||
*
|
||||
* On the date above, in accordance with the Business Source License, use
|
||||
* of this software will be governed by version 2 or later of the General
|
||||
* Public License.
|
||||
*/
|
||||
|
||||
#include <maxscale/cppdefs.hh>
|
||||
#include <maxscale/poll_core.h>
|
||||
|
||||
namespace maxscale
|
||||
{
|
||||
|
||||
struct MxsPollData : MXS_POLL_DATA
|
||||
{
|
||||
MxsPollData()
|
||||
{
|
||||
handler = NULL;
|
||||
thread.id = 0;
|
||||
}
|
||||
|
||||
MxsPollData(mxs_poll_handler_t h)
|
||||
{
|
||||
handler = h;
|
||||
thread.id = 0;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
Reference in New Issue
Block a user