From 87fe96ae2c48216d006a02ef22392f0838fba17f Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 26 Mar 2010 00:10:29 +0000
Subject: replace recent IModule.GetGroup() with better GetGroupRecord(string
name)
---
.../Region/Framework/Interfaces/IGroupsModule.cs | 14 +++++--
.../Avatar/XmlRpcGroups/GroupsModule.cs | 46 ++++++++++++----------
.../XmlRpcGroupsServicesConnectorModule.cs | 3 --
3 files changed, 36 insertions(+), 27 deletions(-)
(limited to 'OpenSim/Region')
diff --git a/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs b/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs
index e357969..2c091e7 100644
--- a/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IGroupsModule.cs
@@ -55,11 +55,18 @@ namespace OpenSim.Region.Framework.Interfaces
bool openEnrollment, bool allowPublish, bool maturePublish);
///
- /// Get a group given its name
+ /// Get a group
///
- ///
+ /// Name of the group
/// The group's data. Null if there is no such group.
- DirGroupsReplyData? GetGroup(string name);
+ GroupRecord GetGroupRecord(string name);
+
+ ///
+ /// Get a group
+ ///
+ /// ID of the group
+ /// The group's data. Null if there is no such group.
+ GroupRecord GetGroupRecord(UUID GroupID);
void ActivateGroup(IClientAPI remoteClient, UUID groupID);
List GroupTitlesRequest(IClientAPI remoteClient, UUID groupID);
@@ -87,7 +94,6 @@ namespace OpenSim.Region.Framework.Interfaces
void LeaveGroupRequest(IClientAPI remoteClient, UUID GroupID);
void EjectGroupMemberRequest(IClientAPI remoteClient, UUID GroupID, UUID EjecteeID);
void InviteGroupRequest(IClientAPI remoteClient, UUID GroupID, UUID InviteeID, UUID RoleID);
- GroupRecord GetGroupRecord(UUID GroupID);
void NotifyChange(UUID GroupID);
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
index 8ea4b93..b011295 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
@@ -365,7 +365,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
SendScenePresenceUpdate(dataForAgentID, activeGroupTitle);
}
- private void HandleUUIDGroupNameRequest(UUID GroupID,IClientAPI remoteClient)
+ private void HandleUUIDGroupNameRequest(UUID GroupID, IClientAPI remoteClient)
{
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
@@ -595,6 +595,31 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
return m_groupData.GetGroupRecord(null, GroupID, null);
}
+ public GroupRecord GetGroupRecord(string name)
+ {
+ if (m_debugEnabled)
+ m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
+
+ // XXX: Two call implementation. This could be done in a single call if the server itself were to
+ // implement the code below.
+
+ List groups = m_groupData.FindGroups(null, name);
+
+ DirGroupsReplyData? foundGroup = null;
+
+ foreach (DirGroupsReplyData group in groups)
+ {
+ // We must have an exact match - I believe FindGroups will return partial matches
+ if (group.groupName == name)
+ foundGroup = group;
+ }
+
+ if (null == foundGroup)
+ return null;
+
+ return GetGroupRecord(((DirGroupsReplyData)foundGroup).groupID);
+ }
+
public void ActivateGroup(IClientAPI remoteClient, UUID groupID)
{
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
@@ -768,25 +793,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
return groupID;
}
- public DirGroupsReplyData? GetGroup(string name)
- {
- if (m_debugEnabled)
- m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
-
- List groups = m_groupData.FindGroups(null, name);
-
- DirGroupsReplyData? foundGroup = null;
-
- foreach (DirGroupsReplyData group in groups)
- {
- // We must have an exact match - I believe FindGroups will return partial matches
- if (group.groupName == name)
- foundGroup = group;
- }
-
- return foundGroup;
- }
-
public GroupNoticeData[] GroupNoticesListRequest(IClientAPI remoteClient, UUID groupID)
{
if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name);
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
index af1018f..24ae4f7 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
@@ -352,11 +352,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
MemberGroupProfile.PowersMask = MemberInfo.GroupPowers;
return MemberGroupProfile;
-
}
-
-
public void SetAgentActiveGroup(GroupRequestID requestID, UUID AgentID, UUID GroupID)
{
Hashtable param = new Hashtable();
--
cgit v1.1