aboutsummaryrefslogtreecommitdiffstats
path: root/libparc/parc/algol/parc_EventQueue.h
diff options
context:
space:
mode:
Diffstat (limited to 'libparc/parc/algol/parc_EventQueue.h')
-rw-r--r--libparc/parc/algol/parc_EventQueue.h515
1 files changed, 0 insertions, 515 deletions
diff --git a/libparc/parc/algol/parc_EventQueue.h b/libparc/parc/algol/parc_EventQueue.h
deleted file mode 100644
index 282df302..00000000
--- a/libparc/parc/algol/parc_EventQueue.h
+++ /dev/null
@@ -1,515 +0,0 @@
-/*
- * Copyright (c) 2017 Cisco and/or its affiliates.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * @file parc_EventQueue.h
- * @ingroup events
- * @brief Queue buffer events
- *
- * Provides a facade implementing many regularly available event functions.
- * This is an interface that software implementors may use to substitute
- * different kinds of underlying implementations of these event management functions.
- * Notable examples are libevent and libev.
- *
- */
-#ifndef libparc_parc_EventQueue_h
-#define libparc_parc_EventQueue_h
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <parc/algol/parc_Event.h>
-
-/**
- * Current implementation based on top of libevent2
- */
-
-/**
- * @typedef PARCEventQueue
- * @brief A structure containing private libevent state data variables
- */
-typedef struct PARCEventQueue PARCEventQueue;
-
-/**
- * @typedef PARCEventQueuePair
- * @brief A structure containing private libevent state data for connected queue pairs
- */
-typedef struct PARCEventQueuePair PARCEventQueuePair;
-
-/**
- * @typedef PARCEventQueueEventType
- * @brief An enumeration of queue event types
- */
-typedef enum {
- PARCEventQueueEventType_Reading = 0x01,
- PARCEventQueueEventType_Writing = 0x02,
- PARCEventQueueEventType_EOF = 0x10,
- PARCEventQueueEventType_Error = 0x20,
- PARCEventQueueEventType_Timeout = 0x40,
- PARCEventQueueEventType_Connected = 0x80
-} PARCEventQueueEventType;
-
-/**
- * @typedef PARCEventQueue_Options
- * @brief A structure queue flags
- */
-typedef enum {
- PARCEventQueueOption_CloseOnFree = 0x01,
- PARCEventQueueOption_DeferCallbacks = 0x04
-} PARCEventQueueOption;
-
-/**
- * @typedef PARCEventQueue_Callback
- * @brief A definition for callback function arguments
- */
-typedef void (PARCEventQueue_Callback)(PARCEventQueue *event, PARCEventType type, void *user_data);
-
-/**
- * @typedef PARCEventQueue_EventCallback
- * @brief A definition for callback function arguments
- */
-typedef void (PARCEventQueue_EventCallback)(PARCEventQueue *event, PARCEventQueueEventType type, void *user_data);
-
-/**
- * Create a buffer event handler instance.
- *
- * The event instance is passed in. Options can be either, both or none of the following.
- *
- * PARCEventQueue_CloseOnFree
- * The underlying file descriptor is closed when this event is freed.
- *
- * PARCEventQueue_DeferCallbacks
- * Callbacks are run deferred in the scheduler.
- *
- * @param [in] eventScheduler - The scheduler instance base.
- * @param [in] fd the file descriptor to monitor
- * @param [in] options as described in flags above
- * @returns A pointer to the a PARCEventQueue instance.
- *
- * Example:
- * @code
- * {
- * PARCEventQueue *event = parcEventQueue_Create(eventScheduler, fd, PARCEventQueue_CloseOnFree);
- * }
- * @endcode
- *
- */
-PARCEventQueue *parcEventQueue_Create(PARCEventScheduler *eventScheduler, int fd, PARCEventQueueOption options);
-
-/**
- * Destroy a buffer event handler instance.
- *
- * The event instance is passed in.
- *
- * @param [in] eventQueue - The address of the instance to destroy.
- *
- * Example:
- * @code
- * {
- * parcEventQueue_Destroy(&eventQueue);
- * }
- * @endcode
- *
- */
-void parcEventQueue_Destroy(PARCEventQueue **eventQueue);
-
-/**
- * Enable events on an instance.
- *
- * The event instance is passed in.
- *
- * @param [in] event - queue instance to enable.
- * @param [in] types - the event(s) to enable.
- *
- * Example:
- * @code
- * {
- * parcEventQueue_Enable(bufferEvent, PARCEvent_ReadEvent);
- * }
- * @endcode
- *
- */
-void parcEventQueue_Enable(PARCEventQueue *event, PARCEventType types);
-
-/**
- * Get enable events on an instance.
- *
- * The event instance is passed in.
- *
- * @param [in] queue - the instance to return enabled events from
- * @returns mask of events which are enabled.
- *
- * Example:
- * @code
- * {
- * PARCEventType *events = parcEventQueue_GetEnable(queue);
- * }
- * @endcode
- *
- */
-PARCEventType parcEventQueue_GetEnabled(PARCEventQueue *queue);
-
-/**
- * Disable events on an instance.
- *
- * The event instance is passed in.
- *
- * @param [in] queue - instance to disable event on.
- * @param [in] types - the events to disable.
- *
- * Example:
- * @code
- * {
- * parcEventQueue_Disable(queue, types);
- * }
- * @endcode
- *
- */
-void parcEventQueue_Disable(PARCEventQueue *queue, PARCEventType types);
-
-/**
- * Set callbacks on a buffer event instance.
- *
- * The event instance is passed in.
- * You can disable a callback by passing NULL instead of the callback function.
- * NB: all the callback functions on a bufferevent share a single user_data
- * value, so changing user_data will affect all of them.
- *
- * @param [in] eventInstance - event instance
- * @param [in] readCallback - callback for read events
- * @param [in] writeCallback - callback for write events
- * @param [in] eventCallback - callback for non-read/write events
- * @param [in] user_data - data passed along in callback arguments
- *
- * Example:
- * @code
- * void Callback(PARCEventType type, void *user_data)
- * {
- * printf("Received event of type=%d\n", type);
- * }
- * ...
- * {
- * ...
- * parcEventQueue_SetCallbacks(eventInstance, Callback, NULL, NULL, user_data);
- * parcEventQueue_Enable(eventInstance, PARCEventType_Read);
- * }
- * @endcode
- *
- */
-void parcEventQueue_SetCallbacks(PARCEventQueue *eventInstance,
- PARCEventQueue_Callback *readCallback,
- PARCEventQueue_Callback *writeCallback,
- PARCEventQueue_EventCallback *eventCallback,
- void *user_data);
-
-/**
- * Flush events on a queue
- *
- * @param [in] queue instance to flush
- * @param [in] types the type(s) of events to flush
- * @returns 0 on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * int result = parcEventQueue_Flush(queue, PARCEventType_Write);
- * }
- * @endcode
- *
- */
-int parcEventQueue_Flush(PARCEventQueue *queue, PARCEventType types);
-
-/**
- * Finialized flush of events on a queue
- *
- * @param [in] queue instance to flush
- * @param [in] types the type(s) of events to flush
- * @returns 0 if no data was flushed, 1 if some data was flushed, -1 on failure
- *
- * Example:
- * @code
- * {
- * int result = parcEventQueue_Finished(queue, PARCEventType_Write);
- * }
- * @endcode
- *
- */
-int parcEventQueue_Finished(PARCEventQueue *queue, PARCEventType types);
-
-/**
- * Set watermark boundries on a queue
- *
- * @param [in] queue - queue instance to set watermark on
- * @param [in] types - the events to set watermark on
- * @param [in] low - the low watermark value
- * @param [in] high - the high watermark value
- *
- * Example:
- * @code
- * {
- * parcEventQueue_SetWatermark(queue, PARCEventType_Read, 0, MAXPATHLEN);
- * }
- * @endcode
- *
- */
-void parcEventQueue_SetWatermark(PARCEventQueue *queue, PARCEventType types, size_t low, size_t high);
-
-/**
- * Add formatted text to the end of a queue
- *
- * @param [in] queue - queue instance to write to
- * @param [in] fmt - printf arguments
- *
- * Example:
- * @code
- * {
- * parcEventQueue_Printf(queue, "%s\n", "Hello world.");
- * }
- * @endcode
- *
- */
-int parcEventQueue_Printf(PARCEventQueue *queue, const char *fmt, ...);
-
-/**
- * Set the associated file descriptor on a queue
- *
- * @param [in] queue instance set to monitor this descriptor
- * @param [in] fd file descriptor
- * @returns 0 on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * int result = parcEventQueue_SetFileDescriptor(queue, STDIN_FILENO);
- * }
- * @endcode
- *
- */
-int parcEventQueue_SetFileDescriptor(PARCEventQueue *queue, int fd);
-
-/**
- * Get the associated file descriptor on a queue
- *
- * @param [in] queue instance set to monitor this descriptor
- * @returns file descriptor on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * int fileDescriptor = parcEventQueue_GetFileDescriptor(queue);
- * }
- * @endcode
- *
- */
-int parcEventQueue_GetFileDescriptor(PARCEventQueue *queue);
-
-/**
- * Read data from the queue output
- *
- * @param [in] queue instance to read from
- * @param [in] data to read into
- * @param [in] dataLength length of data to read
- * @returns 0 on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * int result = parcEventQueue_Read(queue, data, length);
- * }
- * @endcode
- *
- */
-int parcEventQueue_Read(PARCEventQueue *queue, void *data, size_t dataLength);
-
-/**
- * Add data to the queue output
- *
- * @param [in] queue instance to add to
- * @param [in] data to write
- * @param [in] dataLength length of data to write
- * @returns 0 on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * int result = parcEventQueue_Write(queue, data, length);
- * }
- * @endcode
- *
- */
-int parcEventQueue_Write(PARCEventQueue *queue, void *data, size_t dataLength);
-
-/**
- * Attach an launch a socket on a queue
- *
- * @param [in] queue instance to attach socket to
- * @param [in] address socket data
- * @param [in] addressLength socket data length
- * @returns 0 on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * struct sockaddr_un addr_unix;
- * memset(&addr_unix, 0, sizeof(addr_unix));
- * addr_unix.sun_family = AF_UNIX;
- * strcpy(addr_unix.sun_path, sock_name);
- * int result = parcEventQueue_ConnectSocket(queue, addr_unix, sizeof(addr_unix));
- * }
- * @endcode
- *
- */
-int parcEventQueue_ConnectSocket(PARCEventQueue *queue, struct sockaddr *address, int addressLength);
-
-/**
- * Set queue priority
- *
- * @param [in] queue instance to modify
- * @param [in] priority queue priority
- * @returns 0 on success, -1 on failure
- *
- * Example:
- * @code
- * {
- * parcEvent_Enable(queue, PARCEventQueuePriority_Normal);
- * }
- * @endcode
- *
- */
-int parcEventQueue_SetPriority(PARCEventQueue *queue, PARCEventPriority priority);
-
-/**
- * Create a pair of connected queues
- *
- * @param [in] eventScheduler event scheduler instance
- * @returns a queue pair instance
- *
- * Example:
- * @code
- * {
- * PARCEventQueuePair *pair = parcEventQueue_CreateConnectedPair(eventScheduler);
- * }
- * @endcode
- *
- */
-PARCEventQueuePair *parcEventQueue_CreateConnectedPair(PARCEventScheduler *eventScheduler);
-
-/**
- * Destroy a connected queue pair
- *
- * @param [in] queuePair queue pair instance address to destroy
- *
- * Example:
- * @code
- * {
- * parcEventQueuePairCreateparcEventQueue_DestroyConnectedPair(&queuePair);
- * }
- * @endcode
- *
- */
-void parcEventQueue_DestroyConnectedPair(PARCEventQueuePair **queuePair);
-
-/**
- * Return the downward queue of a pair
- *
- * @param [in] queuePair queue pair instance address to destroy
- *
- * Example:
- * @code
- * {
- * PARCEventQueue *downQueue = parcEventQueue_GetConnectedDownQueue(queuePair);
- * }
- * @endcode
- *
- */
-PARCEventQueue *parcEventQueue_GetConnectedDownQueue(PARCEventQueuePair *queuePair);
-
-/**
- * Return the upward queue of a pair
- *
- * @param [in] queuePair queue pair instance address to destroy
- *
- * Example:
- * @code
- * {
- * PARCEventQueue *upQueue = parcEventQueue_GetConnectedUpQueue(queuePair);
- * }
- * @endcode
- *
- */
-PARCEventQueue *parcEventQueue_GetConnectedUpQueue(PARCEventQueuePair *queuePair);
-
-/**
- * Private Internal Function - return internal input buffer of a queue
- *
- * The event instance is passed in.
- *
- * @param [in] queue the event queue
- * @returns private evbuffer pointer
- *
- * Example:
- * @code
- * {
- * struct evbuffer *evbuffer = internal_parcEventQueue_GetEvInputBuffer(queue);
- * }
- * @endcode
- *
- */
-struct evbuffer *internal_parcEventQueue_GetEvInputBuffer(PARCEventQueue *queue);
-
-/**
- * Private Internal Function - return internal output buffer of a queue
- *
- * The event instance is passed in.
- *
- * @param [in] queue the event queue
- * @returns private evbuffer pointer
- *
- * Example:
- * @code
- * {
- * struct evbuffer *evbuffer = internal_parcEventQueue_GetEvOutputBuffer(queue);
- * }
- * @endcode
- *
- */
-struct evbuffer *internal_parcEventQueue_GetEvOutputBuffer(PARCEventQueue *queue);
-
-/**
- * Turn on debugging flags and messages
- *
- * Example:
- * @code
- * {
- * parcEventQueue_EnableDebug();
- * }
- * @endcode
- *
- */
-void parcEventQueue_EnableDebug(void);
-
-/**
- * Turn off debugging flags and messages
- *
- * Example:
- * @code
- * {
- * parcEventQueue_DisableDebug();
- * }
- * @endcode
- *
- */
-void parcEventQueue_DisableDebug(void);
-#endif // libparc_parc_EventQueue_h