byte[] ISimulationDataScriptStateStorageInterface.this[UUID regionID, UUID primID, UUID itemID] { get { byte[] state; if (!ScriptStates.TryGetValue(regionID, primID, itemID, out state)) { throw new KeyNotFoundException(); } return(state); } set { using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); var p = new Dictionary <string, object> { ["RegionID"] = regionID, ["PrimID"] = primID, ["ItemID"] = itemID, ["ScriptState"] = value }; MySQLUtilities.ReplaceInto(connection, "scriptstates", p); } } }
public MySQLSimulationDataStorage(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); m_WhiteListStorage = new MySQLSimulationDataParcelAccessListStorage(m_ConnectionString, "parcelaccesswhitelist"); m_BlackListStorage = new MySQLSimulationDataParcelAccessListStorage(m_ConnectionString, "parcelaccessblacklist"); m_LandpassListStorage = new MySQLSimulationDataParcelAccessListStorage(m_ConnectionString, "parcellandpasslist"); }
void ISimulationDataParcelStorageInterface.Store(UUID regionID, ParcelInfo parcel) { var p = new Dictionary <string, object> { ["RegionID"] = regionID, ["ParcelID"] = parcel.ID, ["LocalID"] = parcel.LocalID, ["Bitmap"] = parcel.LandBitmap.Data, ["BitmapWidth"] = parcel.LandBitmap.BitmapWidth, ["BitmapHeight"] = parcel.LandBitmap.BitmapHeight, ["Name"] = parcel.Name, ["Description"] = parcel.Description, ["Owner"] = parcel.Owner, ["IsGroupOwned"] = parcel.GroupOwned, ["Area"] = parcel.Area, ["AuctionID"] = parcel.AuctionID, ["AuthBuyer"] = parcel.AuthBuyer, ["Category"] = parcel.Category, ["ClaimDate"] = parcel.ClaimDate.AsULong, ["ClaimPrice"] = parcel.ClaimPrice, ["Group"] = parcel.Group, ["Flags"] = parcel.Flags, ["LandingType"] = parcel.LandingType, ["LandingPosition"] = parcel.LandingPosition, ["LandingLookAt"] = parcel.LandingLookAt, ["Status"] = parcel.Status, ["MusicURI"] = parcel.MusicURI, ["MediaURI"] = parcel.MediaURI, ["MediaType"] = parcel.MediaType, ["MediaWidth"] = parcel.MediaWidth, ["MediaHeight"] = parcel.MediaHeight, ["MediaID"] = parcel.MediaID, ["SnapshotID"] = parcel.SnapshotID, ["SalePrice"] = parcel.SalePrice, ["OtherCleanTime"] = parcel.OtherCleanTime, ["MediaAutoScale"] = parcel.MediaAutoScale, ["MediaDescription"] = parcel.MediaDescription, ["MediaLoop"] = parcel.MediaLoop, ["ObscureMedia"] = parcel.ObscureMedia, ["ObscureMusic"] = parcel.ObscureMusic, ["RentPrice"] = parcel.RentPrice, ["AABBMin"] = parcel.AABBMin, ["AABBMax"] = parcel.AABBMax, ["ParcelPrimBonus"] = parcel.ParcelPrimBonus, ["PassPrice"] = parcel.PassPrice, ["PassHours"] = parcel.PassHours, ["ActualArea"] = parcel.ActualArea, ["BillableArea"] = parcel.BillableArea, ["SeeAvatars"] = parcel.SeeAvatars, ["AnyAvatarSounds"] = parcel.AnyAvatarSounds, ["GroupAvatarSounds"] = parcel.GroupAvatarSounds, ["IsPrivate"] = parcel.IsPrivate }; using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); MySQLUtilities.ReplaceInto(connection, "parcels", p); } }
List <ObjectGroup> ISimulationDataObjectStorageInterface.this[UUID regionID] { get { var objGroups = new Dictionary <UUID, ObjectGroup>(); var originalAssetIDs = new Dictionary <UUID, UUID>(); var nextOwnerAssetIDs = new Dictionary <UUID, UUID>(); var objGroupParts = new Dictionary <UUID, SortedDictionary <int, ObjectPart> >(); var objPartIDs = new List <UUID>(); var objParts = new Dictionary <UUID, ObjectPart>(); var orphanedPrims = new List <UUID>(); var orphanedPrimInventories = new List <KeyValuePair <UUID, UUID> >(); using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); UUID objgroupID = UUID.Zero; m_Log.InfoFormat("Loading object groups for region ID {0}", regionID); using (var cmd = new MySqlCommand("SELECT * FROM objects WHERE RegionID = '" + regionID.ToString() + "'", connection)) { cmd.CommandTimeout = 3600; using (MySqlDataReader dbReader = cmd.ExecuteReader()) { while (dbReader.Read()) { try { objgroupID = MySQLUtilities.GetUUID(dbReader, "id"); originalAssetIDs[objgroupID] = dbReader.GetUUID("OriginalAssetID"); nextOwnerAssetIDs[objgroupID] = dbReader.GetUUID("NextOwnerAssetID"); objGroups[objgroupID] = ObjectGroupFromDbReader(dbReader); } catch (Exception e) { m_Log.WarnFormat("Failed to load object {0}: {1}\n{2}", objgroupID, e.Message, e.StackTrace); objGroups.Remove(objgroupID); } } } } m_Log.InfoFormat("Loading prims for region ID {0}", regionID); int primcount = 0; using (var cmd = new MySqlCommand("SELECT * FROM prims WHERE RegionID = '" + regionID.ToString() + "'", connection)) { cmd.CommandTimeout = 3600; using (MySqlDataReader dbReader = cmd.ExecuteReader()) { while (dbReader.Read()) { UUID rootPartID = dbReader.GetUUID("RootPartID"); if (objGroups.ContainsKey(rootPartID)) { if (!objGroupParts.ContainsKey(rootPartID)) { objGroupParts.Add(rootPartID, new SortedDictionary <int, ObjectPart>()); } ObjectPart objpart = ObjectPartFromDbReader(dbReader); objGroupParts[rootPartID].Add(objpart.LoadedLinkNumber, objpart); objPartIDs.Add(objpart.ID); objParts[objpart.ID] = objpart; if ((++primcount) % 5000 == 0) { m_Log.InfoFormat("Loading prims for region ID {0} - {1} loaded", regionID, primcount); } } else { m_Log.WarnFormat("deleting orphan prim in region ID {0}: {1}", regionID, dbReader.GetUUID("ID")); orphanedPrims.Add(dbReader.GetUUID("ID")); } } } } m_Log.InfoFormat("Loaded prims for region ID {0} - {1} loaded", regionID, primcount); int primitemcount = 0; m_Log.InfoFormat("Loading prim inventories for region ID {0}", regionID); using (var cmd = new MySqlCommand("SELECT * FROM primitems WHERE RegionID = '" + regionID.ToString() + "'", connection)) { cmd.CommandTimeout = 3600; using (MySqlDataReader dbReader = cmd.ExecuteReader()) { while (dbReader.Read()) { UUID partID = dbReader.GetUUID("PrimID"); ObjectPart part; if (objParts.TryGetValue(partID, out part)) { ObjectPartInventoryItem item = ObjectPartInventoryItemFromDbReader(dbReader); part.Inventory.Add(item.ID, item.Name, item); if ((++primitemcount) % 5000 == 0) { m_Log.InfoFormat("Loading prim inventories for region ID {0} - {1} loaded", regionID, primitemcount); } } else { m_Log.WarnFormat("deleting orphan prim inventory in region ID {0}: {1}", regionID, dbReader.GetUUID("InventoryID")); orphanedPrimInventories.Add(new KeyValuePair <UUID, UUID>(dbReader.GetUUID("PrimID"), dbReader.GetUUID("InventoryID"))); } } } } m_Log.InfoFormat("Loaded prim inventories for region ID {0} - {1} loaded", regionID, primitemcount); } var removeObjGroups = new List <UUID>(); foreach (KeyValuePair <UUID, ObjectGroup> kvp in objGroups) { if (!objGroupParts.ContainsKey(kvp.Key)) { removeObjGroups.Add(kvp.Key); } else { foreach (ObjectPart objpart in objGroupParts[kvp.Key].Values) { kvp.Value.Add(objpart.LoadedLinkNumber, objpart.ID, objpart); } try { kvp.Value.OriginalAssetID = originalAssetIDs[kvp.Value.ID]; kvp.Value.NextOwnerAssetID = nextOwnerAssetIDs[kvp.Value.ID]; kvp.Value.FinalizeObject(); } catch { m_Log.WarnFormat("deleting orphan object in region ID {0}: {1}", regionID, kvp.Key); removeObjGroups.Add(kvp.Key); } } } foreach (UUID objid in removeObjGroups) { objGroups.Remove(objid); } for (int idx = 0; idx < removeObjGroups.Count; idx += 256) { int elemcnt = Math.Min(removeObjGroups.Count - idx, 256); string sqlcmd = "DELETE FROM objects WHERE RegionID = '" + regionID.ToString() + "' AND ID IN (" + string.Join(",", from id in removeObjGroups.GetRange(idx, elemcnt) select "'" + id.ToString() + "'") + ")"; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand(sqlcmd, conn)) { cmd.ExecuteNonQuery(); } } } for (int idx = 0; idx < orphanedPrims.Count; idx += 256) { int elemcnt = Math.Min(orphanedPrims.Count - idx, 256); string sqlcmd = "DELETE FROM prims WHERE RegionID = '" + regionID.ToString() + "' AND ID IN (" + string.Join(",", from id in orphanedPrims.GetRange(idx, elemcnt) select "'" + id.ToString() + "'") + ")"; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand(sqlcmd, conn)) { cmd.ExecuteNonQuery(); } } } for (int idx = 0; idx < orphanedPrimInventories.Count; idx += 256) { int elemcnt = Math.Min(orphanedPrimInventories.Count - idx, 256); string sqlcmd = "DELETE FROM primitems WHERE RegionID = '" + regionID.ToString() + "' AND (" + string.Join(" OR ", from id in orphanedPrimInventories.GetRange(idx, elemcnt) select string.Format("(PrimID = '{0}' AND InventoryID = '{1}')", id.Key.ToString(), id.Value.ToString())) + ")"; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand(sqlcmd, conn)) { cmd.ExecuteNonQuery(); } } } return(new List <ObjectGroup>(objGroups.Values)); } }
public MySQLTravelingDataService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLGroupsNameService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public override void RegisterRegion(RegionInfo regionInfo, bool keepOnlineUnmodified) { foreach (RegionDefaultFlagsServiceInterface service in m_RegionDefaultServices) { regionInfo.Flags |= service.GetRegionDefaultFlags(regionInfo.ID); } using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); if (!m_AllowDuplicateRegionNames) { using (var cmd = new MySqlCommand("SELECT uuid FROM `" + MySqlHelper.EscapeString(m_TableName) + "` WHERE regionName = @name LIMIT 1", conn)) { cmd.Parameters.AddParameter("@name", regionInfo.Name); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (dbReader.Read() && dbReader.GetUUID("uuid") != regionInfo.ID) { throw new GridRegionUpdateFailedException("Duplicate region name"); } } } } if (keepOnlineUnmodified) { using (var cmd = new MySqlCommand("SELECT flags FROM `" + MySqlHelper.EscapeString(m_TableName) + "` WHERE uuid = @id LIMIT 1", conn)) { cmd.Parameters.AddParameter("@id", regionInfo.ID); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (dbReader.Read()) { RegionFlags flags = dbReader.GetEnum <RegionFlags>("flags"); regionInfo.Flags &= ~RegionFlags.RegionOnline; regionInfo.Flags |= (flags & RegionFlags.RegionOnline); } } } } /* we have to give checks for all intersection variants */ using (var cmd = new MySqlCommand("SELECT uuid FROM `" + MySqlHelper.EscapeString(m_TableName) + "` WHERE (" + "(locX >= @minx AND locY >= @miny AND locX < @maxx AND locY < @maxy) OR " + "(locX + sizeX > @minx AND locY+sizeY > @miny AND locX + sizeX < @maxx AND locY + sizeY < @maxy)" + ") AND (NOT uuid = @regionid) LIMIT 1", conn)) { cmd.Parameters.AddParameter("@min", regionInfo.Location); cmd.Parameters.AddParameter("@max", regionInfo.Location + regionInfo.Size); cmd.Parameters.AddParameter("@regionid", regionInfo.ID); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (dbReader.Read() && dbReader.GetUUID("uuid") != regionInfo.ID) { throw new GridRegionUpdateFailedException("Overlapping regions"); } } } var regionData = new Dictionary <string, object> { ["uuid"] = regionInfo.ID, ["regionName"] = regionInfo.Name, ["loc"] = regionInfo.Location, ["size"] = regionInfo.Size, ["regionName"] = regionInfo.Name, ["serverIP"] = regionInfo.ServerIP, ["serverHttpPort"] = regionInfo.ServerHttpPort, ["serverURI"] = regionInfo.ServerURI, ["serverPort"] = regionInfo.ServerPort, ["regionMapTexture"] = regionInfo.RegionMapTexture, ["parcelMapTexture"] = regionInfo.ParcelMapTexture, ["access"] = regionInfo.Access, ["regionSecret"] = regionInfo.RegionSecret, ["owner"] = regionInfo.Owner, ["AuthenticatingToken"] = regionInfo.AuthenticatingToken, ["AuthenticatingPrincipalID"] = regionInfo.AuthenticatingPrincipal, ["flags"] = regionInfo.Flags, ["ProductName"] = regionInfo.ProductName }; MySQLUtilities.ReplaceInto(conn, m_TableName, regionData); } }
public MySQLExperienceService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLGroupsService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); m_AvatarNameServiceNames = ownSection.GetString("AvatarNameServices", "AvatarNameStorage"); }
private void ProcessGroupUpdates(MySqlConnection conn) { var replaceInto1 = new StringBuilder(); var replaceInto2 = new StringBuilder(); bool replaceInto1Inited = false; var processedItems = new List <UUID>(); foreach (UUID k in m_GroupUpdates.Keys.ToArray()) { Dictionary <string, object> data = m_GroupUpdates[k]; if (!replaceInto1Inited) { replaceInto1Inited = true; replaceInto1.Append("REPLACE INTO objects ("); replaceInto1.Append(MySQLUtilities.GenerateFieldNames(data)); } if (replaceInto2.Length == 0) { replaceInto2.Append(") VALUES ("); } else { replaceInto2.Append("),("); } processedItems.Add(k); replaceInto2.Append(MySQLUtilities.GenerateValues(data)); if (processedItems.Count == 255) { var replaceInto = new StringBuilder(); replaceInto.Append(replaceInto1); replaceInto.Append(replaceInto2); replaceInto.Append(")"); using (var cmd = new MySqlCommand(replaceInto.ToString(), conn)) { cmd.ExecuteNonQuery(); } foreach (UUID r in processedItems) { m_GroupUpdates.Remove(r); } replaceInto2.Clear(); processedItems.Clear(); } } if (processedItems.Count > 0) { var replaceInto = new StringBuilder(); replaceInto.Append(replaceInto1); replaceInto.Append(replaceInto2); replaceInto.Append(")"); using (var cmd = new MySqlCommand(replaceInto.ToString(), conn)) { cmd.ExecuteNonQuery(); } foreach (UUID r in processedItems) { m_GroupUpdates.Remove(r); } } }
private void ProcessPrimItemUpdates(MySqlConnection conn) { var replaceInto1 = new StringBuilder(); var replaceInto2 = new StringBuilder(); bool replaceInto1Inited = false; var processedItems = new List <PrimKey>(); foreach (PrimKey k in m_PrimItemUpdates.Keys.ToArray()) { ObjectInventoryUpdateInfo update = m_PrimItemUpdates[k]; if (update.IsRemoved) { /* do not save removed data */ m_PrimItemUpdates.Remove(k); continue; } Dictionary <string, object> data = GenerateUpdateObjectPartInventoryItem(update.PartID, update.Item); data["RegionID"] = m_RegionID; if (!replaceInto1Inited) { replaceInto1Inited = true; replaceInto1.Append("REPLACE INTO primitems ("); replaceInto1.Append(MySQLUtilities.GenerateFieldNames(data)); } if (replaceInto2.Length == 0) { replaceInto2.Append(") VALUES ("); } else { replaceInto2.Append("),("); } processedItems.Add(k); replaceInto2.Append(MySQLUtilities.GenerateValues(data)); if (processedItems.Count == 255) { var replaceInto = new StringBuilder(); replaceInto.Append(replaceInto1); replaceInto.Append(replaceInto2); replaceInto.Append(")"); using (var cmd = new MySqlCommand(replaceInto.ToString(), conn)) { cmd.ExecuteNonQuery(); } foreach (PrimKey r in processedItems) { m_PrimItemUpdates.Remove(r); Interlocked.Increment(ref m_ProcessedPrims); } replaceInto2.Clear(); processedItems.Clear(); } } if (processedItems.Count > 0) { var replaceInto = new StringBuilder(); replaceInto.Append(replaceInto1); replaceInto.Append(replaceInto2); replaceInto.Append(")"); using (var cmd = new MySqlCommand(replaceInto.ToString(), conn)) { cmd.ExecuteNonQuery(); } foreach (PrimKey r in processedItems) { m_PrimItemUpdates.Remove(r); Interlocked.Increment(ref m_ProcessedPrims); } } }
public MySQLRegionDefaultFlagsService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLInventoryTransferTransactionService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLServerParamService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
protected override void StorageTerrainThread() { try { m_TerrainListenerThreads.Add(this); Thread.CurrentThread.Name = "Storage Terrain Thread: " + RegionID.ToString(); var knownSerialNumbers = new C5.TreeDictionary <uint, uint>(); string replaceIntoTerrain = string.Empty; var updateRequests = new List <string>(); while (!m_StopStorageThread || m_StorageTerrainRequestQueue.Count != 0) { LayerPatch req; try { req = m_StorageTerrainRequestQueue.Dequeue(1000); } catch { continue; } uint serialNumber = req.Serial; if (!knownSerialNumbers.Contains(req.ExtendedPatchID) || knownSerialNumbers[req.ExtendedPatchID] != req.Serial) { var data = new Dictionary <string, object> { ["RegionID"] = RegionID, ["PatchID"] = req.ExtendedPatchID, ["TerrainData"] = req.Serialization }; if (replaceIntoTerrain.Length == 0) { replaceIntoTerrain = "REPLACE INTO terrains (" + MySQLUtilities.GenerateFieldNames(data) + ") VALUES "; } updateRequests.Add("(" + MySQLUtilities.GenerateValues(data) + ")"); knownSerialNumbers[req.ExtendedPatchID] = serialNumber; } if ((m_StorageTerrainRequestQueue.Count == 0 && updateRequests.Count > 0) || updateRequests.Count >= 256) { string elems = string.Join(",", updateRequests); try { using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand(replaceIntoTerrain + elems, conn)) { cmd.ExecuteNonQuery(); } } updateRequests.Clear(); Interlocked.Increment(ref m_ProcessedPatches); } catch (Exception e) { m_Log.Error("Terrain store failed", e); } } } } finally { m_TerrainListenerThreads.Remove(this); } }
public MySQLAuthInfoService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLInventoryService(IConfig ownSection) { m_InventoryItemTable = ownSection.GetString("ItemTable", "inventoryitems"); m_InventoryFolderTable = ownSection.GetString("FolderTable", "inventoryfolders"); m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); m_ContentService = new DefaultInventoryFolderContentService(this); /* renaming of tables for NPCs required so creating those on the fly */ Migrations = new IMigrationElement[] { new SqlTable(m_InventoryFolderTable), new AddColumn <UUID>("ID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <UUID>("ParentFolderID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <UUID>("OwnerID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <string>("Name") { Cardinality = 64, IsNullAllowed = false, Default = string.Empty }, new AddColumn <InventoryType>("InventoryType") { IsNullAllowed = false, Default = InventoryType.Unknown }, new AddColumn <int>("Version") { IsNullAllowed = false, Default = 0 }, new PrimaryKeyInfo("ID"), new NamedKeyInfo("inventoryfolders_owner_index", "OwnerID"), new NamedKeyInfo("inventoryfolders_owner_folderid", "OwnerID", "ParentFolderID"), new NamedKeyInfo("inventoryfolders_owner_type", "OwnerID", "InventoryType"), new TableRevision(2), new ChangeColumn <AssetType>("DefaultType") { IsNullAllowed = false, Default = AssetType.Unknown, OldName = "InventoryType" }, new SqlTable(m_InventoryItemTable), new AddColumn <UUID>("ID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <UUID>("ParentFolderID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <string>("Name") { Cardinality = 64, IsNullAllowed = false, Default = string.Empty }, new AddColumn <string>("Description") { Cardinality = 128, IsNullAllowed = false, Default = string.Empty }, new AddColumn <InventoryType>("InventoryType") { IsNullAllowed = false, Default = InventoryType.Unknown }, new AddColumn <InventoryFlags>("Flags") { IsNullAllowed = false, Default = InventoryFlags.None }, new AddColumn <UUID>("OwnerID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <UUID>("LastOwnerID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <UUID>("CreatorID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <Date>("CreationDate") { IsNullAllowed = false, Default = Date.UnixTimeToDateTime(0) }, new AddColumn <InventoryPermissionsMask>("BasePermissionsMask") { IsNullAllowed = false, Default = InventoryPermissionsMask.None }, new AddColumn <InventoryPermissionsMask>("CurrentPermissionsMask") { IsNullAllowed = false, Default = InventoryPermissionsMask.None }, new AddColumn <InventoryPermissionsMask>("EveryOnePermissionsMask") { IsNullAllowed = false, Default = InventoryPermissionsMask.None }, new AddColumn <InventoryPermissionsMask>("NextOwnerPermissionsMask") { IsNullAllowed = false, Default = InventoryPermissionsMask.None }, new AddColumn <InventoryPermissionsMask>("GroupPermissionsMask") { IsNullAllowed = false, Default = InventoryPermissionsMask.None }, new AddColumn <int>("SalePrice") { IsNullAllowed = false, Default = 10 }, new AddColumn <InventoryItem.SaleInfoData.SaleType>("SaleType") { IsNullAllowed = false, Default = InventoryItem.SaleInfoData.SaleType.NoSale }, new AddColumn <InventoryPermissionsMask>("SalePermissionsMask") { IsNullAllowed = false, Default = InventoryPermissionsMask.None }, new AddColumn <UUID>("GroupID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <bool>("IsGroupOwned") { IsNullAllowed = false, Default = false }, new AddColumn <UUID>("AssetID") { IsNullAllowed = false, Default = UUID.Zero }, new AddColumn <AssetType>("AssetType") { IsNullAllowed = false, Default = AssetType.Unknown }, new PrimaryKeyInfo("ID"), new NamedKeyInfo("inventoryitems_OwnerID", "OwnerID"), new NamedKeyInfo("inventoryitems_OwnerID_ID", "OwnerID", "ID"), new NamedKeyInfo("inventoryitems_OwnerID_ParentFolderID", "OwnerID", "ParentFolderID"), new TableRevision(2), /* necessary boolean correction */ new ChangeColumn <bool>("IsGroupOwned") { IsNullAllowed = false, Default = false }, }; }
public MySQLMuteListService(IConfig ownConfig) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownConfig, m_Log); }
public MySQLOfflineIMService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLUserAccountService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); }
public MySQLAssetService(ConfigurationLoader loader, IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); m_ConfigurationIssues = loader.KnownConfigurationIssues; m_ReferencesService = new MySQLAssetReferencesService(this); }
public MySQLGridService(IConfig ownSection) { m_UseRegionDefaultServices = ownSection.GetBoolean("UseRegionDefaultServices", true); m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); m_TableName = ownSection.GetString("TableName", "regions"); }
public MySQLFriendsService(IConfig ownSection) { m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log); m_AvatarNameServiceNames = ownSection.GetString("AvatarNameServices", string.Empty).Split(','); }