LlLinksetDataDelete

From Second Life Wiki
Jump to navigation Jump to search

Summary

Summary: llLinksetDataDelete, llLinksetDataDeleteProtected

The llLinksetDataDelete and llLinksetDataDeleteProtected functions erases a name:value pair from the linkset's datastore.

When this function successfully removes a name:value pair a linkset_data event is triggered in all scripts running in the linkset with an action of LINKSETDATA_DELETE and the name parameter set to the name that was removed. The value parameter in the event is set to an empty string.

llLinksetDataDelete

Function: integer llLinksetDataDelete( string name );

Removes an unprotected name:value pair from the linkset's datastore. If the pair was created
Returns an integer success or failure code.

• string name The key of the linkset name:value pair to be deleted.

llLinksetDataDeleteProtected

Function: integer llLinksetDataDeleteProtected( string name, string pass );
0.0 Forced Delay
10.0 Energy

The llLinksetDataDeleteProtected function erases a protected name:value pair from the linkset's datastore.
Returns an integer success or failure code.

• string name The key of the linkset name:value pair to be deleted.The key of the linkset name:value pair to be deleted.
• string pass A pass phrase previously used to protect the name:value pair.

Constant Description
LINKSETDATA_OK 0 The name:value pair was written to the datastore.
LINKSETDATA_EMEMORY 1 A name:value pair was too large to write to the linkset datastore.
LINKSETDATA_ENOKEY 2 The name supplied to llLinksetDataWrite was empty.
LINKSETDATA_EPROTECTED 3 The name:value pair has been protected from overwrite in the linkset's datastore.
LINKSETDATA_NOTFOUND 4 The named key could not be found in the linkset's datastore when attempting to delete it.
LINKSETDATA_NOUPDATE 5 The name:value stored in the linkset was not changed by the write operation because the value stored matches the value written.

Caveats

  • If the name does not exist or the pass does not match, no event is triggered.

Examples

<source lang="lsl2">// Simple blacklist management.

integer gDialogChannel; integer gDialogHandle; integer gManagingBlocks;

startDialog(key person) {

   gManagingBlocks = 0;
   gDialogHandle = llListen(gDialogChannel, "", person, "");
   llDialog(person, "\nSelect action", ["List blocks", "Add block", "Remove block"], gDialogChannel);
   llSetTimerEvent(60);

}

stopDialog() {

   llSetTimerEvent(0);
   llListenRemove(gDialogHandle);

}

default {

   on_rez(integer sp)
   {
       llResetScript();
   }
   state_entry()
   {
       gDialogChannel = (integer)(llFrand(-10000000)-10000000);
       llListen(PUBLIC_CHANNEL, "", NULL_KEY, "");;
   }
   timer()
   {
       stopDialog();
   }
   touch_start(integer nd)
   {
       key toucherKey = llDetectedKey(0);
       if (toucherKey == llGetOwner())
       {
           startDialog(toucherKey);
       }
   }
   listen(integer channel, string name, key id, string message)
   {
       if (llGetAgentSize(id) == ZERO_VECTOR)
       {
           return;
       }
       if (channel == gDialogChannel)
       {
           stopDialog();
           if (gManagingBlocks)
           {
               message = llStringTrim(message, STRING_TRIM);
               if ((key)message)
               {
                   if (gManagingBlocks == 1)
                   {
                       llOwnerSay("Addition request has been sent to the blacklist storage");
                       llLinksetDataWrite("blocklist:" + message, "1");
                   }
                   else
                   {
                       llOwnerSay("Removal request has been sent to the blacklist storage.");
                       llLinksetDataDelete("blocklist:" + message);
                   }
               }
               else
               {
                   llOwnerSay("The UUID '" + message + "' appears to be invalid.");
               }
               startDialog(id);
           }
           else if (message == "List blocks")
           {
               list blocks = llLinksetDataFindKeys("^blocklist:", 0, 0);
               integer listLength = llGetListLength(blocks);
               llOwnerSay("Blacklist items: " + (string)listLength);
               integer i;
               while (i < listLength)
               {
                   string record = llGetSubString(llList2String(blocks, i), 10, -1);
                   llOwnerSay("- secondlife:///app/agent/" + record + "/about" + " - " + record);
                   ++i;
               }
               blocks = [];
               startDialog(id);
           }
else if (message == "Add block"

Deep Notes

Signature

function integer llLinksetDataDelete( string name );
function integer llLinksetDataDeleteProtected( string name, string pass );