[OSM-Devserver] Kommunikation mit Tirex-Master
Jochen Topf
jochen at remote.org
Mo Mär 28 19:05:30 CEST 2011
On Mon, Mar 28, 2011 at 05:50:21PM +0200, Peter Körner wrote:
> Am 28.03.2011 16:59, schrieb Jochen Topf:
> >On Mon, Mar 28, 2011 at 04:41:48PM +0200, Peter Körner wrote:
> >>was ist der vorgesehene Weg für eine externe Anwendung, Requests an
> >>den Tirex-Master zur Bearbeitung zu senden?
> >> - Über den Unix-Socket /var/run/tirex/master.sock
> >
> >Ja. Siehe tirex-batch und tirex-send, wie das zu machen ist.
>
> Ist es überhaupt möglich, über den dgram-Socket eine
> Render-Anforderung zu senden und eine Antwort zu bekommen, wenn das
> Tile fertig ist?
Ja, das sollte gehen.
Einfache Beispiel:
tirex-send -d ping
Kommt da was zurück?
Der Server sollte die Antwort dahin zurückschicken, woher er den
Request bekommen hat.
> Wenn ich eine Nachricht mit id an den Master schicke, schmiert
> dieser mit der Meldung "send: Cannot determine peer address at
> /usr/share/perl5/Tirex/Source/Command.pm line 166" ab.
Und das kommt dann, wenn der Server nicht weiss, wohin. (Wobei das
ein Fehler ist, dass er abschmiert, das sollte natürlich nicht
passieren.)
> Beispielprogramm in nodejs:
>
> var dgram = require('dgram');
>
> var message = new Buffer(serialize_tirex_msg({
> id: 'foo',
> type: 'metatile_enqueue_request',
> prio: 10,
> map: 'test',
> x: 0,
> y: 0,
> z: 0
> }));
>
> var client = dgram.createSocket('unix_dgram', function(buf, rinfo)
> {
> console.log('incoming');
> });
>
> //client.bind('/var/run/tirex/master.sock');
Kann sein, dass Du hier auf was binden musst:
client.bind('/var/run/tirex/client.sock');
Vielleicht geht auch
client.bind('');
oder so, um eine "versteckte" Adresse zu generieren.
> client.send(message, 0, message.length,
> '/var/run/tirex/master.sock', function()
> {
> console.log('msg sent');
> });
Jochen
--
Jochen Topf jochen at remote.org http://www.remote.org/jochen/ +49-721-388298