Szenario: Startprozeß
- Aufruf der Methode
vsis.im.Main#main(String[])
- Setzen eines JXTA Users in den System Properties (es erfolgt keine Abfrage des JXTA Users)
- Laden der Textdatei
conf/ServiceList - sie enthält die Liste der zu startenden Services.
- Alle Services werden als
vsis.im.ServiceProvider instanziiert und der vsis.im.StartupSequence übergeben.
- Anschließend werden die ServiceProvider initialisiert (
vsis.im.ServiceProvider#init()) und im vsis.im.ServiceProviderManager angemeldet.
- und in einer weiteren Schleife werden alle
ServiceProvider gestartet (vsis.im.ServiceProvider#start())
- Hier die
ServiceProvider in der richtigen Startreihenfolge:
vsis.im.communication.JxtaConnection
Ist der Wrapper für die Kommunikation über das JXTA Netzwerk.
init():
start():
- ruft
goOnline() auf
- die Erzeugung einer
net.jxta.peergroup.PeerGroup fügt das Programm/Peer in das JXTA Netzwerk ein. Beim ersten Start wird ein JXTA Fenster für die Konfiguration des Peers geöffnet.
- der Aufruf von
createGroup() erzeugt ein neues GroupAdvertisement und fügt diesen Peer in die dadurch erzeugte Gruppe (unsere spezielle Gruppe für die gesamte Kommunikation über das JXTA Netzwerk)
- desweiteren werden noch die Pipe- und der DiscoveryService für die Pipes und Suche intern gespeichert.
stop():
- ruft
goOffline() auf
- ein echter Disconnect mit dem JXTA Netzwerk ist nicht möglich, es werden nur die Objekte gelöscht.
vsis.im.storage.ModelPersistenceController
Dient als Kontrollmechanismus, um Daten persistent zu machen. (Übernimmt die Implementation von vsis.im.storage.PersistenceController)
init():
- erzeugt im Homeverzeichnis des Benutzers ein Verzeichnis namens "
.jxtaim" in dem alle persistenten Daten abgelegt werden sollen.
start():
- legt eine Liste für die zu speichernden Daten an.
stop():
- nimmt die Liste der Datenobjekte und serialisiert sie in das "
.jxtaim" Verzeichnis.
vsis.im.communication.ReceiveService
Empfängt Message aus dem JXTA Netzwerk und reicht sie an interessierte vsis.im.communication.MessageListener weiter
init():
start():
- benötigt den
CryptoController
- ruft die
run() Methode auf, die diese Instanz als Empfänger für Messages aus dem JXTA Netzwerk registriert.
- erzeugt
InputPipe
stop():
vsis.im.communication.SendService
Nimmt eine vsis.im.model.message.Message, erzeugt einen XML Stream daraus und verschickt ihn über das JXTA Netzwerk.
init():
start():
stop():
vsis.im.status.StatusController
Empfängt StatusMessages anderer Peers und übermittelt mit Hilfe des vsis.im.status.StatusUpdater den eigenen Online Zustand.
init():
start():
stop():
vsis.im.search.SearchController
Dieser Service ermöglicht der GUI eine Peer Suche im Jxta Netzwerk durchzuführen. Die Suche wird also erst durch die GUI angestoßen.
init():
start():
stop():
vsis.im.crypt.CryptoController
Dient zur Ver- und Entschlüsselung von vsis.im.model.message.Message Objekten, die über das Jxta Netzwerk verschickt werden.
init():
- erzeugt einen neuen Security Provider
- erzeugt eine neue sichere Random Factory
start():
- liest aus den persistenten Datensatz den angemeldeten
vsis.im.model.User aus (für Public- und Private-Keys)
stop():
vsis.im.sound.SoundController
Spielt kurze Sounds in bestimmten Situationen ab (siehe vsis.im.model.OptionListener)
init():
- lädt die diversen Sounddateien in
java.applet.AudioClip Objekte
start():
stop():
vsis.im.view.GuiController
Dient als Controller für die GUI.
init():
- erzeugt leere Listen für Buddies, Chats und Profiles
start():
- lädt diverse ServiceProvider
- erzeugt ein
vsis.im.view.Gui Objekt und ruft dort die initGui() Methode auf (Gui ist das Hauptfenster des Instant Messenger und initGui() baut die ganzen AWT/Swing Komponenten auf)
- ruft
addListener() auf, die zu jedem Buddy in der BuddyList einen Listener startet (um eingehende Messages abzufangen)
- die BuddyListe in der GUI wird entsprechend den Daten aus den einzelnen Buddies geupdated.
- wurde der Instant Messenger noch nie gestartet, wird das UserProfile Fenster (
vsis.im.view.UserProfileGui) geöffnet, ansonsten wird einfach das Gui Fenster geöffnet.
stop():
vsis.im.model.message.TextMessageHandler
Dieser Service handelt alle einkommenden vsis.im.model.message.TextMessage Objekte, die der vsis.im.communication.ReceiveService empfängt.
init():
start():
stop():
vsis.im.profileadvertisement.request.ProfileAdvertisementRequestService
Dieser Dienst schickt ProfileAdvertisement Requests ins Jxta Netzwerk und wartet auf ProfileAdvertisement Replies.
init():
start():
stop():
vsis.im.profileadvertisement.request.ProfileAdvertisementReplyService
Dieser Dienst wartet auf ProfileAdvertisement Requests aus dem Jxta Netzwerk und schickt ProfileAdvertisement Replies.
init():
start():
stop():
vsis.im.profileadvertisement.ProfilePublishingController
Dieser Dienst verbreitet ProfileAdvertisement im Jxta Netzwerk
init():
start():
stop():
vsis.im.search.indexing.TimedSearchIndexingService
Führt eine permanente Suche nach Profilen im Jxta Netzwerk durch
init():
start():
- erzeugt einen neuen Timer
- dem Timer wird die innere Klasse
TimedSearchIndexingTask übergeben, die in regelmäßigen Abständen den IMIndexSearcher aufruft.
stop():