1. How can I help ?

   At the moment the development is still full speed, so coding will
   be done mainly by myself. But new samples and tests are welcome.

   The best help at the moment is to test the stuff against as much 
   as possible other SIP implementations as possible and report back 
   failures and successes and of course bugs.


2. How can I integrate it with my own Mainloop (Tk, POE, Event::Lib...)?

   You need to implement the interface of Net::SIP::Dispatcher::Eventloop.
   See the documentation for it.

   An important issue is, that the builtin event loop is level triggered,
   e.g. callbacks on file descriptors gets called as long as there
   are data available. This is the way select(2) or poll(2) work.
   But Event::Lib for instance is edge triggert, e.g. a callback gets
   called only when *new* data ara available.
   So to integrate with an edge triggered event mechanism you have to
   compansate it, like using poll for getting the current level after
   you got a callback on an edge.

   The builtin event loop features ways to end the loop by using
   a timeout or references to scalars. You have to implement this part
   only if you want to use Net::SIP::Simple, the rest of the code does
   not depend on these features.


3. How can I use my own implementation of a leg and why would I want
   to do this?

   The leg is the point where packets come in and packets leave 
   the application, so this is a good place to do debugging, filtering
   (like restricting the methods, the sources or the destinations), 
   rewrites of packets etc.

   To have your own leg you can just subclass Net::SIP::Leg and
   define the appropriate methods (especially deliver and receive).
   To use your leg class with Net::SIP::Simple you have to explicitly
   create your own legs and tell Net::SIP::Simple to use it,
   there is currently no way to tell Net::SIP::Simple to use another
   leg class.
   See t/testlib.pl or bin/stateless_proxy.pl for examples.

