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));
            }
        }
Beispiel #5
0
 public MySQLTravelingDataService(IConfig ownSection)
 {
     m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log);
 }
Beispiel #6
0
 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);
            }
        }
Beispiel #8
0
 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");
 }
Beispiel #10
0
            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);
                    }
                }
            }
Beispiel #11
0
            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);
                    }
                }
            }
Beispiel #12
0
 public MySQLRegionDefaultFlagsService(IConfig ownSection)
 {
     m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log);
 }
Beispiel #13
0
 public MySQLInventoryTransferTransactionService(IConfig ownSection)
 {
     m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log);
 }
 public MySQLServerParamService(IConfig ownSection)
 {
     m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log);
 }
Beispiel #15
0
            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);
                }
            }
Beispiel #16
0
 public MySQLAuthInfoService(IConfig ownSection)
 {
     m_ConnectionString = MySQLUtilities.BuildConnectionString(ownSection, m_Log);
 }
Beispiel #17
0
        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);
 }
Beispiel #21
0
 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(',');
 }