private bool CheckForEquality(InventoryTransferInfo info1, InventoryTransferInfo info2) { var list = new List <string>(); if (info1.AssetType != info2.AssetType) { list.Add("AssetType"); } if (info1.InventoryID != info2.InventoryID) { list.Add("InventoryID"); } if (info1.SrcTransactionID != info2.SrcTransactionID) { list.Add("SrcTransactionID"); } if (info1.DstTransactionID != info2.DstTransactionID) { list.Add("DstTransactionID"); } if (!info1.SrcAgent.EqualsGrid(info2.SrcAgent)) { list.Add("SrcAgent"); } if (!info1.DstAgent.EqualsGrid(info2.DstAgent)) { list.Add("DstAgent"); } if (list.Count != 0) { m_Log.ErrorFormat("Test for equality failed: {0}", string.Join(",", list)); } return(list.Count == 0); }
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 override bool TryGetValue(UUID userid, UUID dstTransactionID, out InventoryTransferInfo info) { InventoryTransferInfo foundInfo; if (m_Transactions.TryGetValue(dstTransactionID, out foundInfo) && foundInfo.DstAgent.ID == userid) { info = new InventoryTransferInfo(foundInfo); } else { info = null; } return(info != null); }
public override void Store(InventoryTransferInfo info) { using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); var vals = new Dictionary <string, object> { { "srcagentid", info.SrcAgent }, { "dstagentid", info.DstAgent }, { "srctransactionid", info.SrcTransactionID }, { "dsttransactionid", info.DstTransactionID }, { "assettype", info.AssetType }, { "inventoryid", info.InventoryID } }; connection.ReplaceInto("inventorytransfertransactions", vals); } }
public abstract void Store(InventoryTransferInfo info);
public abstract bool TryGetValue(UUID userid, UUID dstTransactionID, out InventoryTransferInfo info);
public bool Run() { InventoryTransferInfo info; InventoryTransferInfo testInfo = new InventoryTransferInfo { AssetType = Types.Asset.AssetType.Animation, InventoryID = UUID.Random, SrcTransactionID = UUID.Random, DstTransactionID = UUID.Random, SrcAgent = m_SrcAgent, DstAgent = m_DstAgent }; m_Log.Info("Testing non-existence 1"); if (m_InventoryTransferTransactionService.ContainsKey(m_DstAgent.ID, testInfo.DstTransactionID)) { return(false); } m_Log.Info("Testing non-existence 2"); if (m_InventoryTransferTransactionService.TryGetValue(m_DstAgent.ID, testInfo.DstTransactionID, out info)) { return(false); } m_Log.Info("Testing non-existence 3"); try { info = m_InventoryTransferTransactionService[m_DstAgent.ID, testInfo.DstTransactionID]; return(false); } catch (KeyNotFoundException) { } m_Log.Info("Creating transaction data"); m_InventoryTransferTransactionService.Store(testInfo); m_Log.Info("Testing existence 1"); if (!m_InventoryTransferTransactionService.ContainsKey(m_DstAgent.ID, testInfo.DstTransactionID)) { return(false); } m_Log.Info("Testing existence 2"); if (!m_InventoryTransferTransactionService.TryGetValue(m_DstAgent.ID, testInfo.DstTransactionID, out info)) { return(false); } if (!CheckForEquality(info, testInfo)) { return(false); } m_Log.Info("Testing existence 3"); info = m_InventoryTransferTransactionService[m_DstAgent.ID, testInfo.DstTransactionID]; if (!CheckForEquality(info, testInfo)) { return(false); } m_Log.Info("Testing non-existence 1 by SrcAgent"); if (m_InventoryTransferTransactionService.ContainsKey(m_SrcAgent.ID, testInfo.DstTransactionID)) { return(false); } m_Log.Info("Testing non-existence 2 by SrcAgent"); if (m_InventoryTransferTransactionService.TryGetValue(m_SrcAgent.ID, testInfo.DstTransactionID, out info)) { return(false); } m_Log.Info("Testing non-existence 3 by SrcAgent"); try { info = m_InventoryTransferTransactionService[m_SrcAgent.ID, testInfo.DstTransactionID]; return(false); } catch (KeyNotFoundException) { } m_Log.Info("Testing non-existence 1 by SrcTransactionID"); if (m_InventoryTransferTransactionService.ContainsKey(m_DstAgent.ID, testInfo.SrcTransactionID)) { return(false); } m_Log.Info("Testing non-existence 2 by SrcTransactionID"); if (m_InventoryTransferTransactionService.TryGetValue(m_DstAgent.ID, testInfo.SrcTransactionID, out info)) { return(false); } m_Log.Info("Testing non-existence 3 by SrcTransactionID"); try { info = m_InventoryTransferTransactionService[m_DstAgent.ID, testInfo.SrcTransactionID]; return(false); } catch (KeyNotFoundException) { } m_Log.Info("Testing non-existence 1 by SrcTransactionID+SrcAgent"); if (m_InventoryTransferTransactionService.ContainsKey(m_SrcAgent.ID, testInfo.SrcTransactionID)) { return(false); } m_Log.Info("Testing non-existence 2 by SrcTransactionID+SrcAgent"); if (m_InventoryTransferTransactionService.TryGetValue(m_SrcAgent.ID, testInfo.SrcTransactionID, out info)) { return(false); } m_Log.Info("Testing non-existence 3 by SrcTransactionID+SrcAgent"); try { info = m_InventoryTransferTransactionService[m_SrcAgent.ID, testInfo.SrcTransactionID]; return(false); } catch (KeyNotFoundException) { } m_Log.Info("Removing entry"); if (!m_InventoryTransferTransactionService.Remove(m_DstAgent.ID, testInfo.DstTransactionID)) { return(false); } m_Log.Info("Testing non-existence 1"); if (m_InventoryTransferTransactionService.ContainsKey(m_DstAgent.ID, testInfo.DstTransactionID)) { return(false); } m_Log.Info("Testing non-existence 2"); if (m_InventoryTransferTransactionService.TryGetValue(m_DstAgent.ID, testInfo.DstTransactionID, out info)) { return(false); } m_Log.Info("Testing non-existence 3"); try { info = m_InventoryTransferTransactionService[m_DstAgent.ID, testInfo.DstTransactionID]; return(false); } catch (KeyNotFoundException) { } m_Log.Info("Non-existence test on remove"); if (m_InventoryTransferTransactionService.Remove(m_DstAgent.ID, testInfo.DstTransactionID)) { return(false); } return(true); }
public override void Store(InventoryTransferInfo info) => m_Transactions[info.DstTransactionID] = new InventoryTransferInfo(info);