Home

Resources

Products

Developers

Main • ImportantMutexes

Resources -> Documentation -> Important Mutexes

In the code of Yate there are some noteworthy mutexes that have program-wide implications.

RefObject::refMutex() (singleton, public)

This is the most important mutex in Yate, it locks RefObject derived objects while their reference counter is modified. It is acquired and released billions of times in any Yate run. The code executed with this mutex acquired is strictly limited and the actual object destruction (when the reference counter dropped to zero) is performed with this mutex released.

DataEndpoint::commonMutex() (singleton, public)

This mutex protects data endpoint while their source and consumers are connected or disconnected. This makes sure that operations changing the data sources or consumers of data endpoints occur atomically.

CallEndpoint::commonMutex() (singleton, public)

Call endpoint connect and disconnect operations are protected by this mutex.

Please note that during the connect() or disconnect() methods usually there will be one or more calls that will need to acquire the DataEndpoint mutex.

Module (itself, public)

The module (and derived Driver) class is derived from several classes including Mutex. Each module uses itself to perform atomic update operations.

DataSource::mutex() (public)

Each DataSource has a mutex that is acquired while accessing its Consumer list.

DataTranslator (singleton, hidden)

This mutex protects the list of translator factories while it's used or updated.

MessageDispatcher (hidden)

The list holding the installed message handlers is protected against changes by this mutex while it's being iterated. Usually the only instance of dispatcher is the derived Engine singleton object.

3 May 2010:
Yate 3.0.0 alpha 3 released. Featuring the new Jabber server and wideband audio.
Download NOW

8 March 2010:
Yate 2.2 released. Mostly bug fixes. Dahdi compatible. Latest 2 release before 3.0.

6-7 February 2010:
Yate booth at FOSDEM 2010. Free CD with Freesentral available.

2 Nov 2009:
Yate 2.1 launched. Can replace a Cisco PGW2200 to control a Cisco AS54xx.

6 Aug 2008:
Yate and OpenSIPS (former OpenSER) join to build IP based clusters.

4 Aug 2008:
Yate 2 launched.

10 Jul 2008:
Yate presentation in Germany.

Feb 2008:
Yate 2.0.0 alpha 2 released. New routing module allows sending ENUM routed or forked calls to numbers of registered phones. More...

21 Jan 2008:
Yate 2 alpha released. Major changes, new ISDN, SS7 and MGCP stack. Added analogic and RBS support.

3 September:
Yate 1.3 released. Minor fixes and improvments mainly in client and SIP.

14 August:
Yate based ISDN passive recording system released by Trisys.

16 April:
Yate 1.2 released. Added Jingle and XML support, PBX improved.

25 September:
YateAdmin 1 released.

25 September:
Yate 1.1 released. Fallback routing from a database, fax support in Linux and bug fixes. Changelog and Download availables.

11 July 2006:
O'Reilly published an article about prototyping telephony applications with Yate and Python.

10 July 2006:
Yate 1 released. Includes YIAX, YSIP, YRTP and many new features.

June 1st 2006:
New Yate website launched


EditHistoryBacklinksRecent ChangesSearch