SHOW:
|
|
- or go back to the newest paste.
| 1 | /* | |
| 2 | C# Way | |
| 3 | ||
| 4 | public UUID FindUUIDForName(string nameString) | |
| 5 | {
| |
| 6 | ||
| 7 | ManualResetEvent NameSearchEvent = new ManualResetEvent(false); | |
| 8 | UUID queryID = UUID.Random(); | |
| 9 | UUID found = UUID.Zero; | |
| 10 | EventHandler<AvatarPickerReplyEventArgs> callback = | |
| 11 | new EventHandler<AvatarPickerReplyEventArgs>((s, e) => | |
| 12 | {
| |
| 13 | if (queryID == e.QueryID) | |
| 14 | {
| |
| 15 | ||
| 16 | foreach (KeyValuePair<UUID, string> kvp in e.Avatars) | |
| 17 | {
| |
| 18 | if (kvp.Value == nameString) {
| |
| 19 | found = kvp.Key; | |
| 20 | break; | |
| 21 | } | |
| 22 | } | |
| 23 | NameSearchEvent.Set(); | |
| 24 | } | |
| 25 | }); | |
| 26 | try | |
| 27 | {
| |
| 28 | client.Avatars.AvatarPickerReply += callback; | |
| 29 | // Send the Query | |
| 30 | client.Avatars.RequestAvatarNameSearch(nameString, queryID); | |
| 31 | ||
| 32 | NameSearchEvent.WaitOne(10000, false); | |
| 33 | } | |
| 34 | finally | |
| 35 | {
| |
| 36 | client.Avatars.AvatarPickerReply -= callback; | |
| 37 | } | |
| 38 | return found; | |
| 39 | } | |
| 40 | ||
| 41 | */ | |
| 42 | ||
| 43 | %% Prolog Way | |
| 44 | findUUIDForName(NameString,Found):- | |
| 45 | cli_call('UUID','Random',QID), % make a random UUID
| |
| 46 | botget(['Avatars'],AvMan), % get the AvatarManager object | |
| 47 | cli_new_event_waiter(AvMan,'AvatarPickerReply',WaitOn), % create a new event handler object (and register it) | |
| 48 | cli_call(AvMan,'RequestAvatarNameSearch'(NameString,QID),_), % make the request to the server | |
| 49 | cli_block_until_event(WaitOn, 10000, c(Evt,cli_get(Evt,'QueryID',QID)), _), % wait for up to 10 seconds for the right the QueryID | |
| 50 | cli_get(Evt,'Avatars',U2SDict), % get the UUID2Name dictionary | |
| 51 | cli_map(U2SDict,Found,NameString), % Search that dictionary for the UUID by matching the String | |
| 52 | cli_call(WaitOn,'Dispose',_). % unregister the handler and dispose |