Difference between revisions of "LlKeyCountKeyValue"

From Second Life Wiki
Jump to: navigation, search
m
 
(3 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}}
+
|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
 
|return_type=key|return_subtype=handle
 
|return_type=key|return_subtype=handle
Line 16: 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 11: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

Dataserver

The dataserver callback parameters are:

  • A key containing the handle returned from llKeyCountKeyValue
  • A string containing a comma-delimited list (cdl). llDumpList2String([ integer success ] + components);
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 loose the associated Experience.
All Issues ~ Search JIRA for related Bugs

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.
KBcaution.png Important: Not all TPVs have this functionality.

Deep Notes

Search JIRA for related Issues

Signature

function key llKeyCountKeyValue();