summaryrefslogtreecommitdiff
path: root/pjlib/src/pj++/proactor.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib/src/pj++/proactor.hpp')
-rw-r--r--pjlib/src/pj++/proactor.hpp88
1 files changed, 0 insertions, 88 deletions
diff --git a/pjlib/src/pj++/proactor.hpp b/pjlib/src/pj++/proactor.hpp
deleted file mode 100644
index cae9cf43..00000000
--- a/pjlib/src/pj++/proactor.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/* $Id$
- *
- */
-#ifndef __PJPP_EVENT_HANDLER_H__
-#define __PJPP_EVENT_HANDLER_H__
-
-#include <pj/ioqueue.h>
-#include <pj++/pool.hpp>
-#include <pj++/sock.hpp>
-#include <pj++/timer.hpp>
-
-class PJ_Proactor;
-
-
-class PJ_Event_Handler
-{
- friend class PJ_Proactor;
-public:
- PJ_Event_Handler();
- virtual ~PJ_Event_Handler();
-
- virtual pj_oshandle_t get_handle() = 0;
-
- bool read(void *buf, pj_size_t len);
- bool recvfrom(void *buf, pj_size_t len, PJ_INET_Addr *addr);
- bool write(const void *data, pj_size_t len);
- bool sendto(const void *data, pj_size_t len, const PJ_INET_Addr &addr);
-#if PJ_HAS_TCP
- bool connect(const PJ_INET_Addr &addr);
- bool accept(PJ_Socket *sock, PJ_INET_Addr *local=NULL, PJ_INET_Addr *remote=NULL);
-#endif
-
-protected:
- //
- // Overridables
- //
- virtual void on_timeout(int data) {}
- virtual void on_read_complete(pj_ssize_t bytes_read) {}
- virtual void on_write_complete(pj_ssize_t bytes_sent) {}
-#if PJ_HAS_TCP
- virtual void on_connect_complete(int status) {}
- virtual void on_accept_complete(int status) {}
-#endif
-
-private:
- PJ_Proactor *proactor_;
- pj_ioqueue_key_t *key_;
- pj_timer_entry timer_;
- int tmp_recvfrom_addr_len;
-
-public:
- // Internal IO Queue/timer callback.
- static void timer_callback( pj_timer_heap_t *timer_heap, struct pj_timer_entry *entry);
- static void read_complete_cb(pj_ioqueue_key_t *key, pj_ssize_t bytes_read);
- static void write_complete_cb(pj_ioqueue_key_t *key, pj_ssize_t bytes_sent);
- static void accept_complete_cb(pj_ioqueue_key_t *key, int status);
- static void connect_complete_cb(pj_ioqueue_key_t *key, int status);
-};
-
-class PJ_Proactor
-{
-public:
- static PJ_Proactor *create(PJ_Pool *pool, pj_size_t max_fd,
- pj_size_t timer_entry_count, unsigned timer_flags=0);
-
- void destroy();
-
- bool register_handler(PJ_Pool *pool, PJ_Event_Handler *handler);
- void unregister_handler(PJ_Event_Handler *handler);
-
- static bool schedule_timer( pj_timer_heap_t *timer, PJ_Event_Handler *handler,
- const PJ_Time_Val &delay, int id=-1);
- bool schedule_timer(PJ_Event_Handler *handler, const PJ_Time_Val &delay, int id=-1);
- bool cancel_timer(PJ_Event_Handler *handler);
-
- bool handle_events(PJ_Time_Val *timeout);
-
- pj_ioqueue_t *get_io_queue();
- pj_timer_heap_t *get_timer_heap();
-
-private:
- pj_ioqueue_t *ioq_;
- pj_timer_heap_t *th_;
-
- PJ_Proactor() {}
-};
-
-#endif /* __PJPP_EVENT_HANDLER_H__ */