LlKeyCountKeyValue: Difference between revisions

From Second Life Wiki
Jump to navigation Jump to search
Strife Onizuka (talk | contribs)
No edit summary
Strife Onizuka (talk | contribs)
mNo edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Experience Tools]]
[[Category:Experience Tools]]
{{LSL_Function
{{LSL_Function
|inject-2=
{{LSL Function/KeyValue|d2_type=integer|d2_name=pairs|d2_desc=number of keys-value pairs in the key-value store}}
{{LSL Function/Experience|true}}
|func=llKeyCountKeyValue
|func=llKeyCountKeyValue
|func_desc=Start an asynchronous transaction to request the number of keys in the system.
|func_desc=Start an asynchronous transaction to request the number of keys with the script's {{LSLGC|Experience}}.
|func_footnote=
|func_footnote
The [[dataserver]] callback parameters are:
* A key containing the {{LSLGC|Key/handle|handle}} returned from llKeyCountKeyValue
* A string containing a comma-delimited list.  The first item is a boolean specifying if the transaction succeeded (1) or not (0).  On a success result the second value is the number of items in the system.
|return_type=key|return_subtype=handle
|return_type=key|return_subtype=handle
|return_text=that can be used to identify the corresponding [[dataserver]] event to determine if this command succeeded or failed.
|return_text=that can be used to identify the corresponding [[dataserver]] event to determine if this command succeeded or failed and the results.
|also_functions=
|also_functions=
*[[llGetExperienceErrorMessage]]
*[[llGetExperienceErrorMessage]]
Line 18: Line 18:
*[[llKeyCountKeyValue]]
*[[llKeyCountKeyValue]]
*[[llKeysKeyValue]]
*[[llKeysKeyValue]]
|examples=<lsl>key trans;
|examples=<source lang="lsl2">key trans;
default
default
{
{
     state_entry()
     state_entry()
     {
     {
         trans = llKeyCountKeyValue("FOO");
         trans = llKeyCountKeyValue();
     }
     }
}


dataserver(key t, string value)
 
{
    dataserver(key t, string value)
    if (t == trans)
     {
     {
        // our llKeyCountKeyValue transaction is done
         if (t == trans)
        list result = llCSV2List(value);
         if (llList2Integer(result, 0) == 1)
        {
            // data size retrieved
            llSay(0, "Keys in use: "+llList2String(result, 1)");
        }
        else
         {
         {
             // key count failed
             // our llKeyCountKeyValue transaction is done
            llSay(0, "Key-value failed to count keys: " + llList2String(result, 1) );
            list result = llCSV2List(value);
            if (llList2Integer(result, 0) == 1)
            {
                // data size retrieved
                llSay(0, "Keys in use: "+llList2String(result, 1));
            }
            else
            {
                // key count failed
                llSay(0, "Key-value failed to count keys: " + llList2String(result, 1) );
            }
         }
         }
     }  
     }  
}</lsl>
}</source>
|cat1=Experience
|cat1=Experience
|cat2=Dataserver
|cat2=Dataserver
|cat3=Experience/Data
}}
}}

Latest revision as of 12:13, 5 May 2015

Summary

Function: key llKeyCountKeyValue( );

Start an asynchronous transaction to request the number of keys with the script's Experience.
Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed and the results.

Specification

  • Maximum memory storage: 128 MiB

Dataserver

The dataserver callback parameters are:

String Components
• integer success A boolean specifying if the transaction succeeded (1) or not (0).
• integer error An XP_ERROR_* flag that describes why the operation failed.
• integer pairs number of keys-value pairs in the key-value store

Caveats

  • If you recompile a script that was previously associated with an Experience but do so with a client that lacks the ability to compile scripts into an experience the script will lose the associated Experience.

Examples

key trans;
default
{
    state_entry()
    {
        trans = llKeyCountKeyValue();
    }


    dataserver(key t, string value)
    {
        if (t == trans)
        {
            // our llKeyCountKeyValue transaction is done
            list result = llCSV2List(value);
            if (llList2Integer(result, 0) == 1)
            {
                // data size retrieved
                llSay(0, "Keys in use: "+llList2String(result, 1));
            }
            else
            {
                // key count failed
                llSay(0, "Key-value failed to count keys: " + llList2String(result, 1) );
            }
        }
    } 
}

Notes

Compiling

For a script to be associated with an Experience...

  • It must be compiled with a client that is Experience aware,
  • The "Use Experience" checkbox must be checked,
  • And one of the users Experience keys selected.
Important: Not all TPVs have this functionality.

Deep Notes

Signature

function key llKeyCountKeyValue();