mirror of
https://github.com/ManfredAabye/opensimcurrencyserver-dotnet-tests.git
synced 2026-07-28 14:59:07 +00:00
22062025
This commit is contained in:
+135
@@ -0,0 +1,135 @@
|
||||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/ See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSim Project nor the names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Funktion
|
||||
Die Datei definiert das C#-Interface IMoneyManager.
|
||||
Sie legt die Methoden fest, die eine Klasse zur Verwaltung von Geldtransaktionen, Guthaben und Benutzerinformationen implementieren muss.
|
||||
Typische Aufgaben des Interfaces:
|
||||
Abfragen und Ändern von Benutzer-Guthaben (getBalance, withdrawMoney, giveMoney)
|
||||
Hinzufügen und Abfragen von Transaktionen (addTransaction, FetchTransaction)
|
||||
Verwaltung von Benutzern (addUser, addUserInfo, fetchUserInfo, updateUserInfo)
|
||||
Validierung und Ablauf von Transaktionen (ValidateTransfer, SetTransExpired)
|
||||
|
||||
NullPointer-Checks & Fehlerquellen
|
||||
|
||||
Interface selbst:
|
||||
Das Interface enthält keine Implementierung. Es ist lediglich eine Methodendefinition. Das bedeutet:
|
||||
Es gibt keine Logik, also auch keine Möglichkeit für NullPointer-Fehler innerhalb dieser Datei.
|
||||
Fehlerquellen oder NullPointer-Probleme hängen ausschließlich von den konkreten Implementierungen dieser Methoden ab.
|
||||
|
||||
Parameter:
|
||||
Die Methoden nehmen meist Strings, UUIDs, Ints und komplexe Typen wie TransactionData oder UserInfo als Parameter.
|
||||
In einer späteren Implementierung sollte geprüft werden, ob übergebene Objekte (z.B. user, transaction) null sind, bevor darauf zugegriffen wird.
|
||||
Rückgabewerte wie TransactionData oder UserInfo könnten null sein, wenn nichts gefunden wird – auch das ist Sache der Implementierung.
|
||||
|
||||
Rückgabewerte:
|
||||
Methoden, die Objekte zurückgeben (FetchTransaction, fetchUserInfo), haben keine Angaben, ob sie null zurückgeben dürfen.
|
||||
Das sollte dokumentiert oder in der Implementierung behandelt werden.
|
||||
|
||||
Zusammenfassung
|
||||
NullPointer-Gefahr:
|
||||
Im Interface selbst nicht möglich, da keine Ausführung erfolgt.
|
||||
Fehlerquellen:
|
||||
Keine im Interface; alle Fehlerquellen und NullPointer-Risiken entstehen erst in den Klassen, die dieses Interface implementieren.
|
||||
Funktion:
|
||||
Definition aller nötigen Methoden zur Verwaltung von Geldtransaktionen und Benutzerinformationen im OpenSim-Kontext.
|
||||
|
||||
Fazit:
|
||||
Die Datei IMoneyManager.cs ist ein reines Methoden-Interface und enthält keine Logik, die zu NullPointer-Fehlern führen kann.
|
||||
Typische Fehlerquellen und NullPointer sollten in den konkreten Implementierungen der Methoden sorgfältig behandelt werden (z.B. Nullprüfungen auf Parameter, Rückgabewerte).
|
||||
*/
|
||||
|
||||
#pragma warning disable IDE1006
|
||||
|
||||
using OpenMetaverse;
|
||||
|
||||
namespace OpenSim.Data.MySQL.MySQLMoneyDataWrapper
|
||||
{
|
||||
public interface IMoneyManager
|
||||
{
|
||||
/// <summary>Gets the balance.</summary>
|
||||
/// <param name="userID">The user identifier.</param>
|
||||
int getBalance(string userID);
|
||||
|
||||
/// <summary>Withdraws the money.</summary>
|
||||
/// <param name="transactionID">The transaction identifier.</param>
|
||||
/// <param name="senderID">The sender identifier.</param>
|
||||
/// <param name="amount">The amount.</param>
|
||||
bool withdrawMoney(UUID transactionID, string senderID, int amount);
|
||||
|
||||
/// <summary>Gives the money.</summary>
|
||||
/// <param name="transactionID">The transaction identifier.</param>
|
||||
/// <param name="receiverID">The receiver identifier.</param>
|
||||
/// <param name="amount">The amount.</param>
|
||||
bool giveMoney(UUID transactionID, string receiverID, int amount);
|
||||
|
||||
/// <summary>Adds the transaction.</summary>
|
||||
/// <param name="transaction">The transaction.</param>
|
||||
bool addTransaction(TransactionData transaction);
|
||||
|
||||
/// <summary>Updates the transaction status.</summary>
|
||||
/// <param name="transactionID">The transaction identifier.</param>
|
||||
/// <param name="status">The status.</param>
|
||||
/// <param name="description">The description.</param>
|
||||
bool updateTransactionStatus(UUID transactionID, int status, string description);
|
||||
|
||||
/// <summary>Fetches the transaction.</summary>
|
||||
/// <param name="transactionID">The transaction identifier.</param>
|
||||
TransactionData FetchTransaction(UUID transactionID);
|
||||
|
||||
/// <summary>Fetches the transaction.</summary>
|
||||
/// <param name="userID">The user identifier.</param>
|
||||
/// <param name="startTime">The start time.</param>
|
||||
/// <param name="endTime">The end time.</param>
|
||||
/// <param name="index">The index.</param>
|
||||
/// <param name="retNum">The ret number.</param>
|
||||
TransactionData[] FetchTransaction(string userID, int startTime, int endTime, uint index, uint retNum);
|
||||
|
||||
/// <summary>Gets the transaction number.</summary>
|
||||
/// <param name="userID">The user identifier.</param>
|
||||
/// <param name="startTime">The start time.</param>
|
||||
/// <param name="endTime">The end time.</param>
|
||||
int getTransactionNum(string userID, int startTime, int endTime);
|
||||
|
||||
/// <summary>Adds the user.</summary>
|
||||
/// <param name="userID">The user identifier.</param>
|
||||
/// <param name="balance">The balance.</param>
|
||||
/// <param name="status">The status.</param>
|
||||
/// <param name="type">The type.</param>
|
||||
bool addUser(string userID, int balance, int status, int type);
|
||||
|
||||
/// <summary>Sets the trans expired.</summary>
|
||||
/// <param name="deadTime">The dead time.</param>
|
||||
bool SetTransExpired(int deadTime);
|
||||
|
||||
/// <summary>Validates the transfer.</summary>
|
||||
/// <param name="secureCode">The secure code.</param>
|
||||
/// <param name="transactionID">The transaction identifier.</param>
|
||||
bool ValidateTransfer(string secureCode, UUID transactionID);
|
||||
|
||||
/// <summary>Adds the user information.</summary>
|
||||
/// <param name="user">The user.</param>
|
||||
bool addUserInfo(UserInfo user);
|
||||
|
||||
/// <summary>Fetches the user information.</summary>
|
||||
/// <param name="userID">The user identifier.</param>
|
||||
UserInfo fetchUserInfo(string userID);
|
||||
|
||||
/// <summary>Updates the user information.</summary>
|
||||
/// <param name="user">The user.</param>
|
||||
bool updateUserInfo(UserInfo user);
|
||||
}
|
||||
}
|
||||
+1938
File diff suppressed because it is too large
Load Diff
+100
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/ See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSim Project nor the names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Funktion
|
||||
Die Klasse MySQLSuperManager dient als Wrapper/Manager für einen Thread-Sicherheitsmechanismus (Mutex) und kapselt eine Instanz von MySQLMoneyManager.
|
||||
Sie enthält:
|
||||
Ein Mutex-Objekt für Thread-Synchronisation.
|
||||
Ein Flag Locked zur Statusanzeige.
|
||||
Eine öffentliche Instanz von MySQLMoneyManager namens Manager.
|
||||
Die Methode GetLock() blockiert, bis der Mutex verfügbar ist.
|
||||
Die Methode Release() gibt den Mutex frei und behandelt freigabe-bezogene Fehler.
|
||||
Ein String Running (wird hier aber nicht verwendet).
|
||||
|
||||
Null Pointer Checks
|
||||
Manager: Im Konstruktor wird garantiert, dass Manager immer initialisiert ist (niemals null nach Konstruktion).
|
||||
m_lock: Wird direkt beim Feld-Deklaration erstellt, kann also nie null sein.
|
||||
Locked: Ist ein bool, daher nie null.
|
||||
Running: Ist public, aber im Code nicht direkt verwendet. Wenn er von außen auf null gesetzt wird, kann das keinen Fehler verursachen, da er nicht verwendet wird.
|
||||
|
||||
Fehlerquellen
|
||||
Mutex-Handling:
|
||||
In Release() wird das Freigeben des Mutex von einem Try-Catch-Block umschlossen. Sollte ein Fehler beim Freigeben auftreten (z.B. Freigabe von einem Thread, der den Mutex nicht besitzt), wird die Exception geloggt und erneut geworfen.
|
||||
In GetLock() wird WaitOne() direkt aufgerufen, was blockiert, bis der Lock verfügbar ist. Es gibt hier keine Exception-Absicherung, aber üblicherweise ist dies sicher, solange das Objekt korrekt verwendet wird.
|
||||
|
||||
Thread-Safety:
|
||||
Die Klasse ist thread-safe bezüglich des Mutex, nicht aber bezüglich der Instanzvariablen (Running ist public ohne Schutz, aber nicht verwendet).
|
||||
Es wird kein expliziter Null-Check auf Manager benötigt, da sie im Konstruktor immer initialisiert wird.
|
||||
|
||||
Unbenutzte Variable:
|
||||
Das Feld Running ist nicht implementiert/genutzt. Das ist kein Fehler, aber ein Hinweis auf evtl. toten Code.
|
||||
|
||||
Zusammenfassung
|
||||
Null Pointer: Keine Gefahr für NullPointer-Exceptions im aktuellen Code.
|
||||
Fehlerquellen: Einzige potenzielle Fehlerquelle ist das Freigeben des Mutex in Release(), aber dies wird per Exception abgefangen und geloggt.
|
||||
Funktion: Thread-Safe-Manager/Wrapper für den Zugriff auf einen MySQLMoneyManager.
|
||||
|
||||
Fazit:
|
||||
Die Klasse ist solide und sicher gegen NullPointer-Fehler. Fehler beim Mutex-Handling werden korrekt behandelt. Es gibt keine offensichtlichen Schwachstellen.
|
||||
Lediglich das Feld Running ist ungenutzt und könnte entfernt oder implementiert werden.
|
||||
*/
|
||||
|
||||
using MySqlX.XDevAPI;
|
||||
|
||||
using OpenMetaverse.ImportExport.Collada14;
|
||||
|
||||
using OpenSim.Data.MySQL.MySQLMoneyDataWrapper;
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.ConstrainedExecution;
|
||||
using System.Threading;
|
||||
|
||||
namespace OpenSim.Data.MySQL.MySQLMoneyDataWrapper
|
||||
{
|
||||
public class MySQLSuperManager(string connectionString)
|
||||
{
|
||||
public bool Locked { get; private set; }
|
||||
private readonly Mutex m_lock = new(false);
|
||||
public MySQLMoneyManager Manager { get; } = new MySQLMoneyManager(connectionString);
|
||||
public string Running;
|
||||
|
||||
/// <summary>Erwirbt die exklusive Sperre für kritische Operationen.</summary>
|
||||
public void GetLock()
|
||||
{
|
||||
m_lock.WaitOne();
|
||||
Locked = true;
|
||||
}
|
||||
|
||||
/// <summary>Gibt die Sperre wieder frei.</summary>
|
||||
public void Release()
|
||||
{
|
||||
try
|
||||
{
|
||||
m_lock.ReleaseMutex();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine($"Ein Fehler beim Freigeben des Mutex ist aufgetreten: {ex.Message}");
|
||||
throw;
|
||||
}
|
||||
finally
|
||||
{
|
||||
Locked = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("OpenSim.Data.MySQL.MySQLMoneyDataWrapper")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("OpenSim.Data.MySQL.MySQLMoneyDataWrapper")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2009")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("03f4a266-2e30-47e4-b785-ff02cdb4bbb9")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
+291
@@ -0,0 +1,291 @@
|
||||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/ See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSim Project nor the names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
Funktion
|
||||
TransactionData ist eine reine Datenklasse (POCO/DTO), die alle relevanten Felder für eine Finanztransaktion im OpenSim-Money-Modul kapselt.
|
||||
Felder: UUIDs, Beträge, Balances, Typen, Zeiten, Status, Objekt- und Regionsdaten, Sicherheitscode, Beschreibung usw.
|
||||
Für alle Felder gibt es Properties mit Getter/Setter.
|
||||
Zwei Enums:
|
||||
Status (SUCCESS, PENDING, FAILED, ERROR)
|
||||
AvatarType (diverse Avatar-Typen, z.B. LOCAL, HG, GUEST, NPC)
|
||||
UserInfo ist ebenfalls eine reine Datenklasse für Benutzerinformationen, mit Properties für UserID, SimIP, Name, Passwort-Hash, Typ, Klasse, ServerURL.
|
||||
|
||||
Null Pointer & Fehlerquellen
|
||||
Null Pointer
|
||||
Felder vom Typ string werden grundsätzlich mit string.Empty initialisiert (niemals null im Standardzustand).
|
||||
UUIDs werden (soweit gesetzt) aus dem Typ OpenMetaverse.UUID initialisiert – dieser Typ ist ein struct und kann daher nie null sein.
|
||||
Es gibt keine Methoden mit Logik, daher auch keine Parameterprüfungen oder komplexe Objekt-Manipulationen, bei denen NullPointer auftreten könnten.
|
||||
Setter/Getter der Properties geben direkt das Feld zurück oder setzen es, ohne Logik.
|
||||
Die Enums können nicht null sein.
|
||||
|
||||
Fehlerquellen
|
||||
Keine Methoden mit Logik, also keine klassische Fehlerquelle wie Division durch 0, Indexfehler o.ä.
|
||||
Setter führen keine Validierung durch (z.B. auf gültige UUIDs, Wertebereiche),
|
||||
was bei fehlerhafter Nutzung zu inkonsistenten Daten führen könnte – das ist aber kein NullPointer und im Kontext von Datenklassen üblich.
|
||||
UserInfo: Alle Felder sind mit sinnvollen Defaultwerten versehen (string.Empty oder ein Enum-Wert).
|
||||
|
||||
Zusammenfassung
|
||||
Null Pointer: Es gibt im aktuellen Code keine Gefahr für NullPointer-Exceptions, da alle Felder mit Defaultwerten belegt sind und keine Logik existiert.
|
||||
Fehlerquellen: Keine Methoden, keine Validierung – klassisch für Datenklassen.
|
||||
Fehler können nur entstehen, wenn von außen ungültige Werte gesetzt werden, aber das verursacht keine NullPointer-Fehler.
|
||||
Funktion: Kapselt Daten für Transaktionen und Benutzer im OpenSim-Money-System.
|
||||
|
||||
Fazit:
|
||||
Die Datei ist eine reine Datenstruktur und sicher gegenüber NullPointer-Fehlern. Es gibt keine gefährlichen Stellen im Code.
|
||||
Die Nutzung ist robust, solange von außen sinnvolle Werte gesetzt werden.
|
||||
*/
|
||||
|
||||
using OpenMetaverse;
|
||||
|
||||
|
||||
namespace OpenSim.Data.MySQL.MySQLMoneyDataWrapper
|
||||
{
|
||||
public class TransactionData
|
||||
{
|
||||
UUID m_uuid;
|
||||
string m_sender = string.Empty;
|
||||
string m_receiver = string.Empty;
|
||||
int m_amount;
|
||||
int m_senderBalance;
|
||||
int m_receiverBalance;
|
||||
int m_type;
|
||||
int m_time;
|
||||
int m_status;
|
||||
string m_objectID = UUID.Zero.ToString();
|
||||
string m_objectName = string.Empty;
|
||||
string m_regionHandle = string.Empty;
|
||||
string m_regionUUID = string.Empty;
|
||||
string m_secureCode = string.Empty;
|
||||
string m_commonName = string.Empty;
|
||||
string m_description = string.Empty;
|
||||
|
||||
/// <summary>Gets or sets the trans UUID.</summary>
|
||||
/// <value>The trans UUID.</value>
|
||||
public UUID TransUUID
|
||||
{
|
||||
get { return m_uuid; }
|
||||
set { m_uuid = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the sender.</summary>
|
||||
/// <value>The sender.</value>
|
||||
public string Sender
|
||||
{
|
||||
get { return m_sender; }
|
||||
set { m_sender = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the receiver.</summary>
|
||||
/// <value>The receiver.</value>
|
||||
public string Receiver
|
||||
{
|
||||
get { return m_receiver; }
|
||||
set { m_receiver = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the amount.</summary>
|
||||
/// <value>The amount.</value>
|
||||
public int Amount
|
||||
{
|
||||
get { return m_amount; }
|
||||
set { m_amount = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the sender balance.</summary>
|
||||
/// <value>The sender balance.</value>
|
||||
public int SenderBalance
|
||||
{
|
||||
get { return m_senderBalance; }
|
||||
set { m_senderBalance = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the receiver balance.</summary>
|
||||
/// <value>The receiver balance.</value>
|
||||
public int ReceiverBalance
|
||||
{
|
||||
get { return m_receiverBalance; }
|
||||
set { m_receiverBalance = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the type.</summary>
|
||||
/// <value>The type.</value>
|
||||
public int Type
|
||||
{
|
||||
get { return m_type; }
|
||||
set { m_type = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the time.</summary>
|
||||
/// <value>The time.</value>
|
||||
public int Time
|
||||
{
|
||||
get { return m_time; }
|
||||
set { m_time = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the status.</summary>
|
||||
/// <value>The status.</value>
|
||||
public int Status
|
||||
{
|
||||
get { return m_status; }
|
||||
set { m_status = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the description.</summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description
|
||||
{
|
||||
get { return m_description; }
|
||||
set { m_description = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the object UUID.</summary>
|
||||
/// <value>The object UUID.</value>
|
||||
public string ObjectUUID
|
||||
{
|
||||
get { return m_objectID; }
|
||||
set { m_objectID = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the name of the object.</summary>
|
||||
/// <value>The name of the object.</value>
|
||||
public string ObjectName
|
||||
{
|
||||
get { return m_objectName; }
|
||||
set { m_objectName = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the region handle.</summary>
|
||||
/// <value>The region handle.</value>
|
||||
public string RegionHandle
|
||||
{
|
||||
get { return m_regionHandle; }
|
||||
set { m_regionHandle = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the region UUID.</summary>
|
||||
/// <value>The region UUID.</value>
|
||||
public string RegionUUID
|
||||
{
|
||||
get { return m_regionUUID; }
|
||||
set { m_regionUUID = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the secure code.</summary>
|
||||
/// <value>The secure code.</value>
|
||||
public string SecureCode
|
||||
{
|
||||
get { return m_secureCode; }
|
||||
set { m_secureCode = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the name of the common.</summary>
|
||||
/// <value>The name of the common.</value>
|
||||
public string CommonName
|
||||
{
|
||||
get { return m_commonName; }
|
||||
set { m_commonName = value; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public enum Status
|
||||
{
|
||||
SUCCESS_STATUS = 0,
|
||||
PENDING_STATUS = 1,
|
||||
FAILED_STATUS = 2,
|
||||
ERROR_STATUS = 9
|
||||
}
|
||||
|
||||
|
||||
public enum AvatarType
|
||||
{
|
||||
LOCAL_AVATAR = 0,
|
||||
HG_AVATAR = 1,
|
||||
NPC_AVATAR = 2,
|
||||
GUEST_AVATAR = 3,
|
||||
FOREIGN_AVATAR = 8,
|
||||
UNKNOWN_AVATAR = 9
|
||||
}
|
||||
|
||||
|
||||
public class UserInfo
|
||||
{
|
||||
string m_userID = string.Empty;
|
||||
string m_simIP = string.Empty;
|
||||
string m_avatarName = string.Empty;
|
||||
string m_passwordHash = string.Empty;
|
||||
int m_avatarType = (int)AvatarType.LOCAL_AVATAR;
|
||||
int m_avatarClass = (int)AvatarType.LOCAL_AVATAR;
|
||||
string m_serverURL = string.Empty;
|
||||
|
||||
/// <summary>Gets or sets the user identifier.</summary>
|
||||
/// <value>The user identifier.</value>
|
||||
public string UserID
|
||||
{
|
||||
get { return m_userID; }
|
||||
set { m_userID = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the sim ip.</summary>
|
||||
/// <value>The sim ip.</value>
|
||||
public string SimIP
|
||||
{
|
||||
get { return m_simIP; }
|
||||
set { m_simIP = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the avatar.</summary>
|
||||
/// <value>The avatar.</value>
|
||||
public string Avatar
|
||||
{
|
||||
get { return m_avatarName; }
|
||||
set { m_avatarName = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the PSW hash.</summary>
|
||||
/// <value>The PSW hash.</value>
|
||||
public string PswHash
|
||||
{
|
||||
get { return m_passwordHash; }
|
||||
set { m_passwordHash = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the type.</summary>
|
||||
/// <value>The type.</value>
|
||||
public int Type
|
||||
{
|
||||
get { return m_avatarType; }
|
||||
set { m_avatarType = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the class.</summary>
|
||||
/// <value>The class.</value>
|
||||
public int Class
|
||||
{
|
||||
get { return m_avatarClass; }
|
||||
set { m_avatarClass = value; }
|
||||
}
|
||||
|
||||
/// <summary>Gets or sets the server URL.</summary>
|
||||
/// <value>The server URL.</value>
|
||||
public string ServerURL
|
||||
{
|
||||
get { return m_serverURL; }
|
||||
set { m_serverURL = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
+39
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" ?>
|
||||
<Project name="OpenSim.Data.MySQL.MySQLMoneyDataWrapper" path="addon-modules/OpenSim-Data-MySQL-MySQLMoneyDataWrapper" type="Library">
|
||||
<Configuration name="Debug">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
<AllowUnsafe>true</AllowUnsafe>
|
||||
</Options>
|
||||
</Configuration>
|
||||
<Configuration name="Release">
|
||||
<Options>
|
||||
<OutputPath>../../bin/</OutputPath>
|
||||
<AllowUnsafe>true</AllowUnsafe>
|
||||
</Options>
|
||||
</Configuration>
|
||||
|
||||
<ReferencePath>../../bin/</ReferencePath>
|
||||
<Reference name="Nini" path="../../bin/"/>
|
||||
<Reference name="Mono.Addins" path="../../bin/"/>
|
||||
<Reference name="log4net" path="../../bin/"/>
|
||||
<Reference name="OpenMetaverse" path="../../bin/"/>
|
||||
<Reference name="OpenMetaverseTypes" path="../../bin/"/>
|
||||
<Reference name="XMLRPC" path="../../bin/"/>
|
||||
<Reference name="MySql.Data" path="../../bin/"/>
|
||||
<Reference name="OpenSim.Region.Framework"/>
|
||||
<Reference name="OpenSim.Framework"/>
|
||||
<Reference name="OpenSim.Framework.Console"/>
|
||||
<Reference name="OpenSim.Framework.Servers"/>
|
||||
<Reference name="OpenSim.Framework.Servers.HttpServer"/>
|
||||
<Reference name="OpenSim.Services.Interfaces"/>
|
||||
<Reference name="OpenSim.Server.Base"/>
|
||||
<Reference name="OpenSim.Data"/>
|
||||
|
||||
<Files>
|
||||
<Match pattern="*.cs" recurse="true">
|
||||
<Exclude name="obj" pattern="obj"/>
|
||||
<Exclude name="Tests" pattern="Tests"/>
|
||||
</Match>
|
||||
</Files>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user