private LockRecord UpdateLockRecord(LockRecord origRecord, LockRecord newRecord) { if (origRecord == null) { return(newRecord); } origRecord.Reason = newRecord.Reason; origRecord.AdminId = newRecord.AdminId; origRecord.LockoutEnd = newRecord.LockoutEnd; return(origRecord); }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void acquireSharedLocksDuringSlaveWriteTx() public virtual void AcquireSharedLocksDuringSlaveWriteTx() { HighlyAvailableGraphDatabase anySlave = _managedCluster.AnySlave; HighlyAvailableGraphDatabase master = _managedCluster.Master; CreateSingleTestLabeledNode(master); LockRecord sharedLabelLock = LockRecord.of(false, ResourceTypes.LABEL, 0); IList <LockRecord> requestedLocks = GetRequestedLocks(anySlave); assertFalse(requestedLocks.Contains(sharedLabelLock)); CreateSingleTestLabeledNode(anySlave); assertTrue(requestedLocks.Contains(sharedLabelLock)); }
public async Task EnterQueueAsync(string queueName) { if (AsyncContextLocks.Value == null) { throw new InvalidOperationException("AsyncEventWorkerLockCache has not been initialized on the active async context"); } if (AsyncContextLocks.Value.ContainsKey(queueName)) { throw new InvalidOperationException($"Async event queue '{queueName}' is already locked in the current async context"); } LockRecord lockRecord = globalLocks.AddOrUpdate(queueName, name => new LockRecord(new AsyncLock(), 1), (name, existing) => new LockRecord(existing.Lock, existing.ReferenceCount + 1)); var disposable = await lockRecord.Lock.LockAsync(); AsyncContextLocks.Value[queueName] = disposable; }
public void Release(SimLock lk, string frame) { if (locks.Count == 0) { Console.WriteLine("ERROR: released lock {0} at {1} while holding no locks!", lk, frame); return; } LockRecord top = locks [locks.Count - 1]; if (top.lk != lk && !(lk.IsGlobalLock && HoldCount(lk) > 1)) { Console.WriteLine("WARNING: released lock {0} at {1} out of order with {2} at {3}!", lk, frame, top.lk, top.frame); } for (int i = locks.Count - 1; i >= 0; --i) { if (locks [i].lk == lk) { locks.RemoveAt(i); break; } } }
public async Task <UnlockResponse> UnlockAsync(Lockable lockable, string lockId) { if (lockable == null) { throw new ArgumentNullException(nameof(lockable)); } else if (String.IsNullOrEmpty(lockId)) { throw new ArgumentException(nameof(lockId)); } var @lock = lockable.Locks.FirstOrDefault(l => l.Id == lockId); if (@lock == null) { throw new Exception("No such lock matching the id."); } var lockRecord = new LockRecord { IsShared = @lock.IsShared, LockableId = lockable.Id, LockedAt = @lock.LockedAt, MaxLeaseDate = @lock.MaxLeaseDate, OwnerToken = @lock.OwnerToken, UnlockedAt = DateTime.Now }; await lockRecordService.CreateAsync(lockRecord); lockable.Locks.Remove(@lock); var result = await UpdateAsync(lockable); return(new UnlockResponse { Lockable = result, LockRecord = lockRecord }); }
void HandleOpenItem(OpenItem packet) { Player player = GetPlayer(); // ignore for remote control state if (player.m_unitMovedByMe != player) { return; } Item item = player.GetItemByPos(packet.Slot, packet.PackSlot); if (!item) { player.SendEquipError(InventoryResult.ItemNotFound); return; } ItemTemplate proto = item.GetTemplate(); if (proto == null) { player.SendEquipError(InventoryResult.ItemNotFound, item); return; } // Verify that the bag is an actual bag or wrapped item that can be used "normally" if (!proto.GetFlags().HasAnyFlag(ItemFlags.HasLoot) && !item.HasFlag(ItemFields.Flags, ItemFieldFlags.Wrapped)) { player.SendEquipError(InventoryResult.ClientLockedOut, item); Log.outError(LogFilter.Network, "Possible hacking attempt: Player {0} [guid: {1}] tried to open item [guid: {2}, entry: {3}] which is not openable!", player.GetName(), player.GetGUID().ToString(), item.GetGUID().ToString(), proto.GetId()); return; } // locked item uint lockId = proto.GetLockID(); if (lockId != 0) { LockRecord lockInfo = CliDB.LockStorage.LookupByKey(lockId); if (lockInfo == null) { player.SendEquipError(InventoryResult.ItemLocked, item); Log.outError(LogFilter.Network, "WORLD:OpenItem: item [guid = {0}] has an unknown lockId: {1}!", item.GetGUID().ToString(), lockId); return; } // was not unlocked yet if (item.IsLocked()) { player.SendEquipError(InventoryResult.ItemLocked, item); return; } } if (item.HasFlag(ItemFields.Flags, ItemFieldFlags.Wrapped))// wrapped? { PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_CHARACTER_GIFT_BY_ITEM); stmt.AddValue(0, item.GetGUID().GetCounter()); SQLResult result = DB.Characters.Query(stmt); if (!result.IsEmpty()) { uint entry = result.Read <uint>(0); uint flags = result.Read <uint>(1); item.SetUInt64Value(ItemFields.GiftCreator, 0); item.SetEntry(entry); item.SetUInt32Value(ItemFields.Flags, flags); item.SetState(ItemUpdateState.Changed, player); } else { Log.outError(LogFilter.Network, "Wrapped item {0} don't have record in character_gifts table and will deleted", item.GetGUID().ToString()); player.DestroyItem(item.GetBagSlot(), item.GetSlot(), true); return; } stmt = DB.Characters.GetPreparedStatement(CharStatements.DEL_GIFT); stmt.AddValue(0, item.GetGUID().GetCounter()); DB.Characters.Execute(stmt); } else { player.SendLoot(item.GetGUID(), LootType.Corpse); } }
void HandleOpenItem(OpenItem packet) { Player player = GetPlayer(); // ignore for remote control state if (player.GetUnitBeingMoved() != player) { return; } // additional check, client outputs message on its own if (!player.IsAlive()) { player.SendEquipError(InventoryResult.PlayerDead); return; } Item item = player.GetItemByPos(packet.Slot, packet.PackSlot); if (!item) { player.SendEquipError(InventoryResult.ItemNotFound); return; } ItemTemplate proto = item.GetTemplate(); if (proto == null) { player.SendEquipError(InventoryResult.ItemNotFound, item); return; } // Verify that the bag is an actual bag or wrapped item that can be used "normally" if (!proto.HasFlag(ItemFlags.HasLoot) && !item.IsWrapped()) { player.SendEquipError(InventoryResult.ClientLockedOut, item); Log.outError(LogFilter.Network, "Possible hacking attempt: Player {0} [guid: {1}] tried to open item [guid: {2}, entry: {3}] which is not openable!", player.GetName(), player.GetGUID().ToString(), item.GetGUID().ToString(), proto.GetId()); return; } // locked item uint lockId = proto.GetLockID(); if (lockId != 0) { LockRecord lockInfo = CliDB.LockStorage.LookupByKey(lockId); if (lockInfo == null) { player.SendEquipError(InventoryResult.ItemLocked, item); Log.outError(LogFilter.Network, "WORLD:OpenItem: item [guid = {0}] has an unknown lockId: {1}!", item.GetGUID().ToString(), lockId); return; } // was not unlocked yet if (item.IsLocked()) { player.SendEquipError(InventoryResult.ItemLocked, item); return; } } if (item.IsWrapped())// wrapped? { PreparedStatement stmt = DB.Characters.GetPreparedStatement(CharStatements.SEL_CHARACTER_GIFT_BY_ITEM); stmt.AddValue(0, item.GetGUID().GetCounter()); _queryProcessor.AddCallback(DB.Characters.AsyncQuery(stmt) .WithCallback(result => HandleOpenWrappedItemCallback(item.GetPos(), item.GetGUID(), result))); } else { player.SendLoot(item.GetGUID(), LootType.Corpse); } }
private void InnerUpdate() { if (Input.GetKeyDown(KeyCode.T) && (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))) { var chara = FkCharaMgr.FindSelectChara(); if (chara != null) { chara.Limbs().Foreach(bone => { var r = new LockRecord(); r.Bone = bone; r.Pos = bone.Transform.position; r.Rot = bone.Transform.rotation; _lockRecord.Add(r); }); } } else if (Input.GetKeyDown(KeyCode.T) && (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))) { var go = Context.GuideObjectManager().selectObject; if (go != null && go.IsLimb()) { var chara = FkCharaMgr.FindSelectChara(); var bone = chara.DicGuideBones[go]; var r = new LockRecord(); r.Bone = bone; r.Pos = bone.Transform.position; r.Rot = bone.Transform.rotation; _lockRecord.Add(r); } else if (go != null && (go.IsHead())) { var r = new LockRecord(); var bone = FkCharaMgr.BuildChara(go).Head; r.Bone = bone; r.Pos = bone.Transform.position; var cv = Context.MainCamera().transform.position - bone.Transform.position; if (Input.GetKey(KeyCode.LeftControl)) { r.Rot = Quaternion.FromToRotation(cv, bone.GuideObject.transformTarget.forward); } else { r.Rot = Quaternion.FromToRotation(cv, cv); } _headLocks.Add(r); } } else if (Input.GetKeyDown(KeyCode.T)) { _lockRecord.Clear(); _headLocks.Clear(); } _lockRecord.ForEach(r => { if (r.Pos != r.Bone.Transform.position) { r.Bone.MoveTo(r.Pos); } if (r.Rot != r.Bone.Transform.rotation) { r.Bone.TurnTo(r.Rot); } }); _headLocks.ForEach(r => { var bone = r.Bone; var target = Context.MainCamera().transform.position - bone.Transform.position; var from = new Vector3(0, 0, 1); var p1 = Quaternion.FromToRotation(from, target); var p2 = r.Rot; bone.TurnTo(p2 * p1); // var bone = r.Bone; // var go = new GameObject(); // var target = Context.MainCamera().transform.position - bone.Transform.position; // var v1 = go.transform.forward; // var v2 = new Vector3(target.x, 0, target.z); // var axis = Vector3.Cross(v1, v2); // var angel = Vector3.Angle(v1, v2); // go.transform.RotateAround(go.transform.position, axis, angel); // axis = Vector3.Cross(v2, target); // angel = Vector3.Angle(v2, target); // go.transform.RotateAround(go.transform.position, axis, angel); // bone.TurnTo(go.transform.rotation); // GameObject.Destroy(go); }); }