LIBOMV-686 Implements new event patterns based on the Microsoft Framework Design Guidelines in GroupManager
* BREAKING CHANGE * this is a major shift in the way events are internally handled. git-svn-id: http://libopenmetaverse.googlecode.com/svn/libopenmetaverse/trunk@3162 52acb1d6-8a22-11de-b505-999d5b087335
This commit is contained in:
@@ -21,7 +21,8 @@ namespace OpenMetaverse.TestClient
|
||||
testClient.Avatars.OnAvatarInterests += new AvatarManager.AvatarInterestsCallback(Avatars_OnAvatarInterests);
|
||||
testClient.Avatars.OnAvatarProperties += new AvatarManager.AvatarPropertiesCallback(Avatars_OnAvatarProperties);
|
||||
testClient.Avatars.OnAvatarGroups += new AvatarManager.AvatarGroupsCallback(Avatars_OnAvatarGroups);
|
||||
testClient.Groups.OnGroupJoined += new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);
|
||||
testClient.Groups.GroupJoinedReply += new EventHandler<GroupOperationEventArgs>(Groups_OnGroupJoined);
|
||||
|
||||
testClient.Avatars.OnAvatarPicks += new AvatarManager.AvatarPicksCallback(Avatars_OnAvatarPicks);
|
||||
testClient.Avatars.OnPickInfo += new AvatarManager.PickInfoCallback(Avatars_OnPickInfo);
|
||||
|
||||
@@ -29,7 +30,7 @@ namespace OpenMetaverse.TestClient
|
||||
Description = "Clones another avatars profile as closely as possible. WARNING: This command will " +
|
||||
"destroy your existing profile! Usage: cloneprofile [targetuuid]";
|
||||
Category = CommandCategory.Other;
|
||||
}
|
||||
}
|
||||
|
||||
public override string Execute(string[] args, UUID fromAgentID)
|
||||
{
|
||||
@@ -141,16 +142,16 @@ namespace OpenMetaverse.TestClient
|
||||
}
|
||||
}
|
||||
|
||||
void Groups_OnGroupJoined(UUID groupID, bool success)
|
||||
void Groups_OnGroupJoined(object sender, GroupOperationEventArgs e)
|
||||
{
|
||||
Console.WriteLine(Client.ToString() + (success ? " joined " : " failed to join ") +
|
||||
groupID.ToString());
|
||||
Console.WriteLine(Client.ToString() + (e.Success ? " joined " : " failed to join ") +
|
||||
e.GroupID.ToString());
|
||||
|
||||
if (success)
|
||||
if (e.Success)
|
||||
{
|
||||
Console.WriteLine(Client.ToString() + " setting " + groupID.ToString() +
|
||||
Console.WriteLine(Client.ToString() + " setting " + e.GroupID.ToString() +
|
||||
" as the active group");
|
||||
Client.Groups.ActivateGroup(groupID);
|
||||
Client.Groups.ActivateGroup(e.GroupID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace OpenMetaverse.TestClient.Commands
|
||||
waitQuery.Reset();
|
||||
|
||||
Client.Avatars.OnAvatarNames += Avatars_OnAvatarNames;
|
||||
Client.Groups.OnGroupProfile += Groups_OnGroupProfile;
|
||||
Client.Groups.GroupProfile += Groups_OnGroupProfile;
|
||||
Client.Avatars.RequestAvatarName(key);
|
||||
|
||||
Client.Groups.RequestGroupProfile(key);
|
||||
@@ -39,13 +39,13 @@ namespace OpenMetaverse.TestClient.Commands
|
||||
}
|
||||
|
||||
Client.Avatars.OnAvatarNames -= Avatars_OnAvatarNames;
|
||||
Client.Groups.OnGroupProfile -= Groups_OnGroupProfile;
|
||||
Client.Groups.GroupProfile -= Groups_OnGroupProfile;
|
||||
return result.ToString();
|
||||
}
|
||||
|
||||
void Groups_OnGroupProfile(Group group)
|
||||
void Groups_OnGroupProfile(object sender, GroupProfileEventArgs e)
|
||||
{
|
||||
result.AppendLine("Group: " + group.Name + " " + group.ID);
|
||||
result.AppendLine("Group: " + e.Group.Name + " " + e.Group.ID);
|
||||
waitQuery.Set();
|
||||
}
|
||||
|
||||
|
||||
@@ -35,31 +35,29 @@ namespace OpenMetaverse.TestClient
|
||||
GroupName = GroupName.Trim();
|
||||
|
||||
GroupUUID = Client.GroupName2UUID(GroupName);
|
||||
if (UUID.Zero != GroupUUID) {
|
||||
GroupManager.GroupMembersCallback callback =
|
||||
new GroupManager.GroupMembersCallback(GroupMembersHandler);
|
||||
Client.Groups.OnGroupMembers += callback;
|
||||
if (UUID.Zero != GroupUUID) {
|
||||
Client.Groups.GroupMembersReply += GroupMembersHandler;
|
||||
GroupRequestID = Client.Groups.RequestGroupMembers(GroupUUID);
|
||||
GroupsEvent.WaitOne(30000, false);
|
||||
GroupsEvent.Reset();
|
||||
Client.Groups.OnGroupMembers -= callback;
|
||||
Client.Groups.GroupMembersReply -= GroupMembersHandler;
|
||||
return Client.ToString() + " got group members";
|
||||
}
|
||||
return Client.ToString() + " doesn't seem to be member of the group " + GroupName;
|
||||
}
|
||||
|
||||
private void GroupMembersHandler(UUID requestID, UUID groupID, Dictionary<UUID, GroupMember> members)
|
||||
private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
|
||||
{
|
||||
if (requestID == GroupRequestID) {
|
||||
if (e.RequestID == GroupRequestID) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine();
|
||||
sb.AppendFormat("GroupMembers: RequestID {0}", requestID).AppendLine();
|
||||
sb.AppendFormat("GroupMembers: RequestID {0}", e.RequestID).AppendLine();
|
||||
sb.AppendFormat("GroupMembers: GroupUUID {0}", GroupUUID).AppendLine();
|
||||
sb.AppendFormat("GroupMembers: GroupName {0}", GroupName).AppendLine();
|
||||
if (members.Count > 0)
|
||||
foreach (KeyValuePair<UUID, GroupMember> member in members)
|
||||
if (e.Members.Count > 0)
|
||||
foreach (KeyValuePair<UUID, GroupMember> member in e.Members)
|
||||
sb.AppendFormat("GroupMembers: MemberUUID {0}", member.Key.ToString()).AppendLine();
|
||||
sb.AppendFormat("GroupMembers: MemberCount {0}", members.Count).AppendLine();
|
||||
sb.AppendFormat("GroupMembers: MemberCount {0}", e.Members.Count).AppendLine();
|
||||
Console.WriteLine(sb.ToString());
|
||||
GroupsEvent.Set();
|
||||
}
|
||||
|
||||
@@ -36,33 +36,32 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
GroupUUID = Client.GroupName2UUID(GroupName);
|
||||
if (UUID.Zero != GroupUUID) {
|
||||
GroupManager.GroupRolesCallback callback =
|
||||
new GroupManager.GroupRolesCallback(GroupRolesHandler);
|
||||
Client.Groups.OnGroupRoles += callback;
|
||||
Client.Groups.GroupRoleDataReply += Groups_GroupRoles;
|
||||
GroupRequestID = Client.Groups.RequestGroupRoles(GroupUUID);
|
||||
GroupsEvent.WaitOne(30000, false);
|
||||
GroupsEvent.Reset();
|
||||
Client.Groups.OnGroupRoles -= callback;
|
||||
Client.Groups.GroupRoleDataReply += Groups_GroupRoles;
|
||||
return Client.ToString() + " got group roles";
|
||||
}
|
||||
return Client.ToString() + " doesn't seem to have any roles in the group " + GroupName;
|
||||
}
|
||||
|
||||
private void GroupRolesHandler(UUID requestID, UUID groupID, Dictionary<UUID, GroupRole> roles)
|
||||
void Groups_GroupRoles(object sender, GroupRolesDataReplyEventArgs e)
|
||||
{
|
||||
if (requestID == GroupRequestID) {
|
||||
if (e.RequestID == GroupRequestID)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine();
|
||||
sb.AppendFormat("GroupRole: RequestID {0}", requestID).AppendLine();
|
||||
sb.AppendFormat("GroupRole: RequestID {0}", e.RequestID).AppendLine();
|
||||
sb.AppendFormat("GroupRole: GroupUUID {0}", GroupUUID).AppendLine();
|
||||
sb.AppendFormat("GroupRole: GroupName {0}", GroupName).AppendLine();
|
||||
if (roles.Count > 0)
|
||||
foreach (KeyValuePair<UUID, GroupRole> role in roles)
|
||||
if (e.Roles.Count > 0)
|
||||
foreach (KeyValuePair<UUID, GroupRole> role in e.Roles)
|
||||
sb.AppendFormat("GroupRole: Role {0} {1}|{2}", role.Value.ID, role.Value.Name, role.Value.Title).AppendLine();
|
||||
sb.AppendFormat("GroupRole: RoleCount {0}", roles.Count).AppendLine();
|
||||
sb.AppendFormat("GroupRole: RoleCount {0}", e.Roles.Count).AppendLine();
|
||||
Console.WriteLine(sb.ToString());
|
||||
GroupsEvent.Set();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,9 +64,8 @@ namespace OpenMetaverse.TestClient
|
||||
else
|
||||
return resolvedGroupName;
|
||||
}
|
||||
|
||||
GroupManager.GroupJoinedCallback gcallback = new GroupManager.GroupJoinedCallback(Groups_OnGroupJoined);
|
||||
Client.Groups.OnGroupJoined += gcallback;
|
||||
|
||||
Client.Groups.GroupJoinedReply += Groups_OnGroupJoined;
|
||||
Client.Groups.RequestJoinGroup(resolvedGroupID);
|
||||
|
||||
/* A.Biondi
|
||||
@@ -75,7 +74,7 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
GetGroupsSearchEvent.WaitOne(60000, false);
|
||||
|
||||
Client.Groups.OnGroupJoined -= gcallback;
|
||||
Client.Groups.GroupJoinedReply -= Groups_GroupJoined;
|
||||
GetGroupsSearchEvent.Reset();
|
||||
Client.ReloadGroupsCache();
|
||||
|
||||
@@ -84,6 +83,11 @@ namespace OpenMetaverse.TestClient
|
||||
return "Unable to join the group " + resolvedGroupName;
|
||||
}
|
||||
|
||||
void Groups_GroupJoined(object sender, GroupOperationEventArgs e)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
void Directory_DirGroups(object sender, DirGroupsReplyEventArgs e)
|
||||
{
|
||||
if (queryID == e.QueryID)
|
||||
@@ -126,9 +130,9 @@ namespace OpenMetaverse.TestClient
|
||||
}
|
||||
}
|
||||
|
||||
void Groups_OnGroupJoined(UUID groupID, bool success)
|
||||
void Groups_OnGroupJoined(object sender, GroupOperationEventArgs e)
|
||||
{
|
||||
Console.WriteLine(Client.ToString() + (success ? " joined " : " failed to join ") + groupID.ToString());
|
||||
Console.WriteLine(Client.ToString() + (e.Success ? " joined " : " failed to join ") + e.GroupID.ToString());
|
||||
|
||||
/* A.Biondi
|
||||
* This code is not necessary because it is yet present in the
|
||||
@@ -144,7 +148,7 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
*/
|
||||
|
||||
joinedGroup = success;
|
||||
joinedGroup = e.Success;
|
||||
GetGroupsSearchEvent.Set();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,14 +29,13 @@ namespace OpenMetaverse.TestClient
|
||||
groupName = groupName.Trim();
|
||||
|
||||
UUID groupUUID = Client.GroupName2UUID(groupName);
|
||||
if (UUID.Zero != groupUUID) {
|
||||
GroupManager.GroupLeftCallback lcallback = new GroupManager.GroupLeftCallback(Groups_OnGroupLeft);
|
||||
Client.Groups.OnGroupLeft += lcallback;
|
||||
if (UUID.Zero != groupUUID) {
|
||||
Client.Groups.GroupLeaveReply += Groups_GroupLeft;
|
||||
Client.Groups.LeaveGroup(groupUUID);
|
||||
|
||||
GroupsEvent.WaitOne(30000, false);
|
||||
Client.Groups.GroupLeaveReply -= Groups_GroupLeft;
|
||||
|
||||
Client.Groups.OnGroupLeft -= lcallback;
|
||||
GroupsEvent.Reset();
|
||||
Client.ReloadGroupsCache();
|
||||
|
||||
@@ -47,13 +46,13 @@ namespace OpenMetaverse.TestClient
|
||||
return Client.ToString() + " doesn't seem to be member of the group " + groupName;
|
||||
}
|
||||
|
||||
|
||||
void Groups_OnGroupLeft(UUID groupID, bool success)
|
||||
void Groups_GroupLeft(object sender, GroupOperationEventArgs e)
|
||||
{
|
||||
Console.WriteLine(Client.ToString() + (success ? " has left group " : " failed to left group ") + groupID.ToString());
|
||||
Console.WriteLine(Client.ToString() + (e.Success ? " has left group " : " failed to left group ") + e.GroupID.ToString());
|
||||
|
||||
leftGroup = success;
|
||||
leftGroup = e.Success;
|
||||
GroupsEvent.Set();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace OpenMetaverse.TestClient
|
||||
Network.RegisterCallback(PacketType.AgentDataUpdate, new NetworkManager.PacketCallback(AgentDataUpdateHandler));
|
||||
Network.OnLogin += new NetworkManager.LoginCallback(LoginHandler);
|
||||
Self.IM += Self_IM;
|
||||
Groups.OnGroupMembers += new GroupManager.GroupMembersCallback(GroupMembersHandler);
|
||||
Groups.GroupMembersReply += GroupMembersHandler;
|
||||
Inventory.OnObjectOffered += new InventoryManager.ObjectOfferedCallback(Inventory_OnInventoryObjectReceived);
|
||||
|
||||
Network.RegisterCallback(PacketType.AvatarAppearance, new NetworkManager.PacketCallback(AvatarAppearanceHandler));
|
||||
@@ -140,15 +140,22 @@ namespace OpenMetaverse.TestClient
|
||||
|
||||
public void ReloadGroupsCache()
|
||||
{
|
||||
GroupManager.CurrentGroupsCallback callback =
|
||||
new GroupManager.CurrentGroupsCallback(Groups_OnCurrentGroups);
|
||||
Groups.OnCurrentGroups += callback;
|
||||
Groups.CurrentGroups += Groups_CurrentGroups;
|
||||
Groups.RequestCurrentGroups();
|
||||
GroupsEvent.WaitOne(10000, false);
|
||||
Groups.OnCurrentGroups -= callback;
|
||||
Groups.CurrentGroups -= Groups_CurrentGroups;
|
||||
GroupsEvent.Reset();
|
||||
}
|
||||
|
||||
void Groups_CurrentGroups(object sender, CurrentGroupsEventArgs e)
|
||||
{
|
||||
if (null == GroupsCache)
|
||||
GroupsCache = e.Groups;
|
||||
else
|
||||
lock (GroupsCache) { GroupsCache = e.Groups; }
|
||||
GroupsEvent.Set();
|
||||
}
|
||||
|
||||
public UUID GroupName2UUID(String groupName)
|
||||
{
|
||||
UUID tryUUID;
|
||||
@@ -167,17 +174,7 @@ namespace OpenMetaverse.TestClient
|
||||
}
|
||||
}
|
||||
return UUID.Zero;
|
||||
}
|
||||
|
||||
private void Groups_OnCurrentGroups(Dictionary<UUID, Group> pGroups)
|
||||
{
|
||||
if (null == GroupsCache)
|
||||
GroupsCache = pGroups;
|
||||
else
|
||||
lock(GroupsCache) { GroupsCache = pGroups; }
|
||||
GroupsEvent.Set();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
@@ -197,11 +194,11 @@ namespace OpenMetaverse.TestClient
|
||||
}
|
||||
}
|
||||
|
||||
private void GroupMembersHandler(UUID requestID, UUID groupID, Dictionary<UUID, GroupMember> members)
|
||||
private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
|
||||
{
|
||||
if (requestID != GroupMembersRequestID) return;
|
||||
if (e.RequestID != GroupMembersRequestID) return;
|
||||
|
||||
GroupMembers = members;
|
||||
GroupMembers = e.Members;
|
||||
}
|
||||
|
||||
private void AvatarAppearanceHandler(Packet packet, Simulator simulator)
|
||||
|
||||
Reference in New Issue
Block a user