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);
        }
示例#2
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);
 }
示例#3
0
        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);
        }
示例#4
0
 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);
     }
 }
示例#5
0
 public abstract void Store(InventoryTransferInfo info);
示例#6
0
 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);
        }
示例#8
0
 public override void Store(InventoryTransferInfo info) => m_Transactions[info.DstTransactionID] = new InventoryTransferInfo(info);