< Previous by Date Date Index Next by Date >
  Thread Index Next in Thread >

[reSIProcate] Merged in my xten-async branch, some minor API changes


At long last this is merged in, along with some other fixes that I spotted along the way. Here’s the commit log, mangled a bit by outlook.

 

Major changes:

 

Alternative "async/external" Processing Model

 

The SipStack & DUM can now run w/out being in a build/select/process

loop.  This is accomplished witht ransports that provide their own cycles, as well

as an external timer api.  The SipStack is constructed w/ an

AsyncProcessHandler which gets notified when a message is put into the

StateMacFifo, or when SipStack::postMs or SipStack::post is called.  This can be

optimized a bit more; in some cases only a timer adjustment may be required, but

the stack might not require cycles.  DumProcessHandler, located in the Dum

directory, is a example of how to use this.  Note that it provides ares w/ a 50

ms timer when there is an active query.  DnsInterface now has a requiresProcess

method to facilitate this; it should possibly become another

getTimeTillNextProcess method.

 

Transport Refactoring/Cleanup

 

TransportSelector now only understands objects that derive from Transport.  The

SipStack is responsible for the Transport Factory behaviour of addTransport.  A

lot of the Transport has moved into InternalTransport, to keep the Transport

abstraction clean.  Also, the tcp transports have been cleaned up; most of dlb's

rant in ConnectionBase.hxx has been answered.

 

IpVersion vs Bool IpV4

 

bool is no longer used to represnt IpVersion, the enum is used in tuple and

anywhere else I spotted it.

 

The result of this merge/cleanup has been regressed; I still need to re-write

testTransportSelector.cxx.  The async model has not been used yet with the

result of this merge, but it was used extensively in the branch.

 

--Derek