/// <summary>
 /// Construct a new instance of the MoneyBalanceReplyEventArgs object
 /// </summary>
 /// <param name="transactionID">The ID of the transaction</param>
 /// <param name="transactionSuccess">True of the transaction was successful</param>
 /// <param name="balance">The current currency balance</param>
 /// <param name="metersCredit">The meters credited</param>
 /// <param name="metersCommitted">The meters comitted</param>
 /// <param name="description">A brief description of the transaction</param>
 /// <param name="transactionInfo">Transaction info</param>
 public MoneyBalanceReplyEventArgs(UUID transactionID, bool transactionSuccess, int balance, int metersCredit, int metersCommitted, string description, TransactionInfo transactionInfo)
 {
     this.m_TransactionID = transactionID;
     this.m_Success = transactionSuccess;
     this.m_Balance = balance;
     this.m_MetersCredit = metersCredit;
     this.m_MetersCommitted = metersCommitted;
     this.m_Description = description;
     this.m_TransactionInfo = transactionInfo;
 }
        /// <summary>Process an incoming packet and raise the appropriate events</summary>
        /// <param name="sender">The sender</param>
        /// <param name="e">The EventArgs object containing the packet data</param>
        protected void MoneyBalanceReplyHandler(object sender, PacketReceivedEventArgs e)
        {
            Packet packet = e.Packet;

            if (packet.Type == PacketType.MoneyBalanceReply)
            {
                MoneyBalanceReplyPacket reply = (MoneyBalanceReplyPacket)packet;
                this.balance = reply.MoneyData.MoneyBalance;

                if (m_MoneyBalance != null)
                {
                    TransactionInfo transactionInfo = new TransactionInfo();
                    transactionInfo.TransactionType = reply.TransactionInfo.TransactionType;
                    transactionInfo.SourceID = reply.TransactionInfo.SourceID;
                    transactionInfo.IsSourceGroup = reply.TransactionInfo.IsSourceGroup;
                    transactionInfo.DestID = reply.TransactionInfo.DestID;
                    transactionInfo.IsDestGroup = reply.TransactionInfo.IsDestGroup;
                    transactionInfo.Amount = reply.TransactionInfo.Amount;
                    transactionInfo.ItemDescription =  Utils.BytesToString(reply.TransactionInfo.ItemDescription);

                    OnMoneyBalanceReply(new MoneyBalanceReplyEventArgs(reply.MoneyData.TransactionID,
                        reply.MoneyData.TransactionSuccess,
                        reply.MoneyData.MoneyBalance,
                        reply.MoneyData.SquareMetersCredit,
                        reply.MoneyData.SquareMetersCommitted,
                        Utils.BytesToString(reply.MoneyData.Description),
                        transactionInfo));
                }
            }

            if (m_Balance != null)
            {
                OnBalance(new BalanceEventArgs(balance));
            }
        }