DEMOSPOOL
Spooldaten in Ringpuffer speichern
Spooldaten sollen in einen Ringpuffer aus max. 9999 Blöcken (mit jeweils max. 20000 Zeichen) gesichert werden. Ist der Ringpuffer voll, werden die ältesten Daten überschrieben. Die ID $id wird fortlaufend von 1 beginnend hochgezählt. Wird die gleiche ID $id mehrmals übertragen (max. 5000 Zeichen je Aufruf), werden die Daten an den bestehenden Puffer angehängt. Ist die ID noch nicht vorhanden, wird sie neu angelegt.
~^<Q776Q([0-9]{1,10});([^>]{1,5000})>$~si
$id, $text
// Beispiel <Q776Q1;AbcdefgHijklmnop>
$lfd = $id % 10000;
XLPAD( $lfd , '0' , 4 )
XDBOPEN( 'demospool' )
if (empty($syserror))
{
XDBGET( $lfd , &$xid , &$xdattim , &$xbuffer )
if (empty($syserror))
{
XDATE( 'YmdHis' , &$xdattim )
if ($id == $xid)
{
$xbuffer .= $text;
}
else
{
$xbuffer = $text;
}
XDBPUT( $lfd , $id , $xdattim , $xbuffer )
if (empty($syserror))
{
$cmd = "<Q997QOK>";
}
else
{
$cmd = "<Q997QERROR>";
}
}
else
{
$cmd = "<Q997QERROR>";
}
}
else
{
$cmd = "<Q997QERROR>";
}
$sysreply = $cmd;
XDATE
XDBGET
XDBOPEN
XDBPUT
XLPAD
$syserror
$sysreply