Beispiel #1
0
        public bool SetTransExpired(int deadTime)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.SetTransExpired(deadTime));
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                return(dbm.Manager.SetTransExpired(deadTime));
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #2
0
        public TransactionData FetchTransaction(UUID transactionID)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.FetchTransaction(transactionID));
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                return(dbm.Manager.FetchTransaction(transactionID));
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(null);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #3
0
        public bool updateTransactionStatus(UUID transactionID, int status, string description)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.updateTransactionStatus(transactionID, status, description));
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                return(dbm.Manager.updateTransactionStatus(transactionID, status, description));
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #4
0
        private MySQLSuperManager GetLockedConnection()
        {
            int lockedCons = 0;

            while (true)
            {
                m_lastConnect++;

                // Overflow protection
                if (m_lastConnect == int.MaxValue)
                {
                    m_lastConnect = 0;
                }

                MySQLSuperManager x = m_dbconnections[m_lastConnect % m_maxConnections];
                if (!x.Locked)
                {
                    x.GetLock();
                    return(x);
                }

                lockedCons++;
                if (lockedCons > m_maxConnections)
                {
                    lockedCons = 0;
                    System.Threading.Thread.Sleep(1000); // Wait some time before searching them again.
                    m_log.Debug(
                        "WARNING: All threads are in use. Probable cause: Something didnt release a mutex properly, or high volume of requests inbound.");
                }
            }
        }
Beispiel #5
0
        public bool giveMoney(UUID transactionID, string receiverID, int amount)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.giveMoney(transactionID, receiverID, amount));
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                return(dbm.Manager.giveMoney(transactionID, receiverID, amount));
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #6
0
        public bool TryAddUserInfo(UserInfo user)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                if (dbm.Manager.fetchUserInfo(user.UserID) != null)
                {
                    m_log.InfoFormat("[Money DB] Found user \"{0}\", now update information", user.Avatar);
                    if (m_moneyManager.updateUserInfo(user))
                    {
                        return(true);
                    }
                }
                else if (dbm.Manager.addUserInfo(user))
                {
                    m_log.InfoFormat("[Money DB] Unable to find user \"{0}\", add it to DB successfully", user.Avatar);
                    return(true);
                }
                return(false);
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                // Fumi.Iseki
                m_moneyManager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #7
0
        public bool setTotalSale(TransactionData transaction)
        {
            if (transaction.Receiver == transaction.Sender)
            {
                return(false);
            }
            if (transaction.Sender == UUID.Zero.ToString())
            {
                return(false);
            }

            MySQLSuperManager dbm = GetLockedConnection();

            int time = (int)((DateTime.UtcNow.Ticks - TicksToEpoch) / 10000000);

            try {
                return(dbm.Manager.setTotalSale(transaction.Receiver, transaction.ObjectUUID, transaction.Type, 1, transaction.Amount, time));
            }
            catch (MySql.Data.MySqlClient.MySqlException e) {
                dbm.Manager.Reconnect();
                return(dbm.Manager.setTotalSale(transaction.Receiver, transaction.ObjectUUID, transaction.Type, 1, transaction.Amount, time));
            }
            catch (Exception e) {
                m_log.Error(e.ToString());
                return(false);
            }
            finally {
                dbm.Release();
            }
        }
Beispiel #8
0
        public bool setTotalSale(TransactionData transaction)
        {
            if (transaction.Receiver == transaction.Sender)
            {
                return(false);
            }
            if (transaction.Sender == UUID.Zero.ToString())
            {
                return(false);
            }

            MySQLSuperManager dbm = GetLockedConnection();

            int time = (int)((DateTime.UtcNow.Ticks - TicksToEpoch) / 10000000);

            try {
                return(dbm.Manager.setTotalSale(transaction.Receiver, transaction.ObjectUUID, transaction.Type, 1, transaction.Amount, time));
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e) {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                return(dbm.Manager.setTotalSale(transaction.Receiver, transaction.ObjectUUID, transaction.Type, 1, transaction.Amount, time));
            }
            catch (Exception e) {
                m_log.Error(e.ToString());
                return(false);
            }
            finally {
                dbm.Release();
            }
        }
Beispiel #9
0
        public int getTransactionNum(string userID, int startTime, int endTime)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.getTransactionNum(userID, startTime, endTime));
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                return(dbm.Manager.getTransactionNum(userID, startTime, endTime));
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(-1);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #10
0
        public UserInfo FetchUserInfo(string userID)
        {
            UserInfo          userInfo = null;
            MySQLSuperManager dbm      = GetLockedConnection();

            try
            {
                userInfo = dbm.Manager.fetchUserInfo(userID);
                return(userInfo);
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                userInfo = dbm.Manager.fetchUserInfo(userID);
                return(userInfo);
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(null);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #11
0
 public void Reconnect()
 {
     for (int i = 0; i < m_maxConnections; i++)
     {
         MySQLSuperManager msm = m_dbconnections[i];
         msm.Manager.Reconnect();
     }
 }
Beispiel #12
0
        public bool addUser(string userID, int balance, int status, int type)
        {
            TransactionData transaction = new TransactionData();

            transaction.TransUUID    = UUID.Random();
            transaction.Sender       = UUID.Zero.ToString();
            transaction.Receiver     = userID;
            transaction.Amount       = balance;
            transaction.ObjectUUID   = UUID.Zero.ToString();
            transaction.ObjectName   = string.Empty;
            transaction.RegionHandle = string.Empty;
            transaction.Type         = (int)TransactionType.BirthGift;
            transaction.Time         = (int)((DateTime.UtcNow.Ticks - TicksToEpoch) / 10000000);;
            transaction.Status       = (int)Status.PENDING_STATUS;
            transaction.SecureCode   = UUID.Random().ToString();
            transaction.CommonName   = string.Empty;
            transaction.Description  = "addUser " + DateTime.UtcNow.ToString();

            bool ret = addTransaction(transaction);

            if (!ret)
            {
                return(false);
            }

            //
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                ret = dbm.Manager.addUser(userID, 0, status, type); // make Balance Table
            }
#pragma warning disable CS0168                                      // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168                                      // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                ret = dbm.Manager.addUser(userID, 0, status, type); // make Balance Table
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }

            //
            if (ret)
            {
                ret = giveMoney(transaction.TransUUID, userID, balance);
            }
            return(ret);
        }
Beispiel #13
0
        ///////////////////////////////////////////////////////////////////////////////////////////////////////
        //
        // userinfo
        //

        public bool TryAddUserInfo(UserInfo user)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            UserInfo userInfo = null;

            try
            {
                userInfo = dbm.Manager.fetchUserInfo(user.UserID);
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                userInfo = dbm.Manager.fetchUserInfo(user.UserID);
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                dbm.Release();
                return(false);
            }

            try
            {
                if (userInfo != null)
                {
                    //m_log.InfoFormat("[MONEY DB]: Found user \"{0}\", now update information", user.Avatar);
                    if (dbm.Manager.updateUserInfo(user))
                    {
                        return(true);
                    }
                }
                else if (dbm.Manager.addUserInfo(user))
                {
                    //m_log.InfoFormat("[MONEY DB]: Unable to find user \"{0}\", add it to DB successfully", user.Avatar);
                    return(true);
                }
                m_log.InfoFormat("[MONEY DB]: WARNNING: TryAddUserInfo: Unable to TryAddUserInfo.");
                return(false);
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #14
0
        public TransactionData FetchTransaction(string userID, int startTime, int endTime, int lastIndex)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            TransactionData[] arrTransaction;

            uint index = 0;

            if (lastIndex >= 0)
            {
                index = Convert.ToUInt32(lastIndex) + 1;
            }

            try
            {
                arrTransaction = dbm.Manager.FetchTransaction(userID, startTime, endTime, index, 1);
            }
#pragma warning disable CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
            catch (MySql.Data.MySqlClient.MySqlException e)
            {
#pragma warning restore CS0168 // Variable ist deklariert, wird jedoch niemals verwendet
                dbm.Manager.Reconnect();
                arrTransaction = dbm.Manager.FetchTransaction(userID, startTime, endTime, index, 1);
            }
            catch (Exception e)
            {
                m_log.Error(e.ToString());
                return(null);
            }
            finally
            {
                dbm.Release();
            }

            //
            if (arrTransaction.Length > 0)
            {
                return(arrTransaction[0]);
            }
            else
            {
                return(null);
            }
        }
Beispiel #15
0
        public TransactionData FetchTransaction(string userID, int startTime, int endTime, int lastIndex)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            TransactionData[] arrTransaction;
            try
            {
                if (lastIndex < 0)
                {
                    arrTransaction = dbm.Manager.FetchTransaction(userID, startTime, endTime, 0, 1);
                    if (arrTransaction.Length > 0)
                    {
                        return(arrTransaction[0]);
                    }
                    else
                    {
                        return(null);
                    }
                }
                else
                {
                    uint index = Convert.ToUInt32(lastIndex);
                    arrTransaction = dbm.Manager.FetchTransaction(userID, startTime, endTime, index + 1, 1);
                    if (arrTransaction.Length > 0)
                    {
                        return(arrTransaction[0]);
                    }
                    else
                    {
                        return(null);
                    }
                }
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(null);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #16
0
        public bool addTransaction(TransactionData transaction)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.addTransaction(transaction));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #17
0
        public int getTransactionNum(string userID, int startTime, int endTime)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.getTransactionNum(userID, startTime, endTime));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(-1);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #18
0
        public UserInfo FetchUserInfo(string userID)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.fetchUserInfo(userID));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(null);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #19
0
        public bool withdrawMoney(UUID transactionID, string senderID, int amount)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try {
                return(dbm.Manager.withdrawMoney(transactionID, senderID, amount));
            }
            catch (MySql.Data.MySqlClient.MySqlException e) {
                dbm.Manager.Reconnect();
                return(dbm.Manager.withdrawMoney(transactionID, senderID, amount));
            }
            catch (Exception e) {
                m_log.Error(e.ToString());
                return(false);
            }
            finally {
                dbm.Release();
            }
        }
Beispiel #20
0
        public bool ValidateTransfer(string secureCode, UUID transactionID)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.ValidateTransfer(secureCode, transactionID));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #21
0
        public TransactionData FetchTransaction(UUID transactionID)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.FetchTransaction(transactionID));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(null);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #22
0
        public bool updateTransactionStatus(UUID transactionID, int status, string description)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.updateTransactionStatus(transactionID, status, description));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #23
0
        public bool SetTransExpired(int deadTime)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.SetTransExpired(deadTime));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #24
0
        public bool addUser(string userID, int balance, int status)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.addUser(userID, balance, status));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #25
0
        public bool giveMoney(UUID transactionID, string receiverID, int amount)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.giveMoney(transactionID, receiverID, amount));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(false);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #26
0
        public int getBalance(string userID)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            try
            {
                return(dbm.Manager.getBalance(userID));
            }
            catch (Exception e)
            {
                dbm.Manager.Reconnect();
                m_log.Error(e.ToString());
                return(0);
            }
            finally
            {
                dbm.Release();
            }
        }
Beispiel #27
0
 public void Initialise(string connectionString, int maxDBConnections)
 {
     m_maxConnections = maxDBConnections;
     if (connectionString != string.Empty)
     {
         m_moneyManager = new MySQLMoneyManager(connectionString);
         m_log.Info("Creating " + m_maxConnections + " DB connections...");
         for (int i = 0; i < m_maxConnections; i++)
         {
             m_log.Info("Connecting to DB... [" + i + "]");
             MySQLSuperManager msm = new MySQLSuperManager();
             msm.Manager = new MySQLMoneyManager(connectionString);
             m_dbconnections.Add(i, msm);
         }
     }
     else
     {
         m_log.Error("[Money DB] Connection string is null,initialise database failed");
         throw new Exception("Failed to initialise MySql database");
     }
 }
Beispiel #28
0
        public UserInfo FetchUserInfo(string userID)
        {
            UserInfo          userInfo = null;
            MySQLSuperManager dbm      = GetLockedConnection();

            try {
                userInfo = dbm.Manager.fetchUserInfo(userID);
                return(userInfo);
            }
            catch (MySql.Data.MySqlClient.MySqlException e) {
                dbm.Manager.Reconnect();
                userInfo = dbm.Manager.fetchUserInfo(userID);
                return(userInfo);
            }
            catch (Exception e) {
                m_log.Error(e.ToString());
                return(null);
            }
            finally {
                dbm.Release();
            }
        }
Beispiel #29
0
        public TransactionData FetchTransaction(string userID, int startTime, int endTime, int lastIndex)
        {
            MySQLSuperManager dbm = GetLockedConnection();

            TransactionData[] arrTransaction;

            uint index = 0;

            if (lastIndex >= 0)
            {
                index = Convert.ToUInt32(lastIndex) + 1;
            }

            try {
                arrTransaction = dbm.Manager.FetchTransaction(userID, startTime, endTime, index, 1);
            }
            catch (MySql.Data.MySqlClient.MySqlException e) {
                dbm.Manager.Reconnect();
                arrTransaction = dbm.Manager.FetchTransaction(userID, startTime, endTime, index, 1);
            }
            catch (Exception e) {
                m_log.Error(e.ToString());
                return(null);
            }
            finally {
                dbm.Release();
            }

            //
            if (arrTransaction.Length > 0)
            {
                return(arrTransaction[0]);
            }
            else
            {
                return(null);
            }
        }