summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/event.h
diff options
context:
space:
mode:
Diffstat (limited to 'libglusterfs/src/event.h')
-rw-r--r--libglusterfs/src/event.h16
1 files changed, 15 insertions, 1 deletions
diff --git a/libglusterfs/src/event.h b/libglusterfs/src/event.h
index b01ef24bb8e..58664f0c97e 100644
--- a/libglusterfs/src/event.h
+++ b/libglusterfs/src/event.h
@@ -26,6 +26,8 @@ struct event_data {
typedef int (*event_handler_t) (int fd, int idx, void *data,
int poll_in, int poll_out, int poll_err);
+typedef int (*timeout_event_handler_t) (int fd, void *data, time_t idle_time, struct event_pool *event_pool);
+
#define EVENT_EPOLL_TABLES 1024
#define EVENT_EPOLL_SLOTS 1024
#define EVENT_MAX_THREADS 32
@@ -57,6 +59,11 @@ struct event_pool {
* and live status */
int destroy;
int activethreadcount;
+
+ time_t max_idle_seconds;
+ time_t last_idle_check;
+ int close_idle_conns;
+ unsigned int idle_conn_check_interval;
};
struct event_ops {
@@ -64,6 +71,7 @@ struct event_ops {
int (*event_register) (struct event_pool *event_pool, int fd,
event_handler_t handler,
+ timeout_event_handler_t timeout_handler,
void *data, int poll_in, int poll_out);
int (*event_select_on) (struct event_pool *event_pool, int fd, int idx,
@@ -78,6 +86,10 @@ struct event_ops {
int (*event_reconfigure_threads) (struct event_pool *event_pool,
int newcount);
+
+ int (*event_configure_idle_conns) (struct event_pool *event_pool, time_t max_idle_seconds,
+ int close_idle_conns, unsigned int idle_conn_check_interval);
+
int (*event_pool_destroy) (struct event_pool *event_pool);
};
@@ -85,12 +97,14 @@ struct event_pool *event_pool_new (int count, int eventthreadcount);
int event_select_on (struct event_pool *event_pool, int fd, int idx,
int poll_in, int poll_out);
int event_register (struct event_pool *event_pool, int fd,
- event_handler_t handler,
+ event_handler_t handler, timeout_event_handler_t timeout_handler,
void *data, int poll_in, int poll_out);
int event_unregister (struct event_pool *event_pool, int fd, int idx);
int event_unregister_close (struct event_pool *event_pool, int fd, int idx);
int event_dispatch (struct event_pool *event_pool);
int event_reconfigure_threads (struct event_pool *event_pool, int value);
+int event_configure_idle_conns (struct event_pool *event_pool, time_t max_idle_seconds,
+ int close_idle_conns, unsigned int idle_conn_check_interval);
int event_pool_destroy (struct event_pool *event_pool);
int event_dispatch_destroy (struct event_pool *event_pool);
#endif /* _EVENT_H_ */