LSL Protocol/Restrained Love Open Relay Group/ack

From Second Life Wiki
Jump to navigation Jump to search

!x-ack

STATUS: draft

VERSION: 002


002 Implemented in Dahlia's multirelay (<-- this command is not supported anymore due to llRegionSayTo())

001 Implemented in Satomi's multirelay


!x-ack/quiet: tells the relay to stop sending "ok" and "ko" acknowledgements

!x-ack/verbose: tells the relay to resume sending them

Rationale: reduce relay channel spam, and thus lag, by disabling acknowledgements that the controlling device does not care about.

General syntax: !x-ack[/STRING]*, where STRING is the desired acknowledgement policy.

Behavior requirements:

  • This will change the way the relay acknowledge commands, applying the policy given in the argument of the command, thus overriding the core requirement that every command should be acknowledged. There are now, in 002, two policies:
  • verbose: it is the default usual policy for RLV relays
  • quiet: "ok" and "ko" acknowledgements are not sent (other useful replies should still be sent!).
  • This behavior change only concerns the acknowledgements to commands from the device issuing !x-ack.
  • The possible acknowledgements to "!x-ack" are "ok" to say it was accepted, and "ko" otherwise. The acknowledgement may or may not be sent, depending on the current acknowledgement policy but, in every case, if there is a policy change, its effects start immediately, that is before the relay (does not) acknowledges "!x-ack".
  • No matter the active acknowledgement policy, "!release,ok" should be always sent in case of safe-wording (which is not really an acknowledgement because it is not a reply to a command from the controlling device). Same goes for any other message sent at the initiative of the relay.
  • The acknowledgement policy is restored on relog.

Example 1:

C -> R: !x-ack/quiet
(nothing)
C -> R: @remoutfit=force
(nothing)
C -> R: !x-orgversions
C <- R: 0002/ack=001
C -> R: !x-ack/verbose
C <- R: !x-ack/verbose,ok
C -> R: @detach:pelvis=force
R <- C: @detach:pelvis=force,ok

Example 2, a low-lag RLV zone controller:

C −> *: !x-ack/quiet|@sittp=n|@tplure=n|@tploc=n|@tplm=n|@showworldmap=n|@showminimap=n|@showloc=n
(Then no relay should answer, but everybody should be restricted. "*" instead of "R" means
a wildcard was used, as introduced in ORG-0002. Without the wildcard and !x-ack,  a lot of
spam would have been sent to the RLV channel.)