public UUID CreateGroup(UUID RequestingAgentID, GroupRecordDelegate d) { //m_log.DebugFormat("[Groups.RemoteConnector]: Creating group {0}", name); //reason = string.Empty; //ExtendedGroupRecord group = m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID, // membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason); ExtendedGroupRecord group = d(); if (group == null) { return(UUID.Zero); } if (group.GroupID != UUID.Zero) { lock (m_Cache) { m_Cache.Add("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT); if (m_Cache.Contains("memberships-" + RequestingAgentID.ToString())) { m_Cache.Remove("memberships-" + RequestingAgentID.ToString()); } } } return(group.GroupID); }
public bool UpdateGroup(UUID groupID, GroupRecordDelegate d) { //reason = string.Empty; //ExtendedGroupRecord group = m_GroupsService.UpdateGroup(RequestingAgentID, groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish); ExtendedGroupRecord group = d(); if (group != null && group.GroupID != UUID.Zero) { lock (m_Cache) m_Cache.AddOrUpdate("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT); } return(true); }
public UUID CreateGroup(UUID RequestingAgentID, GroupRecordDelegate d) { //m_log.DebugFormat("[Groups.RemoteConnector]: Creating group {0}", name); //reason = string.Empty; //ExtendedGroupRecord group = m_GroupsService.CreateGroup(RequestingAgentID.ToString(), name, charter, showInList, insigniaID, // membershipFee, openEnrollment, allowPublish, maturePublish, founderID, out reason); ExtendedGroupRecord group = d(); if (group == null) return UUID.Zero; if (group.GroupID != UUID.Zero) lock (m_Cache) { m_Cache.Add("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT); if (m_Cache.Contains("memberships-" + RequestingAgentID.ToString())) m_Cache.Remove("memberships-" + RequestingAgentID.ToString()); } return group.GroupID; }
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName, GroupRecordDelegate d) { //if (GroupID == UUID.Zero && (GroupName == null || GroupName != null && GroupName == string.Empty)) // return null; object group = null; bool firstCall = false; string cacheKey = "group-"; if (GroupID != UUID.Zero) cacheKey += GroupID.ToString(); else cacheKey += GroupName; //m_log.DebugFormat("[XXX]: GetGroupRecord {0}", cacheKey); while (true) { lock (m_Cache) { if (m_Cache.TryGetValue(cacheKey, out group)) { //m_log.DebugFormat("[XXX]: GetGroupRecord {0} cached!", cacheKey); return (ExtendedGroupRecord)group; } // not cached if (!m_ActiveRequests.ContainsKey(cacheKey)) { m_ActiveRequests.Add(cacheKey, true); firstCall = true; } } if (firstCall) { try { //group = m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID, GroupName); group = d(); lock (m_Cache) { m_Cache.AddOrUpdate(cacheKey, group, GROUPS_CACHE_TIMEOUT); return (ExtendedGroupRecord)group; } } finally { m_ActiveRequests.Remove(cacheKey); } } else Thread.Sleep(50); } }
public bool UpdateGroup(UUID groupID, GroupRecordDelegate d) { //reason = string.Empty; //ExtendedGroupRecord group = m_GroupsService.UpdateGroup(RequestingAgentID, groupID, charter, showInList, insigniaID, membershipFee, openEnrollment, allowPublish, maturePublish); ExtendedGroupRecord group = d(); if (group != null && group.GroupID != UUID.Zero) lock (m_Cache) m_Cache.AddOrUpdate("group-" + group.GroupID.ToString(), group, GROUPS_CACHE_TIMEOUT); return true; }
public ExtendedGroupRecord GetGroupRecord(string RequestingAgentID, UUID GroupID, string GroupName, GroupRecordDelegate d) { //if (GroupID == UUID.Zero && (GroupName == null || GroupName != null && GroupName == string.Empty)) // return null; object group = null; bool firstCall = false; string cacheKey = "group-"; if (GroupID != UUID.Zero) { cacheKey += GroupID.ToString(); } else { cacheKey += GroupName; } //m_log.DebugFormat("[XXX]: GetGroupRecord {0}", cacheKey); while (true) { lock (m_Cache) { if (m_Cache.TryGetValue(cacheKey, out group)) { //m_log.DebugFormat("[XXX]: GetGroupRecord {0} cached!", cacheKey); return((ExtendedGroupRecord)group); } // not cached if (!m_ActiveRequests.ContainsKey(cacheKey)) { m_ActiveRequests.Add(cacheKey, true); firstCall = true; } } if (firstCall) { //group = m_GroupsService.GetGroupRecord(RequestingAgentID, GroupID, GroupName); group = d(); lock (m_Cache) { m_Cache.AddOrUpdate(cacheKey, group, GROUPS_CACHE_TIMEOUT); m_ActiveRequests.Remove(cacheKey); return((ExtendedGroupRecord)group); } } else { Thread.Sleep(50); } } }