Difference between revisions of "LlRequestURL"
Jump to navigation
Jump to search
Basil Wijaya (talk | contribs) m |
Kireji Haiku (talk | contribs) m (another user-defined function) |
||
Line 19: | Line 19: | ||
key urlRequestId; | key urlRequestId; | ||
key selfCheckRequestId; | key selfCheckRequestId; | ||
reset_script() | |||
{ | |||
llReleaseURL(url); | |||
llResetScript(); | |||
} | |||
request_url() | request_url() | ||
Line 36: | Line 42: | ||
// However this is just a demo script... | // However this is just a demo script... | ||
reset_script(); | |||
} | } | ||
Line 43: | Line 49: | ||
on_rez(integer start_param) | on_rez(integer start_param) | ||
{ | { | ||
reset_script(); | |||
} | } | ||
changed(integer change) | changed(integer change) | ||
{ | { | ||
if (change & (CHANGED_OWNER)) | if (change & (CHANGED_OWNER | CHANGED_INVENTORY)) | ||
reset_script(); | |||
if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT)) | if (change & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT)) |
Revision as of 13:29, 24 November 2013
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Summary
Function: key llRequestURL( );0.0 | Forced Delay |
10.0 | Energy |
Requests one HTTP:// url for use by this script. The http_request event is triggered with the result of the request.
Returns a key that is the handle used for identifying the result in the http_request event.
Caveats
- When a region is (re)started all HTTP server URLs are automatically released and invalidated.
- Use CHANGED_REGION_START to detect this so new URL can be requested.
- The number of available URLs is a limited resource, that is to say, a script can only have so many open URLs. See LSL http_server#Resource Limitations for details.
- When abandoning a URL, always release it with llReleaseURL, otherwise it will leak.
Important: Never ever forget to release a URL again which you have requested! URLs are region resources just like prims. If you take them all you can get into big trouble with the sim owner and/or estate managers. |
Examples
This script requests a new URL after region restart: <lsl> string url; key urlRequestId; key selfCheckRequestId;
reset_script() {
llReleaseURL(url); llResetScript();
}
request_url() {
llReleaseURL(url); url = "";
urlRequestId = llRequestURL();
}
throw_exception(string inputString) {
key owner = llGetOwner(); llInstantMessage(owner, inputString);
// yeah, bad way to handle exceptions by restarting. // However this is just a demo script...
reset_script();
}
default {
on_rez(integer start_param) { reset_script(); }
changed(integer change) {if (change & (CHANGED_OWNER
Notes
Another comment on resilient programming: getting a global resource, an HTTP listener in this case, should always be considered an operation that can fail for transitory reasons (as well as permanent ones). In this case, LSL folds retryable and permanent errors into the same error status and there's no opportunity for a script writer to distinguish the two cases. But a reasonable way to handle this is sleeping with limited retries before failing hard in the LSL code. Monty Linden
See Also
Functions
• | llRequestSecureURL | |||
• | llGetFreeURLs | |||
• | llReleaseURL | |||
• | llHTTPResponse | |||
• | llGetHTTPHeader |
Articles
• | LSL http server |