Test pj++ proactor (compile only)

git-svn-id: https://svn.pjsip.org/repos/pjproject/main@37 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
Benny Prijono 2005-11-09 15:51:49 +00:00
parent 85d3f45399
commit 12e13b7bb6
3 changed files with 55 additions and 13 deletions

View File

@ -15,8 +15,19 @@ class Pj_Object
{ {
public: public:
void *operator new(unsigned int class_size, Pj_Pool *pool); void *operator new(unsigned int class_size, Pj_Pool *pool);
void operator delete(void*); void *operator new(unsigned int class_size, Pj_Pool &pool);
void operator delete(void*, Pj_Pool*);
void operator delete(void*)
{
}
void operator delete(void*, Pj_Pool*)
{
}
void operator delete(void*, Pj_Pool&)
{
}
// //
// Inline implementations at the end of this file. // Inline implementations at the end of this file.
@ -220,11 +231,9 @@ inline void *Pj_Object::operator new(unsigned int class_size, Pj_Pool *pool)
{ {
return pool->alloc(class_size); return pool->alloc(class_size);
} }
inline void Pj_Object::operator delete(void *ptr) inline void *Pj_Object::operator new(unsigned int class_size, Pj_Pool &pool)
{
}
inline void Pj_Object::operator delete(void *ptr, Pj_Pool*)
{ {
return pool.alloc(class_size);
} }
// //

View File

@ -22,6 +22,15 @@ class Pj_Event_Handler;
class Pj_Async_Op : public pj_ioqueue_op_key_t class Pj_Async_Op : public pj_ioqueue_op_key_t
{ {
public: public:
//
// Construct with null handler.
// App must call set_handler() before use.
//
Pj_Async_Op()
: handler_(NULL)
{
}
// //
// Constructor. // Constructor.
// //
@ -31,6 +40,14 @@ public:
pj_memset(this, 0, sizeof(pj_ioqueue_op_key_t)); pj_memset(this, 0, sizeof(pj_ioqueue_op_key_t));
} }
//
// Set handler.
//
void set_handler(Pj_Event_Handler *handler)
{
handler_ = handler;
}
// //
// Check whether operation is still pending for this key. // Check whether operation is still pending for this key.
// //
@ -97,7 +114,7 @@ public:
} }
// //
// Receive data. // Start async receive.
// //
pj_status_t recv( Pj_Async_Op *op_key, pj_status_t recv( Pj_Async_Op *op_key,
void *buf, pj_ssize_t *len, void *buf, pj_ssize_t *len,
@ -108,7 +125,7 @@ public:
} }
// //
// Recvfrom() // Start async recvfrom()
// //
pj_status_t recvfrom( Pj_Async_Op *op_key, pj_status_t recvfrom( Pj_Async_Op *op_key,
void *buf, pj_ssize_t *len, unsigned flags, void *buf, pj_ssize_t *len, unsigned flags,
@ -120,7 +137,7 @@ public:
} }
// //
// send() // Start async send()
// //
pj_status_t send( Pj_Async_Op *op_key, pj_status_t send( Pj_Async_Op *op_key,
const void *data, pj_ssize_t *len, const void *data, pj_ssize_t *len,
@ -130,7 +147,7 @@ public:
} }
// //
// sendto() // Start async sendto()
// //
pj_status_t sendto( Pj_Async_Op *op_key, pj_status_t sendto( Pj_Async_Op *op_key,
const void *data, pj_ssize_t *len, unsigned flags, const void *data, pj_ssize_t *len, unsigned flags,
@ -142,7 +159,7 @@ public:
#if PJ_HAS_TCP #if PJ_HAS_TCP
// //
// connect() // Start async connect()
// //
pj_status_t connect(const Pj_Inet_Addr &addr) pj_status_t connect(const Pj_Inet_Addr &addr)
{ {
@ -150,7 +167,7 @@ public:
} }
// //
// accept. // Start async accept().
// //
pj_status_t accept( Pj_Async_Op *op_key, pj_status_t accept( Pj_Async_Op *op_key,
Pj_Socket *sock, Pj_Socket *sock,
@ -272,6 +289,8 @@ public:
cb_.on_write_complete = &write_complete_cb; cb_.on_write_complete = &write_complete_cb;
cb_.on_accept_complete = &accept_complete_cb; cb_.on_accept_complete = &accept_complete_cb;
cb_.on_connect_complete = &connect_complete_cb; cb_.on_connect_complete = &connect_complete_cb;
create(pool, max_fd, max_timer_entries);
} }
// //
@ -304,7 +323,7 @@ public:
return NULL; return NULL;
} }
status; return status;
} }
// //

View File

@ -9,6 +9,14 @@
#include <pj++/timer.hpp> #include <pj++/timer.hpp>
#include <pj++/tree.hpp> #include <pj++/tree.hpp>
class My_Async_Op : public Pj_Async_Op
{
};
class My_Event_Handler : public Pj_Event_Handler
{
};
int main() int main()
{ {
Pjlib lib; Pjlib lib;
@ -24,6 +32,12 @@ int main()
plsem = new(pool) Pj_Semaphore_Lock(pool); plsem = new(pool) Pj_Semaphore_Lock(pool);
delete plsem; delete plsem;
Pj_Proactor proactor(pool, 100, 100);
My_Event_Handler *event_handler = new(the_pool) My_Event_Handler;
proactor.register_socket_handler(pool, event_handler);
proactor.unregister_handler(event_handler);
return 0; return 0;
} }