View difference between Paste ID: ysN0PAz3 and VTMb1Ut7
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
45
 ?- findUUIDForName("Douglas Miles",X).
46
 X = uuid("8f6ce54e-95f5-46d0-b090-c5361c821232").
47
48
*/
49
findUUIDForName(NameString,Found):-
50
   cli_call('UUID','Random',QID),      % make a random UUID
51
   botget(['Avatars'],AvMan),          % get the AvatarManager object
52
   cli_new_event_waiter(AvMan,'AvatarPickerReply',WaitOn),  % create a new event handler object (and register it)
53
   cli_call(AvMan,'RequestAvatarNameSearch'(NameString,QID),_),   % make the request to the server
54
   cli_block_until_event(WaitOn, 10000, closure(Evt,cli_get(Evt,'QueryID',QID)), _),  %  wait for up to 10 seconds for the right the QueryID
55
   cli_get(Evt,'Avatars',U2SDict),  % get the UUID2Name dictionary
56
   cli_map(U2SDict,Found,NameString),   % Search that dictionary for the UUID by matching the String
57
   cli_call(WaitOn,'Dispose',_).  % unregister the handler and dispose