corrade-vassal – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4  
5 namespace OpenMetaverse.TestClient.Commands
6 {
7 class SearchPlacesCommand : Command
8 {
9 System.Threading.AutoResetEvent waitQuery = new System.Threading.AutoResetEvent(false);
10  
11 public SearchPlacesCommand(TestClient testClient)
12 {
13 Name = "searchplaces";
14 Description = "Searches Places. Usage: searchplaces [search text]";
15 Category = CommandCategory.Search;
16 }
17  
18 public override string Execute(string[] args, UUID fromAgentID)
19 {
20 if (args.Length < 1)
21 return "Usage: searchplaces [search text]";
22  
23 string searchText = string.Empty;
24 for (int i = 0; i < args.Length; i++)
25 searchText += args[i] + " ";
26 searchText = searchText.TrimEnd();
27 waitQuery.Reset();
28  
29 StringBuilder result = new StringBuilder();
30  
31 EventHandler<PlacesReplyEventArgs> callback = delegate(object sender, PlacesReplyEventArgs e)
32 {
33 result.AppendFormat("Your search string '{0}' returned {1} results" + System.Environment.NewLine,
34 searchText, e.MatchedPlaces.Count);
35 foreach (DirectoryManager.PlacesSearchData place in e.MatchedPlaces)
36 {
37 result.AppendLine(place.ToString());
38 }
39  
40 waitQuery.Set();
41 };
42  
43 Client.Directory.PlacesReply += callback;
44 Client.Directory.StartPlacesSearch(searchText);
45  
46 if (!waitQuery.WaitOne(20000, false) && Client.Network.Connected)
47 {
48 result.AppendLine("Timeout waiting for simulator to respond to query.");
49 }
50  
51 Client.Directory.PlacesReply -= callback;
52  
53 return result.ToString();
54 }
55 }
56 }