Message Endpoint

From Fritz!Box
(Redirected from ME)
Jump to: navigation, search

AVM Wiki >> Lexikon >> Message Endpoint @ whmf   -   IRC-Chat   -   hu nl it English
Community Modelle Zubehör Environment Konfiguration Shell-Befehle Software Freetz Lexikon Tipps+Tricks Bilder

Hardware System Netzwerk Dienste Telefonie Multimedia Automation Business Extras Sonstiges Todo

Contents

Begriff

Zur Einführung wird der Unix Socket Artikel empfohlen.

Im Gegensatz zur Netzwerktechnik, wo alles nur erdenkliche genormt ist, gibt es keine klaren Richtlinien über die Form in der Daten über eine Unix Socket fließen sollen. Hier brodelt jeder sein eigenes Süppchen, so auch einige ältere Dienste der FRITZ!Box. Für die neueren Dienste von AVM wurde jedoch ein einheitliches Konzept verwendet, Message Endpoints genannt.

Message Endpoints sind von neueren Diensten erzeugte unidirektionale Unix Sockets an die Daten gesendet werden können. Will ein kontaktierender Prozess eine Antwort muss er selbst einen Message Endpoint bereitstellen der auch temporär erzeugt werden kann. Wie fast alle Sockets der Box befinden sich Message Endpoints auch im RAM in /var/tmp. Man erkennt sie leicht an ihrem einheitlichen Namen:

$ ls -l /var/tmp/me_*.ctl
srwxr-xr-x    1 root     root            0 Jan  1  2000 /var/tmp/me_ctlmgr.ctl
srwxr-xr-x    1 root     root            0 Jan  1  2000 /var/tmp/me_logic.ctl
srwxr-xr-x    1 root     root            0 Sep 25 05:16 /var/tmp/me_multid.ctl
srwxr-xr-x    1 root     root            0 Sep 25 05:15 /var/tmp/me_phonebook.ctl
srwxr-xr-x    1 root     root            0 Sep 25 05:16 /var/tmp/me_upnp_usb.ctl
srwxr-xr-x    1 root     root            0 Sep 25 05:15 /var/tmp/me_upnpd.ctl
srwxr-xr-x    1 root     root            0 Sep 25 05:15 /var/tmp/me_voipd.ctl

Message Endpoints die von Diensten bereitgestellt werden nutzen das Namensformat me_<name>.ctl, temporäre Antwort-Endpoints das Format me_<programm><pid>.ctl. 'me' steht dabei für Message Endpoint, darauf folgt der Name des Endpoints und ctl steht für Control Socket, der vermutete Name der API in libavmcsock.so.

Endpoints werden nur zu aktiven Diensten erzeugt. Das Listing oben stammt z.B. aus einer Box die im IP-Client Modus betrieben wird und so fehlt me_dsld.ctl. Ein Dienst kann auch mehrere Endpoints erzeugen, Beispiele hierfür sind multid mit me_multid.ctl und me_upnp_usb.ctl oder ctlmgr mit me_ctlmgr.ctl und me_logic.ctl.

Message Endpoint API

Obwohl Message Endpoints direkt als Unix Socket geöffnet und kontaktiert werden können steht eine einheitliche API zur Verfügung, die sich in libavmcsock.so befindet. Beide Ansprechmethoden werden in der FRITZ!Box vielerorts verwendet. Die API-Funktionen zum Hantieren von Message Endpoints heissen:

msg_endpoint_create             # Erzeugt einen Message Endpoint
msg_endpoint_destroy            # Beseitigt einen Message Endpoint
msg_endpoint_is_blocked         # Prüft ob der Endpoint bereits genutzt wird
msg_endpoint_printf_sendto      # Sendet formatierten Text
msg_endpoint_sendto             # Sendet Daten oder Text

Commandline Tools

Zur "rohen" Kommunikation mit einem Message Endpoint steht der Shell-Befehl msgsend zur Verfügung, der einen temporären Endpoint erzeugt und den übergebenen String mit Null terminiert an den gewünschten Endpoint sendet und eine eventuelle Antwort empfängt.

Für den höchsten aller Dienste ctlmgr steht der ähnlich kommunizuerende Sonderbefehl ctlmgr_ctl zur Verfügung der jedoch fest den Endpoint me_logic.ctl anspricht und seinen viel spezialisierteren Dialog in XML verpackt führt.

Endpoint API Nutzung

Daemons + Endpoints

Controllers

TODO

Artikel zum Thema

  • TODO

Siehe auch

Ports+Sockets: (112)