GESCHUETZT
SYNOPSIS
        #include <erq.h>

        int send_erq(int request, bytes|int *data, closure callback)

BESCHREIBUNG
        Eine Anfrage vom Typ <request> (standardmaessig 0) wird mit Inhalt
        <data> word an den ERQ gesandt. Wenn <callback> angegeben ist,
        wird diese Closure aufgerufen, wenn eine Antwort vom ERQ eintrifft
        (ein Status Code), vorausgesetzt die Antwort enthaelt ausreichend
        Daten, um damit zu arbeiten:

            void <closure>(int *response_data, int len);

        <data> kann entweder eine Bytefolge oder ein Array von Integers sein,
        wobei im zweiten Fall die Zahlen als Bytes interpretiert werden.
        Die unterschiedlichen Anfragen sind in <erq.h> definiert.

        Die Funktion liefert 0 zurueck, wenn das Senden fehlgeschlagen ist,
        etwas anderes sost.

        Die Funktion verursacht eine Schutzverletzung "erq".

GESCHICHTE
        Eingefuehrt in 3.2.1@61.
        Geschuetzt in 3.2.1@84.
        LDMud 3.3.318 fuehrte das ERQ_CB_STRING-Flag ein.

SIEHE AUCH
        attach_erq_demon(E), erq(C)
