public override string Execute(string[] args, UUID fromAgentID) { if (args.Length < 1) return Description; groupName = String.Empty; resolvedGroupID = UUID.Zero; resolvedGroupName = String.Empty; if (args[0].ToLower() == "uuid") { if (args.Length < 2) return Description; if (!UUID.TryParse((resolvedGroupName = groupName = args[1]), out resolvedGroupID)) return resolvedGroupName + " doesn't seem a valid UUID"; } else { for (int i = 0; i < args.Length; i++) groupName += args[i] + " "; groupName = groupName.Trim(); DirectoryManager.DirGroupsReplyCallback callback = new DirectoryManager.DirGroupsReplyCallback(Directory_OnDirGroupsReply); Client.Directory.OnDirGroupsReply += callback; queryID = Client.Directory.StartGroupSearch(DirectoryManager.DirFindFlags.Groups, groupName, 0); GetGroupsSearchEvent.WaitOne(60000, false); Client.Directory.OnDirGroupsReply -= callback; GetGroupsSearchEvent.Reset(); } if (resolvedGroupID == UUID.Zero) { if (string.IsNullOrEmpty(resolvedGroupName)) return "Unable to obtain UUID for group " + groupName; else return resolvedGroupName; } GroupManager.GroupJoinedCallback gcallback = new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined); Client.Groups.OnGroupJoined += gcallback; Client.Groups.RequestJoinGroup(resolvedGroupID); /* A.Biondi * TODO: implement the pay to join procedure. */ GetGroupsSearchEvent.WaitOne(60000, false); Client.Groups.OnGroupJoined -= gcallback; GetGroupsSearchEvent.Reset(); Client.ReloadGroupsCache(); if (joinedGroup) return "Joined the group " + resolvedGroupName; return "Unable to join the group " + resolvedGroupName; }
public override string Execute(string[] args, UUID fromAgentID) { if (args.Length < 1) { return(Description); } groupName = String.Empty; resolvedGroupID = UUID.Zero; resolvedGroupName = String.Empty; if (args[0].ToLower() == "uuid") { if (args.Length < 2) { return(Description); } if (!UUID.TryParse((resolvedGroupName = groupName = args[1]), out resolvedGroupID)) { return(resolvedGroupName + " doesn't seem a valid UUID"); } } else { for (int i = 0; i < args.Length; i++) { groupName += args[i] + " "; } groupName = groupName.Trim(); DirectoryManager.DirGroupsReplyCallback callback = new DirectoryManager.DirGroupsReplyCallback(Directory_OnDirGroupsReply); Client.Directory.OnDirGroupsReply += callback; queryID = Client.Directory.StartGroupSearch(DirectoryManager.DirFindFlags.Groups, groupName, 0); GetGroupsSearchEvent.WaitOne(60000, false); Client.Directory.OnDirGroupsReply -= callback; GetGroupsSearchEvent.Reset(); } if (resolvedGroupID == UUID.Zero) { if (string.IsNullOrEmpty(resolvedGroupName)) { return("Unable to obtain UUID for group " + groupName); } else { return(resolvedGroupName); } } GroupManager.GroupJoinedCallback gcallback = new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined); Client.Groups.OnGroupJoined += gcallback; Client.Groups.RequestJoinGroup(resolvedGroupID); /* A.Biondi * TODO: implement the pay to join procedure. */ GetGroupsSearchEvent.WaitOne(60000, false); Client.Groups.OnGroupJoined -= gcallback; GetGroupsSearchEvent.Reset(); if (joinedGroup) { return("Joined the group " + resolvedGroupName); } return("Unable to join the group " + resolvedGroupName); }