Ausgehend von den grundlegenden Funktionen eines einfachen Telefons wurde ein
Java interface mit dem Namen EndPoint erstellt, das Methoden vorschreibt,
mittels denen ein Switch ein Endgerät ansteuern kann. Eine Implementierung dieses
Interfaces stellt die Klasse PhoneIN dar. Hierbei handelt es sich um
ein appletcation mit graphischer Oberfläche, das ein Telefon veranschaulichen soll (vgl. Abbildung
). Gegenwärtig werden Instanzen von PhoneIN
direkt von der Switch-Oberfläche aus erstellt und initialisiert. Durch die Kapselung
der Funktionalität und der Ausführung von PhoneIN als Applet ist es
jedoch mit geringem Aufwand (z. B. unter Benutzung einer Verteilungsplattform)
möglich, die Endgeräte direkt im einem Web-Browser zu benutzen.
Wurde ein EndPoint erstellt, versucht er sich
zunächst bei der CallControlFunction zu registrieren. Dies geschieht
durch einen Aufruf an die CallControlFunction-Instanz, zu der seinem Konstruktor eine
Referenz übergeben wurde. Obwohl eine Lösung mittels eines CallControlFunction-Singletons
eleganter gewesen wäre, bietet diese Vorgehensweise den Vorteil, bei Bedarf
mehrere CallControlFunction-Instanzen in der selben JVM
zu benutzen. Für einen verteilten Switch ergibt sich jedoch das Problem, dem
Endgerät die Referenz auf die ihm zugeordnete CallControlFunction-Instanz
zu übergeben. Dies würde unter Umständen ein weiteres Objekt erfordern, das
die Verwaltung der unterschiedlichen Switch-Instanzen übernimmt. Die Registrierung
beim Switch entspricht in der realen Welt der Einrichtung eines Anschlusses
durch den Netzbetreiber.
Während der Registrierung erstellt die CallControlFunction ein neues
Proxy-Objekt (EndPointProxy) für das Endgerät und teilt diesem eine
Rufnummer zu. Weiterhin werden jeweils eine Instanz von O_StateMachine
und T_StateMachine erzeugt, initialisiert und dem EndPointProxy
zugeordnet (vgl. Abbildung ). Nach erfolgter Registrierung
verläuft die Kommunikation zwischen dem Endgerät und dem Switch ausschließlich
über das EndPointProxy-Objekt.
Die Endgeräte- bzw. Teilnehmernummern werden mit Hilfe eines Objekts der Klasse SimpleNumberingPlan erzeugt und verwaltet; dieses ist der CallControlFunction-Instanz zugeordnet. In der gegenwärtigen Implementierung werden zweistellige, aufeinanderfolgende Nummern erzeugt, beginnend mit einer willkürlich eingestellten Nummer. Die Schnittstelle, die SimpleNumberingPlan definiert ist jedoch für die Verwaltung beliebig erzeugter Nummern anwendbar. Gegenwärtig kann zusätzlich zum Erzeugen und Löschen von Nummern die Gültigkeit einer Nummer oder einer Teilnummer überprüft werden. Es werden allerdings nur die Nummern selbst verwaltet, ihre Zuordnung zu Endgeräten wird von CallControlFunction selbst vorgenommen.