bool IAssetMetadataServiceInterface.TryGetValue(UUID key, out AssetMetadata metadata) { using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT * FROM assetrefs WHERE id=@id LIMIT 1", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (dbReader.Read()) { metadata = new AssetMetadata { ID = dbReader.GetUUID("id"), Type = dbReader.GetEnum <AssetType>("assetType"), Name = dbReader.GetString("name"), CreateTime = dbReader.GetDate("create_time"), AccessTime = dbReader.GetDate("access_time"), Flags = dbReader.GetEnum <AssetFlags>("asset_flags"), Temporary = dbReader.GetBool("temporary") }; return(true); } } } } metadata = null; return(false); }
public static InventoryItem ToItem(this MySqlDataReader reader) { var item = new InventoryItem(reader.GetUUID("ID")) { ParentFolderID = reader.GetUUID("ParentFolderID"), Name = reader.GetString("Name"), Description = reader.GetString("Description"), InventoryType = reader.GetEnum <InventoryType>("InventoryType"), Flags = reader.GetEnum <InventoryFlags>("Flags"), CreationDate = reader.GetDate("CreationDate"), IsGroupOwned = reader.GetBool("IsGroupOwned"), AssetID = reader.GetUUID("AssetID"), AssetType = reader.GetEnum <AssetType>("AssetType"), Owner = reader.GetUGUI("OwnerID"), LastOwner = reader.GetUGUI("LastOwnerID"), Creator = reader.GetUGUI("CreatorID"), Group = new UGI(reader.GetUUID("GroupID")) }; item.Permissions.Base = reader.GetEnum <InventoryPermissionsMask>("BasePermissionsMask"); item.Permissions.Current = reader.GetEnum <InventoryPermissionsMask>("CurrentPermissionsMask"); item.Permissions.EveryOne = reader.GetEnum <InventoryPermissionsMask>("EveryOnePermissionsMask"); item.Permissions.NextOwner = reader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissionsMask"); item.Permissions.Group = reader.GetEnum <InventoryPermissionsMask>("GroupPermissionsMask"); item.SaleInfo.Price = reader.GetInt32("SalePrice"); item.SaleInfo.Type = reader.GetEnum <InventoryItem.SaleInfoData.SaleType>("SaleType"); item.SaleInfo.PermMask = reader.GetEnum <InventoryPermissionsMask>("SalePermissionsMask"); return(item); }
public override List <MuteListEntry> GetList(UUID muteListOwnerID) { var res = new List <MuteListEntry>(); using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT * FROM mutelists WHERE agentID = @agentid", conn)) { cmd.Parameters.AddParameter("@agentid", muteListOwnerID); using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { res.Add(new MuteListEntry { Flags = reader.GetEnum <MuteFlags>("flags"), Type = reader.GetEnum <MuteType>("type"), MuteID = reader.GetUUID("muteID"), MuteName = reader.GetString("muteName") }); } } } } return(res); }
public static FriendInfo ToFriendInfo(this MySqlDataReader reader) { var fi = new FriendInfo(); fi.User.ID = reader.GetUUID("UserID"); fi.Friend.ID = reader.GetUUID("FriendID"); fi.Secret = reader.GetString("Secret"); fi.FriendGivenFlags = reader.GetEnum <FriendRightFlags>("RightsToFriend"); fi.UserGivenFlags = reader.GetEnum <FriendRightFlags>("RightsToUser"); return(fi); }
void IInventoryItemServiceInterface.Update(InventoryItem item) { using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); InventoryFlags flags; AssetType assetType; UUID assetID; connection.InsideTransaction((transaction) => { using (var cmd = new MySqlCommand("SELECT `AssetID`, `Flags`,`AssetType` FROM " + m_InventoryItemTable + " WHERE OwnerID = @ownerid AND ID = @itemid LIMIT 1", connection) { Transaction = transaction }) { cmd.Parameters.AddParameter("@ownerid", item.Owner.ID); cmd.Parameters.AddParameter("@itemid", item.ID); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { throw new InventoryItemNotFoundException(item.ID); } assetID = dbReader.GetUUID("AssetID"); flags = dbReader.GetEnum <InventoryFlags>("Flags") & InventoryFlags.PermOverwriteMask; assetType = dbReader.GetEnum <AssetType>("AssetType"); } } if (assetType != AssetType.Object || assetID != item.AssetID) { flags = InventoryFlags.None; } var newVals = new Dictionary <string, object> { ["AssetID"] = item.AssetID, ["Name"] = item.Name, ["Description"] = item.Description, ["BasePermissionsMask"] = item.Permissions.Base, ["CurrentPermissionsMask"] = item.Permissions.Current, ["EveryOnePermissionsMask"] = item.Permissions.EveryOne, ["NextOwnerPermissionsMask"] = item.Permissions.NextOwner, ["GroupPermissionsMask"] = item.Permissions.Group, ["SalePrice"] = item.SaleInfo.Price, ["SaleType"] = item.SaleInfo.Type, ["Flags"] = item.Flags | flags }; connection.UpdateSet(m_InventoryItemTable, newVals, string.Format("OwnerID = '{0}' AND ID = '{1}'", item.Owner.ID, item.ID), transaction); }); } IncrementVersion(item.Owner.ID, item.ParentFolderID); }
public static ExperienceInfo ToExperienceInfo(this MySqlDataReader reader) => new ExperienceInfo { ID = new UEI(reader.GetUUID("ID"), reader.GetString("Name"), reader.GetUri("HomeURI")), Description = reader.GetString("Description"), Properties = reader.GetEnum <ExperiencePropertyFlags>("Properties"), Owner = reader.GetUGUI("Owner"), Creator = reader.GetUGUI("Creator"), Group = reader.GetUGI("Group"), Maturity = reader.GetEnum <RegionAccess>("Maturity"), Marketplace = reader.GetString("Marketplace"), LogoID = reader.GetUUID("LogoID"), SlUrl = reader.GetString("SlUrl") };
public override GroupPowers GetAgentPowers(UGI group, UGUI agent) { if (!Members.ContainsKey(agent, group, agent)) { return(GroupPowers.None); } GroupPowers powers; if (!TryGetGroupRoleRights(agent, group, UUID.Zero, out powers)) { return(GroupPowers.None); } using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand( "SELECT Powers FROM roles AS r INNER JOIN " + "((grouprolemembers AS rm INNER JOIN groupmembers AS m ON rm.GroupID = m.GroupID AND rm.PrincipalID = m.PrincipalID) ON " + "r.RoleID = rm.RoleID WHERE rm.GroupID = @groupid AND rm.PrincipalID = @principalid", conn)) { cmd.Parameters.AddParameter("@groupid", group.ID); cmd.Parameters.AddParameter("@principalid", agent.ID); using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { powers |= reader.GetEnum <GroupPowers>("Powers"); } } } } return(powers); }
public static GroupRolemember ToGroupRolemember(this MySqlDataReader reader) => new GroupRolemember() { Group = new UGI(reader.GetUUID("GroupID")), RoleID = reader.GetUUID("RoleID"), Principal = new UUI(reader.GetUUID("PrincipalID")), Powers = reader.GetEnum <GroupPowers>("Powers") };
public override bool TryGetValue(UUID userid, UUID dstTransactionID, out InventoryTransferInfo info) { info = null; using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM inventorytransfertransactions WHERE dsttransactionid = @transactionid AND dstagentid LIKE @userid", connection)) { cmd.Parameters.AddParameter("@transactionid", dstTransactionID); cmd.Parameters.AddParameter("@userid", userid + "%"); using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { info = new InventoryTransferInfo { SrcAgent = reader.GetUGUI("srcagentid"), DstAgent = reader.GetUGUI("dstagentid"), SrcTransactionID = reader.GetUUID("srctransactionid"), DstTransactionID = reader.GetUUID("dsttransactionid"), AssetType = reader.GetEnum <AssetType>("assettype"), InventoryID = reader.GetUUID("inventoryid") }; } } } } return(info != null); }
public static GroupRolemembership ToGroupRolemembership(this MySqlDataReader reader) => new GroupRolemembership { Group = new UGI(reader.GetUUID("GroupID")), RoleID = reader.GetUUID("RoleID"), Principal = reader.GetUGUI("PrincipalID"), Powers = reader.GetEnum <GroupPowers>("Powers"), GroupTitle = reader.GetString("Title") };
public static InventoryFolder ToFolder(this MySqlDataReader reader) => new InventoryFolder(reader.GetUUID("ID")) { ParentFolderID = reader.GetUUID("ParentFolderID"), Name = reader.GetString("Name"), DefaultType = reader.GetEnum <AssetType>("DefaultType"), Owner = reader.GetUGUI("OwnerID"), Version = reader.GetInt32("Version") };
private ObjectGroup ObjectGroupFromDbReader(MySqlDataReader dbReader) => new ObjectGroup() { IsTempOnRez = dbReader.GetBool("IsTempOnRez"), Owner = dbReader.GetUUI("Owner"), LastOwner = dbReader.GetUUI("LastOwner"), Group = dbReader.GetUGI("Group"), SaleType = dbReader.GetEnum <InventoryItem.SaleInfoData.SaleType>("SaleType"), SalePrice = dbReader.GetInt32("SalePrice"), PayPrice0 = dbReader.GetInt32("PayPrice0"), PayPrice1 = dbReader.GetInt32("PayPrice1"), PayPrice2 = dbReader.GetInt32("PayPrice2"), PayPrice3 = dbReader.GetInt32("PayPrice3"), PayPrice4 = dbReader.GetInt32("PayPrice4"), AttachedPos = dbReader.GetVector3("AttachedPos"), AttachPoint = dbReader.GetEnum <AttachmentPoint>("AttachPoint"), IsIncludedInSearch = dbReader.GetBool("IsIncludedInSearch"), RezzingObjectID = dbReader.GetUUID("RezzingObjectID") };
public override bool TryGetValue(UUID key, out AssetMetadata metadata, out int length) { metadata = null; length = 0; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT id, LENGTH(data) AS dataLength, assetrefs.assetType, name, create_time, access_time, asset_flags, temporary FROM assetrefs INNER JOIN assetdata ON assetrefs.hash = assetdata.hash AND assetrefs.assetType = assetdata.assetType WHERE id = @id LIMIT 1", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { return(false); } metadata = new AssetMetadata { ID = dbReader.GetUUID("id"), Type = dbReader.GetEnum <AssetType>("assetType"), Name = dbReader.GetString("name"), CreateTime = dbReader.GetDate("create_time"), AccessTime = dbReader.GetDate("access_time"), Flags = dbReader.GetEnum <AssetFlags>("asset_flags"), Temporary = dbReader.GetBool("temporary") }; length = dbReader.GetInt32("dataLength"); } } if (DateTime.UtcNow - metadata.AccessTime > TimeSpan.FromHours(1)) { /* update access_time */ using (var cmd = new MySqlCommand("UPDATE assetrefs SET access_time = @access WHERE id = @id", conn)) { cmd.Parameters.AddWithValue("@access", Date.GetUnixTime()); cmd.Parameters.AddWithValue("@id", key); cmd.ExecuteNonQuery(); } } return(true); } }
private RegionInfo ToRegionInfo(MySqlDataReader dbReader) => new RegionInfo { ID = dbReader.GetUUID("uuid"), Name = dbReader.GetString("regionName"), RegionSecret = dbReader.GetString("regionSecret"), ServerIP = dbReader.GetString("serverIP"), ServerPort = dbReader.GetUInt32("serverPort"), ServerURI = dbReader.GetString("serverURI"), Location = dbReader.GetGridVector("loc"), RegionMapTexture = dbReader.GetUUID("regionMapTexture"), ServerHttpPort = dbReader.GetUInt32("serverHttpPort"), Owner = dbReader.GetUGUI("owner"), Access = dbReader.GetEnum <RegionAccess>("access"), Size = dbReader.GetGridVector("size"), Flags = dbReader.GetEnum <RegionFlags>("flags"), AuthenticatingToken = dbReader.GetString("AuthenticatingToken"), AuthenticatingPrincipal = dbReader.GetUGUI("AuthenticatingPrincipalID"), ParcelMapTexture = dbReader.GetUUID("parcelMapTexture"), ProductName = dbReader.GetString("ProductName") };
public override bool TryGetValue(UUID key, out AssetData asset) { asset = null; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT * FROM assetrefs INNER JOIN assetdata ON assetrefs.hash = assetdata.hash AND assetrefs.assetType = assetdata.assetType WHERE id = @id", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { return(false); } asset = new AssetData() { ID = dbReader.GetUUID("id"), Data = dbReader.GetBytes("data"), Type = dbReader.GetEnum <AssetType>("assetType"), Name = dbReader.GetString("name"), CreateTime = dbReader.GetDate("create_time"), AccessTime = dbReader.GetDate("access_time"), Flags = dbReader.GetEnum <AssetFlags>("asset_flags"), Temporary = dbReader.GetBool("temporary") }; } } if (DateTime.UtcNow - asset.AccessTime > TimeSpan.FromHours(1)) { /* update access_time */ using (var cmd = new MySqlCommand("UPDATE assetrefs SET access_time = @access WHERE id = @id", conn)) { cmd.Parameters.AddWithValue("@access", Date.GetUnixTime()); cmd.Parameters.AddWithValue("@id", key); cmd.ExecuteNonQuery(); } } return(true); } }
public static UserAccount ToUserAccount(this MySqlDataReader reader, Uri homeURI) { var info = new UserAccount(); string gkUri; UserRegionData regData; info.Principal.ID = reader.GetUUID("ID"); info.Principal.FirstName = reader.GetString("FirstName"); info.Principal.LastName = reader.GetString("LastName"); info.Principal.HomeURI = homeURI; info.Principal.IsAuthoritative = true; info.Email = reader.GetString("Email"); info.Created = reader.GetDate("Created"); info.UserLevel = reader.GetInt32("UserLevel"); info.UserFlags = reader.GetEnum <UserFlags>("UserFlags"); info.UserTitle = reader.GetString("UserTitle"); info.IsLocalToGrid = true; info.IsEverLoggedIn = reader.GetBool("IsEverLoggedIn"); gkUri = reader.GetString("LastGatekeeperURI"); regData = new UserRegionData { RegionID = reader.GetUUID("LastRegionID"), Position = reader.GetVector3("LastPosition"), LookAt = reader.GetVector3("LastLookAt"), }; if (!string.IsNullOrEmpty(gkUri)) { regData.GatekeeperURI = new URI(gkUri); } if (regData.RegionID != UUID.Zero) { info.LastRegion = regData; } gkUri = reader.GetString("HomeGatekeeperURI"); regData = new UserRegionData { RegionID = reader.GetUUID("HomeRegionID"), Position = reader.GetVector3("HomePosition"), LookAt = reader.GetVector3("HomeLookAt"), }; if (!string.IsNullOrEmpty(gkUri)) { regData.GatekeeperURI = new URI(gkUri); } if (regData.RegionID != UUID.Zero) { info.HomeRegion = regData; } return(info); }
public static GroupNotice ToGroupNotice(this MySqlDataReader reader) => new GroupNotice() { Group = new UGI(reader.GetUUID("GroupID")), ID = reader.GetUUID("NoticeID"), Timestamp = reader.GetDate("Timestamp"), FromName = reader.GetString("FromName"), Subject = reader.GetString("Subject"), Message = reader.GetString("Message"), HasAttachment = reader.GetBool("HasAttachment"), AttachmentType = reader.GetEnum <AssetType>("AttachmentType"), AttachmentName = reader.GetString("AttachmentName"), AttachmentItemID = reader.GetUUID("AttachmentItemID"), AttachmentOwner = new UUI(reader.GetUUID("AttachmentOwnerID")) };
public static EstateInfo ToEstateInfo(this MySqlDataReader reader) => new EstateInfo { ID = reader.GetUInt32("ID"), Name = reader.GetString("Name"), Owner = reader.GetUGUI("Owner"), Flags = reader.GetEnum <RegionOptionFlags>("Flags"), PricePerMeter = reader.GetInt32("PricePerMeter"), BillableFactor = reader.GetDouble("BillableFactor"), SunPosition = reader.GetDouble("SunPosition"), AbuseEmail = reader.GetString("AbuseEmail"), CovenantID = reader.GetUUID("CovenantID"), CovenantTimestamp = reader.GetDate("CovenantTimestamp"), UseGlobalTime = reader.GetBool("UseGlobalTime"), ParentEstateID = reader.GetUInt32("ParentEstateID") };
private NpcPresenceInfo ReaderToPresenceInfo(MySqlDataReader reader) => new NpcPresenceInfo { Npc = new UGUIWithName { ID = reader.GetUUID("NpcID"), FirstName = reader.GetString("FirstName"), LastName = reader.GetString("LastName") }, Owner = reader.GetUGUI("Owner"), Group = reader.GetUGI("Group"), Options = reader.GetEnum <NpcOptions>("Options"), RegionID = reader.GetUUID("RegionID"), Position = reader.GetVector3("Position"), LookAt = reader.GetVector3("LookAt"), SittingOnObjectID = reader.GetUUID("SittingOnObjectID") };
public override Dictionary <UUID, RegionFlags> GetAllRegionDefaultFlags() { var result = new Dictionary <UUID, RegionFlags>(); using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM regiondefaults", connection)) { using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { result.Add(reader.GetUUID("uuid"), reader.GetEnum <RegionFlags>("flags")); } } } } return(result); }
public override RegionFlags GetRegionDefaultFlags(UUID regionId) { var flags = RegionFlags.None; using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT flags FROM regiondefaults WHERE uuid = @id LIMIT 1", connection)) { cmd.Parameters.AddParameter("@id", regionId); using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { flags = reader.GetEnum <RegionFlags>("flags"); } } } } return(flags); }
private GroupMembership MembershipFromReader(MySqlDataReader reader, UUI requestingAgent) => new GroupMembership() { IsAcceptNotices = reader.GetBool("AcceptNotices"), Contribution = reader.GetInt32("Contribution"), GroupInsigniaID = reader.GetUUID("InsigniaID"), GroupPowers = reader.GetEnum <GroupPowers>("RolePowers"), GroupTitle = reader.GetString("RoleTitle"), IsListInProfile = reader.GetBool("ListInProfile"), Group = ResolveName(requestingAgent, new UGI(reader.GetUUID("GroupID"))), Principal = ResolveName(new UUI(reader.GetUUID("PrincipalID"))), IsAllowPublish = reader.GetBool("AllowPublish"), Charter = reader.GetString("Charter"), ActiveRoleID = reader.GetUUID("ActiveRoleID"), Founder = ResolveName(new UUI(reader.GetUUID("FounderID"))), AccessToken = reader.GetString("AccessToken"), IsMaturePublish = reader.GetBool("MaturePublish"), IsOpenEnrollment = reader.GetBool("OpenEnrollment"), MembershipFee = reader.GetInt32("MembershipFee"), IsShownInList = reader.GetBool("ShowInList") };
private bool TryGetGroupRoleRights(UGUI requestingAgent, UGI group, UUID roleID, out GroupPowers powers) { powers = GroupPowers.None; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT Powers FROM grouproles AS r WHERE r.GroupID = @groupid AND r.RoleID = @grouproleid LIMIT 1", conn)) { cmd.Parameters.AddParameter("@groupid", group.ID); cmd.Parameters.AddParameter("@grouproleid", roleID); using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { powers = reader.GetEnum <GroupPowers>("Powers"); return(true); } } } } return(false); }
public override List <GridInstantMessage> GetOfflineIMs(UUID principalID) { var ims = new List <GridInstantMessage>(); using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM offlineim WHERE ToAgentID = @id", connection)) { cmd.Parameters.AddParameter("@id", principalID); using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { var im = new GridInstantMessage() { ID = reader.GetUInt64("ID"), FromAgent = reader.GetUUI("FromAgent"), FromGroup = reader.GetUGI("FromGroup"), ToAgent = new UUI(reader.GetUUID("ToAgentID")), Dialog = reader.GetEnum <GridInstantMessageDialog>("Dialog"), IsFromGroup = reader.GetBool("IsFromGroup"), Message = reader.GetString("Message"), IMSessionID = reader.GetUUID("IMSessionID"), Position = reader.GetVector3("Position"), BinaryBucket = reader.GetBytes("BinaryBucket"), ParentEstateID = reader.GetUInt32("ParentEstateID"), RegionID = reader.GetUUID("RegionID"), Timestamp = reader.GetDate("Timestamp"), IsOffline = true }; ims.Add(im); } } } } return(ims); }
public static GroupRole ToGroupRole(this MySqlDataReader reader, string prefix = "") { var role = new GroupRole() { Group = new UGI(reader.GetUUID("GroupID")), ID = reader.GetUUID("RoleID"), Name = reader.GetString(prefix + "Name"), Description = reader.GetString(prefix + "Description"), Title = reader.GetString(prefix + "Title"), Powers = reader.GetEnum <GroupPowers>(prefix + "Powers") }; if (role.ID == UUID.Zero) { role.Members = reader.GetUInt32("GroupMembers"); } else { role.Members = reader.GetUInt32("RoleMembers"); } return(role); }
private ObjectPart ObjectPartFromDbReader(MySqlDataReader dbReader) { var objpart = new ObjectPart(dbReader.GetUUID("ID")) { LoadedLinkNumber = dbReader.GetInt32("LinkNumber"), Position = dbReader.GetVector3("Position"), Rotation = dbReader.GetQuaternion("Rotation"), SitText = dbReader.GetString("SitText"), TouchText = dbReader.GetString("TouchText"), Name = dbReader.GetString("Name"), Description = dbReader.GetString("Description"), SitTargetOffset = dbReader.GetVector3("SitTargetOffset"), SitTargetOrientation = dbReader.GetQuaternion("SitTargetOrientation"), Creator = dbReader.GetUUI("Creator"), CreationDate = dbReader.GetDate("CreationDate"), RezDate = dbReader.GetDate("RezDate"), Flags = dbReader.GetEnum <PrimitiveFlags>("Flags"), CameraAtOffset = dbReader.GetVector3("CameraAtOffset"), CameraEyeOffset = dbReader.GetVector3("CameraEyeOffset"), PhysicsShapeType = dbReader.GetEnum <PrimitivePhysicsShapeType>("PhysicsShapeType"), PathfindingType = dbReader.GetEnum <PathfindingType>("PathfindingType"), WalkableCoefficientAvatar = dbReader.GetDouble("WalkableCoefficientAvatar"), WalkableCoefficientA = dbReader.GetDouble("WalkableCoefficientA"), WalkableCoefficientB = dbReader.GetDouble("WalkableCoefficientB"), WalkableCoefficientC = dbReader.GetDouble("WalkableCoefficientC"), WalkableCoefficientD = dbReader.GetDouble("WalkableCoefficientD"), Material = dbReader.GetEnum <PrimitiveMaterial>("Material"), Size = dbReader.GetVector3("Size"), Slice = dbReader.GetVector3("Slice"), MediaURL = dbReader.GetString("MediaURL"), AngularVelocity = dbReader.GetVector3("AngularVelocity"), PointLight = new ObjectPart.PointLightParam { DbSerialization = dbReader.GetBytes("LightData") }, Projection = new ObjectPart.ProjectionParam { DbSerialization = dbReader.GetBytes("ProjectionData") }, Text = new ObjectPart.TextParam { Serialization = dbReader.GetBytes("HoverTextData") }, Flexible = new ObjectPart.FlexibleParam { DbSerialization = dbReader.GetBytes("FlexibleData") }, Sound = new ObjectPart.SoundParam { Serialization = dbReader.GetBytes("LoopedSoundData") }, CollisionSound = new ObjectPart.CollisionSoundParam { Serialization = dbReader.GetBytes("ImpactSoundData") }, Shape = new ObjectPart.PrimitiveShape { Serialization = dbReader.GetBytes("PrimitiveShapeData") }, ParticleSystemBytes = dbReader.GetBytes("ParticleSystem"), TextureEntryBytes = dbReader.GetBytes("TextureEntryBytes"), TextureAnimationBytes = dbReader.GetBytes("TextureAnimationBytes"), ScriptAccessPin = dbReader.GetInt32("ScriptAccessPin"), ForceMouselook = dbReader.GetBoolean("ForceMouselook"), BaseMask = dbReader.GetEnum <InventoryPermissionsMask>("BasePermissions"), OwnerMask = dbReader.GetEnum <InventoryPermissionsMask>("CurrentPermissions"), EveryoneMask = dbReader.GetEnum <InventoryPermissionsMask>("EveryOnePermissions"), GroupMask = dbReader.GetEnum <InventoryPermissionsMask>("GroupPermissions"), NextOwnerMask = dbReader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissions"), ClickAction = dbReader.GetEnum <ClickActionType>("ClickAction"), PassCollisionMode = dbReader.GetEnum <PassEventMode>("PassCollisionMode"), PassTouchMode = dbReader.GetEnum <PassEventMode>("PassTouchMode"), Velocity = dbReader.GetVector3("Velocity"), IsSoundQueueing = dbReader.GetBool("IsSoundQueueing"), IsAllowedDrop = dbReader.GetBool("IsAllowedDrop"), PhysicsDensity = dbReader.GetDouble("PhysicsDensity"), PhysicsFriction = dbReader.GetDouble("PhysicsFriction"), PhysicsRestitution = dbReader.GetDouble("PhysicsRestitution"), PhysicsGravityMultiplier = dbReader.GetDouble("PhysicsGravityMultiplier"), IsVolumeDetect = dbReader.GetBool("IsVolumeDetect"), IsPhantom = dbReader.GetBool("IsPhantom"), IsPhysics = dbReader.GetBool("IsPhysics"), IsRotateXEnabled = dbReader.GetBool("IsRotateXEnabled"), IsRotateYEnabled = dbReader.GetBool("IsRotateYEnabled"), IsRotateZEnabled = dbReader.GetBool("IsRotateZEnabled"), IsBlockGrab = dbReader.GetBool("IsBlockGrab"), IsSandbox = dbReader.GetBool("IsSandbox"), IsDieAtEdge = dbReader.GetBool("IsDieAtEdge"), IsReturnAtEdge = dbReader.GetBool("IsReturnAtEdge"), IsBlockGrabObject = dbReader.GetBool("IsBlockGrabObject"), SandboxOrigin = dbReader.GetVector3("SandboxOrigin"), ExtendedMesh = new ObjectPart.ExtendedMeshParams { DbSerialization = dbReader.GetBytes("ExtendedMeshData") } }; using (var ms = new MemoryStream(dbReader.GetBytes("DynAttrs"))) { foreach (KeyValuePair <string, IValue> kvp in (Map)LlsdBinary.Deserialize(ms)) { objpart.DynAttrs.Add(kvp.Key, kvp.Value); } } return(objpart); }
ParcelInfo ISimulationDataParcelStorageInterface.this[UUID regionID, UUID parcelID] { get { using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM parcels WHERE RegionID = '" + regionID.ToString() + "' AND ParcelID = '" + parcelID.ToString() + "' LIMIT 1", connection)) { using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { throw new KeyNotFoundException(); } var pi = new ParcelInfo((int)dbReader["BitmapWidth"], (int)dbReader["BitmapHeight"]) { Area = dbReader.GetInt32("Area"), AuctionID = dbReader.GetUInt32("AuctionID"), AuthBuyer = dbReader.GetUGUI("AuthBuyer"), Category = dbReader.GetEnum <ParcelCategory>("Category"), ClaimDate = dbReader.GetDate("ClaimDate"), ClaimPrice = dbReader.GetInt32("ClaimPrice"), ID = dbReader.GetUUID("ParcelID"), Group = dbReader.GetUGI("Group"), GroupOwned = dbReader.GetBool("IsGroupOwned"), Description = dbReader.GetString("Description"), Flags = dbReader.GetEnum <ParcelFlags>("Flags"), LandingType = dbReader.GetEnum <TeleportLandingType>("LandingType"), LandingPosition = dbReader.GetVector3("LandingPosition"), LandingLookAt = dbReader.GetVector3("LandingLookAt"), Name = dbReader.GetString("Name"), LocalID = dbReader.GetInt32("LocalID"), MediaID = dbReader.GetUUID("MediaID"), Owner = dbReader.GetUGUI("Owner"), SnapshotID = dbReader.GetUUID("SnapshotID"), SalePrice = dbReader.GetInt32("SalePrice"), OtherCleanTime = dbReader.GetInt32("OtherCleanTime"), MediaAutoScale = dbReader.GetBool("MediaAutoScale"), MediaType = dbReader.GetString("MediaType"), MediaWidth = dbReader.GetInt32("MediaWidth"), MediaHeight = dbReader.GetInt32("MediaHeight"), MediaLoop = dbReader.GetBool("MediaLoop"), ObscureMedia = dbReader.GetBool("ObscureMedia"), ObscureMusic = dbReader.GetBool("ObscureMusic"), MediaDescription = dbReader.GetString("MediaDescription"), RentPrice = dbReader.GetInt32("RentPrice"), AABBMin = dbReader.GetVector3("AABBMin"), AABBMax = dbReader.GetVector3("AABBMax"), ParcelPrimBonus = dbReader.GetDouble("ParcelPrimBonus"), PassPrice = dbReader.GetInt32("PassPrice"), PassHours = dbReader.GetDouble("PassHours"), ActualArea = dbReader.GetInt32("ActualArea"), BillableArea = dbReader.GetInt32("BillAbleArea"), Status = dbReader.GetEnum <ParcelStatus>("Status"), SeeAvatars = dbReader.GetBool("SeeAvatars"), AnyAvatarSounds = dbReader.GetBool("AnyAvatarSounds"), GroupAvatarSounds = dbReader.GetBool("GroupAvatarSounds"), IsPrivate = dbReader.GetBool("IsPrivate") }; pi.LandBitmap.DataNoAABBUpdate = dbReader.GetBytes("Bitmap"); var uri = (string)dbReader["MusicURI"]; if (!string.IsNullOrEmpty(uri)) { pi.MusicURI = new URI(uri); } uri = (string)dbReader["MediaURI"]; if (!string.IsNullOrEmpty(uri)) { pi.MediaURI = new URI(uri); } return(pi); } } } } }
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); } }
private ObjectPartInventoryItem ObjectPartInventoryItemFromDbReader(MySqlDataReader dbReader) { var item = new ObjectPartInventoryItem(dbReader.GetUUID("InventoryID")) { AssetID = dbReader.GetUUID("AssetID"), AssetType = dbReader.GetEnum <AssetType>("AssetType"), CreationDate = dbReader.GetDate("CreationDate"), Creator = dbReader.GetUUI("Creator"), Description = dbReader.GetString("Description"), Flags = dbReader.GetEnum <InventoryFlags>("Flags"), Group = dbReader.GetUGI("Group"), IsGroupOwned = dbReader.GetBool("GroupOwned"), InventoryType = dbReader.GetEnum <InventoryType>("InventoryType"), LastOwner = dbReader.GetUUI("LastOwner"), Name = dbReader.GetString("Name"), Owner = dbReader.GetUUI("Owner"), ParentFolderID = dbReader.GetUUID("PrimID"), NextOwnerAssetID = dbReader.GetUUID("NextOwnerAssetID"), ExperienceID = dbReader.GetUUID("ExperienceID") }; item.Permissions.Base = dbReader.GetEnum <InventoryPermissionsMask>("BasePermissions"); item.Permissions.Current = dbReader.GetEnum <InventoryPermissionsMask>("CurrentPermissions"); item.Permissions.EveryOne = dbReader.GetEnum <InventoryPermissionsMask>("EveryOnePermissions"); item.Permissions.Group = dbReader.GetEnum <InventoryPermissionsMask>("GroupPermissions"); item.Permissions.NextOwner = dbReader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissions"); item.SaleInfo.Type = dbReader.GetEnum <InventoryItem.SaleInfoData.SaleType>("SaleType"); item.SaleInfo.Price = dbReader.GetInt32("SalePrice"); item.SaleInfo.PermMask = dbReader.GetEnum <InventoryPermissionsMask>("SalePermMask"); var grantinfo = new ObjectPartInventoryItem.PermsGranterInfo(); if (((string)dbReader["PermsGranter"]).Length != 0) { try { grantinfo.PermsGranter = dbReader.GetUUI("PermsGranter"); } catch { /* no action required */ } } grantinfo.PermsMask = dbReader.GetEnum <ScriptPermissions>("PermsMask"); return(item); }