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 SearchClassifiedsCommand : Command
8 {
9 System.Threading.AutoResetEvent waitQuery = new System.Threading.AutoResetEvent(false);
10  
11 public SearchClassifiedsCommand(TestClient testClient)
12 {
13 Name = "searchclassifieds";
14 Description = "Searches Classified Ads. Usage: searchclassifieds [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: searchclassifieds [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<DirClassifiedsReplyEventArgs> callback = delegate(object sender, DirClassifiedsReplyEventArgs e)
32 {
33 result.AppendFormat("Your search string '{0}' returned {1} classified ads" + System.Environment.NewLine,
34 searchText, e.Classifieds.Count);
35 foreach (DirectoryManager.Classified ad in e.Classifieds)
36 {
37 result.AppendLine(ad.ToString());
38 }
39  
40 // classifieds are sent 16 ads at a time
41 if (e.Classifieds.Count < 16)
42 {
43 waitQuery.Set();
44 }
45 };
46  
47 Client.Directory.DirClassifiedsReply += callback;
48  
49 UUID searchID = Client.Directory.StartClassifiedSearch(searchText, DirectoryManager.ClassifiedCategories.Any, DirectoryManager.ClassifiedQueryFlags.Mature | DirectoryManager.ClassifiedQueryFlags.PG);
50  
51 if (!waitQuery.WaitOne(20000, false) && Client.Network.Connected)
52 {
53 result.AppendLine("Timeout waiting for simulator to respond to query.");
54 }
55  
56 Client.Directory.DirClassifiedsReply -= callback;
57  
58 return result.ToString();
59 }
60 }
61 }