Difference between revisions of "LlCreateKeyValue"

From Second Life Wiki
Jump to navigation Jump to search
m (fixed broken lsl formatting)
(I'm not sure how this works. See https://wiki.secondlife.com/w/index.php?title=XP_ERROR_STORAGE_EXCEPTION&oldid=1195947)
Line 9: Line 9:
|p1_type=string|p1_name=k
|p1_type=string|p1_name=k
|p2_type=string|p2_name=v
|p2_type=string|p2_name=v
|caveats=*Attempting to create a key with llCreateKeyValue when that key already exist will return an error<!--: XP_ERROR_STORAGE_EXCEPTION 13 key-value store communication failed-->
|also_functions=
|also_functions=
*[[llGetExperienceErrorMessage]]
*[[llGetExperienceErrorMessage]]

Revision as of 15:45, 14 April 2015

Summary

Function: key llCreateKeyValue( string k, string v );

Start an asynchronous transaction to create a key-value pair associated with the given experience key using the given key and value.
Returns a handle (a key) that can be used to identify the corresponding dataserver event to determine if this command succeeded or failed.

• string k The key for the key-value pair
• string v The value for the key-value pair. Maximum 2047 characters, or 4095 if using Mono.

If the key already exists the dataserver will return a failure along with the error XP_ERROR_STORAGE_EXCEPTION.

Specification

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.
• string value The value for the key-value pair. Maximum 2047 characters, or 4095 if using Mono. Note! This value may contain commas.

Caveats

  • Attempting to create a key with llCreateKeyValue when that key already exist will return an error

Examples

key trans;
default
{
    touch_start(integer total_number)
    {
        trans = llCreateKeyValue("FOO", "BAR");
    }



    dataserver(key t, string value)
    {
        if (t == trans)
        {
            // our llCreateKeyValue transaction is done
            integer result = (integer)llGetSubString(value, 0, 0);
            if (result == 1)
            {
                // the key-value pair was successfully created
                llSay(0, "New key-value pair was created");
            }
            else
            {
                // the key-value pair was not created
                integer error = (integer)(llGetSubString(value, 2, -1));
                llSay(0, "Key-value failed to create: " + llGetExperienceErrorMessage(error));
            }
        }
    } 
}

Deep Notes

Signature

function key llCreateKeyValue( string k, string v );