View difference between Paste ID: VTMb1Ut7 and m8aKEcCi
SHOW: | | - or go back to the newest paste.
1
2
/*
3
C# Way
4
5
        public UUID FindUUIDForName(string nameString)
6
        {
7
8
            ManualResetEvent NameSearchEvent = new ManualResetEvent(false);
9
            UUID queryID = UUID.Random();
10
            UUID found = UUID.Zero;
11
            EventHandler<AvatarPickerReplyEventArgs> callback =
12
                new EventHandler<AvatarPickerReplyEventArgs>((s, e) =>
13
                {
14
                    if (queryID == e.QueryID)
15
                    {
16
17
                        foreach (KeyValuePair<UUID, string> kvp in e.Avatars)
18
                        {
19
                            if (kvp.Value == nameString) {
20
                               found = kvp.Key;
21
                               break;
22
                            }
23
                        }
24
                        NameSearchEvent.Set();
25
                    }
26
                });
27
            try
28
            {
29
                client.Avatars.AvatarPickerReply += callback;
30
                // Send the Query
31
                client.Avatars.RequestAvatarNameSearch(nameString, queryID);
32
33
                NameSearchEvent.WaitOne(10000, false);
34
            }
35
            finally
36
            {
37
                client.Avatars.AvatarPickerReply -= callback;
38-
	  return found;
38+
39
        }
40
41
*/
42
/*
43-
%% Prolog Way
43+
Prolog Way
44
45
 ?- findUUIDForName("Douglas Miles",X).
46
 X = uuid("8f6ce54e-95f5-46d0-b090-c5361c821232").
47
48
*/
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
49+
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