private void remove_item(Checked_Out_Item DeleteItem) { lock (thisLock) { itemsByCheckoutTime.Remove(DeleteItem.Check_Out_Time); itemsByItemid.Remove(DeleteItem.ItemID); } }
/// <summary> Attempts to check out an item (if it was marked for checking out and single use) /// to a particular user. If the user already has that item, it is renewed. If the item is /// checked out to a different user, then the user fails to check it out </summary> /// <param name="ItemID"> Primary key to the digital resource which to check out</param> /// <param name="IP_Address"> IP Address to which to check this item </param> /// <returns> TRUE if successful, otherwise FALSE </returns> public bool Check_Out(int ItemID, string IP_Address) { // Perform this in a lock lock (thisLock) { // First, always update the checkout list Update_Check_Out_List(); if (itemsByItemid.ContainsKey(ItemID)) { Checked_Out_Item newItem = itemsByItemid[ItemID]; if (newItem.IP_Address == IP_Address) { if (itemsByCheckoutTime.ContainsKey(newItem.Check_Out_Time)) { itemsByCheckoutTime.Remove(newItem.Check_Out_Time); } newItem.Renew(); bool reserved = false; while (!reserved) { try { itemsByCheckoutTime[newItem.Check_Out_Time] = newItem; reserved = true; } catch { newItem.Renew(); } } return(true); } return(false); } add_new_checked_out_status(ItemID, IP_Address); return(true); } }
private void add_new_checked_out_status(int ItemID, string IP_Address) { lock (thisLock) { Checked_Out_Item newItem = new Checked_Out_Item(ItemID, IP_Address); bool reserved = false; while (!reserved) { try { itemsByCheckoutTime[newItem.Check_Out_Time] = newItem; reserved = true; } catch { newItem.Renew(); } } itemsByItemid[ItemID] = newItem; } }