* Cleaning code still.

0.6.0-stable
Adam Frisby 2008-05-01 16:41:01 +00:00
parent c803e0cca1
commit fc6c4dc399
41 changed files with 845 additions and 809 deletions

View File

@ -68,7 +68,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
for (int i = 0; i < regionsToLoad.Length; i++)
{
m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId.ToString() +
m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId +
")");
openSim.CreateRegion(regionsToLoad[i], true);
}
@ -106,7 +106,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
if (regionhandle == regionsToLoad[i].RegionHandle)
{
m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " +
Thread.CurrentThread.ManagedThreadId.ToString() + ")");
Thread.CurrentThread.ManagedThreadId + ")");
openSim.CreateRegion(regionsToLoad[i], true);
}
}

View File

@ -54,11 +54,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController
private BaseHttpServer m_httpd;
private string requiredPassword = String.Empty;
#region IApplicationPlugin Members
public void Initialise(OpenSimMain openSim)
{
try
{
if (openSim.ConfigSource.Configs["RemoteAdmin"] != null &&
if (openSim.ConfigSource.Configs["RemoteAdmin"] != null &&
openSim.ConfigSource.Configs["RemoteAdmin"].GetBoolean("enabled", false))
{
m_log.Info("[RADMIN]: Remote Admin Plugin Enabled");
@ -82,6 +84,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
}
}
public void Close()
{
}
#endregion
public XmlRpcResponse XmlRpcRestartMethod(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
@ -90,13 +98,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable responseData = new Hashtable();
m_log.Info("[RADMIN]: Request to restart Region.");
try {
checkStringParameters(request, new string[] { "password", "regionID" });
try
{
checkStringParameters(request, new[] {"password", "regionID"});
if (requiredPassword != String.Empty &&
(!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
throw new Exception("wrong password");
LLUUID regionID = new LLUUID((string) requestData["regionID"]);
responseData["accepted"] = "true";
@ -106,11 +115,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
if (!m_app.SceneManager.TryGetScene(regionID, out rebootedScene))
throw new Exception("region not found");
responseData["rebooting"] = "true";
rebootedScene.Restart(30);
}
catch(Exception e)
}
catch (Exception e)
{
m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0}", e.Message);
m_log.DebugFormat("[RADMIN]: Restart region: failed: {0}", e.ToString());
@ -130,13 +139,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
try {
checkStringParameters(request, new string[] { "password", "message" });
try
{
checkStringParameters(request, new[] {"password", "message"});
if (requiredPassword != String.Empty &&
(!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
throw new Exception("wrong password");
string message = (string) requestData["message"];
m_log.InfoFormat("[RADMIN]: Broadcasting: {0}", message);
@ -145,7 +155,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
m_app.SceneManager.SendGeneralMessage(message);
}
catch(Exception e)
catch (Exception e)
{
m_log.ErrorFormat("[RADMIN]: Broadcasting: failed: {0}", e.Message);
m_log.DebugFormat("[RADMIN]: Broadcasting: failed: {0}", e.ToString());
@ -162,24 +172,25 @@ namespace OpenSim.ApplicationPlugins.RemoteController
public XmlRpcResponse XmlRpcLoadHeightmapMethod(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}", request.ToString());
foreach (string k in requestData.Keys)
{
m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}",
k, (string)requestData[k], ((string)requestData[k]).Length);
m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}",
k, requestData[k], ((string) requestData[k]).Length);
}
Hashtable responseData = new Hashtable();
try {
checkStringParameters(request, new string[] { "password", "filename", "regionid"});
try
{
checkStringParameters(request, new[] {"password", "filename", "regionid"});
if (requiredPassword != String.Empty &&
(!requestData.Contains("password") || (string)requestData["password"] != requiredPassword))
(!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
throw new Exception("wrong password");
string file = (string)requestData["filename"];
string file = (string) requestData["filename"];
LLUUID regionID = (string) requestData["regionid"];
m_log.InfoFormat("[RADMIN]: Terrain Loading: {0}", file);
@ -198,7 +209,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
response.Value = responseData;
}
catch (Exception e)
catch (Exception e)
{
m_log.ErrorFormat("[RADMIN] Terrain Loading: failed: {0}", e.Message);
m_log.DebugFormat("[RADMIN] Terrain Loading: failed: {0}", e.ToString());
@ -217,7 +228,8 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
try {
try
{
if (requiredPassword != String.Empty &&
(!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
throw new Exception("wrong password");
@ -227,14 +239,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController
int timeout = 2000;
if (requestData.ContainsKey("shutdown") &&
if (requestData.ContainsKey("shutdown") &&
((string) requestData["shutdown"] == "delayed") &&
requestData.ContainsKey("milliseconds"))
{
timeout = (Int32) requestData["milliseconds"];
m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int) (timeout/1000)).ToString() +
m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((timeout / 1000)) +
" second(s). Please save what you are doing and log out.");
}
}
else
{
m_app.SceneManager.SendGeneralMessage("Region is going down now.");
@ -243,12 +255,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// Perform shutdown
Timer shutdownTimer = new Timer(timeout); // Wait before firing
shutdownTimer.AutoReset = false;
shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed);
shutdownTimer.Elapsed += shutdownTimer_Elapsed;
shutdownTimer.Start();
responseData["success"] = "true";
}
catch (Exception e)
catch (Exception e)
{
m_log.ErrorFormat("[RADMIN] Shutdown: failed: {0}", e.Message);
m_log.DebugFormat("[RADMIN] Shutdown: failed: {0}", e.ToString());
@ -272,9 +284,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
foreach (string p in param)
{
if (!requestData.Contains(p))
if (!requestData.Contains(p))
throw new Exception(String.Format("missing string parameter {0}", p));
if (String.IsNullOrEmpty((string)requestData[p]))
if (String.IsNullOrEmpty((string) requestData[p]))
throw new Exception(String.Format("parameter {0} is empty", p));
}
}
@ -284,7 +296,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
foreach (string p in param)
{
if (!requestData.Contains(p))
if (!requestData.Contains(p))
throw new Exception(String.Format("missing integer parameter {0}", p));
}
}
@ -345,31 +357,35 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
try {
checkStringParameters(request, new string[] { "password",
"region_name",
"region_master_first", "region_master_last",
"region_master_password",
"listen_ip", "external_address"});
checkIntegerParams(request, new string[] { "region_x", "region_y", "listen_port"});
try
{
checkStringParameters(request, new[]
{
"password",
"region_name",
"region_master_first", "region_master_last",
"region_master_password",
"listen_ip", "external_address"
});
checkIntegerParams(request, new[] {"region_x", "region_y", "listen_port"});
// check password
if (!String.IsNullOrEmpty(requiredPassword) &&
(string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
(string) requestData["password"] != requiredPassword) throw new Exception("wrong password");
// extract or generate region ID now
Scene scene = null;
LLUUID regionID = LLUUID.Zero;
if (requestData.ContainsKey("region_id") &&
!String.IsNullOrEmpty((string)requestData["region_id"]))
if (requestData.ContainsKey("region_id") &&
!String.IsNullOrEmpty((string) requestData["region_id"]))
{
regionID = (string) requestData["region_id"];
if (m_app.SceneManager.TryGetScene(regionID, out scene))
if (m_app.SceneManager.TryGetScene(regionID, out scene))
throw new Exception(String.Format("region UUID already in use by region {0}, UUID {1}, <{2},{3}>",
scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
}
else
}
else
{
regionID = LLUUID.Random();
m_log.DebugFormat("[RADMIN] CreateRegion: new region UUID {0}", regionID);
@ -385,7 +401,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
// check for collisions: region name, region UUID,
// region location
if (m_app.SceneManager.TryGetScene(region.RegionName, out scene))
if (m_app.SceneManager.TryGetScene(region.RegionName, out scene))
throw new Exception(String.Format("region name already in use by region {0}, UUID {1}, <{2},{3}>",
scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
@ -395,46 +411,46 @@ namespace OpenSim.ApplicationPlugins.RemoteController
region.RegionLocX, region.RegionLocY,
scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
// Security risk [and apparently not used]
// if (requestData.ContainsKey("datastore"))
// region.DataStore = (string) requestData["datastore"];
region.InternalEndPoint =
region.InternalEndPoint =
new IPEndPoint(IPAddress.Parse((string) requestData["listen_ip"]), 0);
region.InternalEndPoint.Port = (Int32) requestData["listen_port"];
if (0 == region.InternalEndPoint.Port) throw new Exception("listen_port is 0");
if (m_app.SceneManager.TryGetScene(region.InternalEndPoint, out scene))
throw new Exception(String.Format("region internal IP {0} and port {1} already in use by region {2}, UUID {3}, <{4},{5}>",
region.InternalEndPoint.Address,
region.InternalEndPoint.Address,
region.InternalEndPoint.Port,
scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
region.ExternalHostName = (string) requestData["external_address"];
region.MasterAvatarFirstName = (string) requestData["region_master_first"];
region.MasterAvatarLastName = (string) requestData["region_master_last"];
region.MasterAvatarSandboxPassword = (string) requestData["region_master_password"];
bool persist = Convert.ToBoolean((string)requestData["persist"]);
if (persist)
bool persist = Convert.ToBoolean((string) requestData["persist"]);
if (persist)
{
string regionConfigPath = Path.Combine(Path.Combine(Util.configDir(), "Regions"),
String.Format("{0}x{1}-{2}.xml",
region.RegionLocX.ToString(),
region.RegionLocY.ToString(),
regionID.ToString()));
m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}",
region.RegionLocX,
region.RegionLocY,
regionID));
m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}",
region.RegionID, regionConfigPath);
region.SaveRegionToFile("dynamic region", regionConfigPath);
}
m_app.CreateRegion(region);
responseData["success"] = "true";
responseData["success"] = "true";
responseData["region_name"] = region.RegionName;
responseData["region_uuid"] = region.RegionID.ToString();
@ -497,48 +513,52 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
try
try
{
// check completeness
checkStringParameters(request, new string[] { "password", "user_firstname",
"user_lastname", "user_password" });
checkIntegerParams(request, new string[] { "start_region_x", "start_region_y" });
checkStringParameters(request, new[]
{
"password", "user_firstname",
"user_lastname", "user_password"
});
checkIntegerParams(request, new[] {"start_region_x", "start_region_y"});
// check password
if (!String.IsNullOrEmpty(requiredPassword) &&
(string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
(string) requestData["password"] != requiredPassword) throw new Exception("wrong password");
// do the job
string firstname = (string) requestData["user_firstname"];
string lastname = (string) requestData["user_lastname"];
string passwd = (string) requestData["user_password"];
uint regX = Convert.ToUInt32((Int32)requestData["start_region_x"]);
uint regY = Convert.ToUInt32((Int32)requestData["start_region_y"]);
string lastname = (string) requestData["user_lastname"];
string passwd = (string) requestData["user_password"];
uint regX = Convert.ToUInt32((Int32) requestData["start_region_x"]);
uint regY = Convert.ToUInt32((Int32) requestData["start_region_y"]);
UserProfileData userProfile = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname);
if (null != userProfile)
if (null != userProfile)
throw new Exception(String.Format("avatar {0} {1} already exists", firstname, lastname));
LLUUID userID = m_app.CreateUser(firstname, lastname, passwd, regX, regY);
if (userID == LLUUID.Zero) throw new Exception(String.Format("failed to create new user {0} {1}",
firstname, lastname));
responseData["success"] = "true";
if (userID == LLUUID.Zero)
throw new Exception(String.Format("failed to create new user {0} {1}",
firstname, lastname));
responseData["success"] = "true";
responseData["avatar_uuid"] = userID.ToString();
response.Value = responseData;
m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, userID);
}
catch (Exception e)
catch (Exception e)
{
m_log.ErrorFormat("[RADMIN] CreateUser: failed: {0}", e.Message);
m_log.DebugFormat("[RADMIN] CreateUser: failed: {0}", e.ToString());
responseData["success"] = "false";
responseData["success"] = "false";
responseData["avatar_uuid"] = LLUUID.Zero.ToString();
responseData["error"] = e.Message;
responseData["error"] = e.Message;
response.Value = responseData;
}
@ -553,33 +573,33 @@ namespace OpenSim.ApplicationPlugins.RemoteController
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
try
try
{
// check completeness
foreach (string p in new string[] { "password", "filename" })
foreach (string p in new[] {"password", "filename"})
{
if (!requestData.Contains(p))
if (!requestData.Contains(p))
throw new Exception(String.Format("missing parameter {0}", p));
if (String.IsNullOrEmpty((string)requestData[p]))
if (String.IsNullOrEmpty((string) requestData[p]))
throw new Exception(String.Format("parameter {0} is empty"));
}
// check password
if (!String.IsNullOrEmpty(requiredPassword) &&
(string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
string filename = (string)requestData["filename"];
(string) requestData["password"] != requiredPassword) throw new Exception("wrong password");
string filename = (string) requestData["filename"];
if (requestData.Contains("region_uuid"))
{
LLUUID region_uuid = (string)requestData["region_uuid"];
if (!m_app.SceneManager.TrySetCurrentScene(region_uuid))
throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString()));
LLUUID region_uuid = (string) requestData["region_uuid"];
if (!m_app.SceneManager.TrySetCurrentScene(region_uuid))
throw new Exception(String.Format("failed to switch to region {0}", region_uuid));
m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString());
}
else if (requestData.Contains("region_name"))
{
string region_name = (string)requestData["region_name"];
if (!m_app.SceneManager.TrySetCurrentScene(region_name))
string region_name = (string) requestData["region_name"];
if (!m_app.SceneManager.TrySetCurrentScene(region_name))
throw new Exception(String.Format("failed to switch to region {0}", region_name));
m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name);
}
@ -588,27 +608,23 @@ namespace OpenSim.ApplicationPlugins.RemoteController
responseData["switched"] = "true";
m_app.SceneManager.LoadCurrentSceneFromXml(filename, true, new LLVector3(0, 0, 0));
responseData["loaded"] = "true";
response.Value = responseData;
responseData["loaded"] = "true";
response.Value = responseData;
}
catch (Exception e)
{
m_log.InfoFormat("[RADMIN] LoadXml: {0}", e.Message);
m_log.DebugFormat("[RADMIN] LoadXml: {0}", e.ToString());
responseData["loaded"] = "false";
responseData["loaded"] = "false";
responseData["switched"] = "false";
responseData["error"] = e.Message;
response.Value = responseData;
}
return response;
}
responseData["error"] = e.Message;
public void Close()
{
response.Value = responseData;
}
return response;
}
}
}

View File

@ -70,7 +70,7 @@ namespace OpenSim.Data.MSSQL
override public AssetBase FetchAsset(LLUUID assetID)
{
AssetBase asset = null;
AssetBase asset;
Dictionary<string, string> param = new Dictionary<string, string>();
param["id"] = assetID.ToString();

View File

@ -46,14 +46,48 @@ namespace OpenSim.Grid.AssetServer
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public static OpenAsset_Main assetserver;
// Temporarily hardcoded - should be a plugin
protected IAssetLoader assetLoader = new AssetLoaderFileSystem();
private IAssetProvider m_assetProvider;
public AssetConfig m_config;
public static OpenAsset_Main assetserver;
// Temporarily hardcoded - should be a plugin
protected IAssetLoader assetLoader = new AssetLoaderFileSystem();
private IAssetProvider m_assetProvider;
public OpenAsset_Main()
{
m_console = new ConsoleBase("OpenAsset", this);
MainConsole.Instance = m_console;
}
#region conscmd_callback Members
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice(
@"shutdown - shutdown this asset server (USE CAUTION!)
stats - statistical information for this server");
break;
case "stats":
m_console.Notice("STATS", Environment.NewLine + StatsManager.AssetStats.Report());
break;
case "shutdown":
m_console.Close();
Environment.Exit(0);
break;
}
}
#endregion
[STAThread]
public static void Main(string[] args)
@ -78,13 +112,6 @@ namespace OpenSim.Grid.AssetServer
}
}
public OpenAsset_Main()
{
m_console = new ConsoleBase("OpenAsset", this);
MainConsole.Instance = m_console;
}
public void Startup()
{
m_config = new AssetConfig("ASSET SERVER", (Path.Combine(Util.configDir(), "AssetServer_Config.xml")));
@ -160,42 +187,18 @@ namespace OpenSim.Grid.AssetServer
catch (Exception e)
{
m_log.Warn("[ASSET]: setupDB() - Exception occured");
m_log.Warn("[ASSET]: " + e.ToString());
m_log.Warn("[ASSET]: " + e);
}
}
public void LoadDefaultAssets()
{
assetLoader.ForEachDefaultXmlAsset(StoreAsset);
assetLoader.ForEachDefaultXmlAsset(StoreAsset);
}
protected void StoreAsset(AssetBase asset)
{
m_assetProvider.CreateAsset(asset);
}
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice(
@"shutdown - shutdown this asset server (USE CAUTION!)
stats - statistical information for this server");
break;
case "stats":
m_console.Notice("STATS", Environment.NewLine + StatsManager.AssetStats.Report());
break;
case "shutdown":
m_console.Close();
Environment.Exit(0);
break;
}
}
}
}
}

View File

@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
//
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]

View File

@ -43,8 +43,8 @@ namespace OpenSim.Grid.AssetServer
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly IAssetProvider m_assetProvider;
private OpenAsset_Main m_assetManager;
private IAssetProvider m_assetProvider;
/// <summary>
/// Constructor.
@ -58,28 +58,28 @@ namespace OpenSim.Grid.AssetServer
m_assetManager = assetManager;
m_assetProvider = assetProvider;
}
public override byte[] Handle(string path, Stream request)
{
string param = GetParam(path);
byte[] result = new byte[] {};
string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
string[] p = param.Split(new[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
if (p.Length > 0)
{
LLUUID assetID = null;
LLUUID assetID = null;
if (!LLUUID.TryParse(p[0], out assetID))
{
m_log.InfoFormat(
"[REST]: GET:/asset ignoring request with malformed UUID {0}", p[0]);
return result;
}
}
if (StatsManager.AssetStats != null)
StatsManager.AssetStats.AddRequest();
AssetBase asset = m_assetProvider.FetchAsset(assetID);
if (asset != null)
{
@ -94,32 +94,39 @@ namespace OpenSim.Grid.AssetServer
//StreamReader sr = new StreamReader(ms);
result = ms.GetBuffer();
m_log.InfoFormat(
"[REST]: GET:/asset found {0} with name {1}, size {2} bytes",
assetID, asset.Name, result.Length);
Array.Resize<byte>(ref result, (int) ms.Length);
Array.Resize(ref result, (int) ms.Length);
}
else
{
if (StatsManager.AssetStats != null)
StatsManager.AssetStats.AddNotFoundRequest();
m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID);
}
}
return result;
}
return result;
}
}
public class PostAssetStreamHandler : BaseStreamHandler
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly IAssetProvider m_assetProvider;
private OpenAsset_Main m_assetManager;
private IAssetProvider m_assetProvider;
public PostAssetStreamHandler(OpenAsset_Main assetManager, IAssetProvider assetProvider)
: base("POST", "/assets")
{
m_assetManager = assetManager;
m_assetProvider = assetProvider;
}
public override byte[] Handle(string path, Stream request)
{
@ -139,12 +146,5 @@ namespace OpenSim.Grid.AssetServer
return new byte[] {};
}
public PostAssetStreamHandler(OpenAsset_Main assetManager, IAssetProvider assetProvider)
: base("POST", "/assets")
{
m_assetManager = assetManager;
m_assetProvider = assetProvider;
}
}
}
}

View File

@ -44,11 +44,11 @@ namespace OpenSim.Grid.GridServer
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
private Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
private readonly Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
// This is here so that the grid server can hand out MessageServer settings to regions on registration
private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>();
private readonly List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>();
private readonly Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
public GridConfig Config;
@ -72,7 +72,7 @@ namespace OpenSim.Grid.GridServer
if (typeInterface != null)
{
IGridData plug =
(IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
(IGridData) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
plug.Initialise();
_plugins.Add(plug.getName(), plug);
m_log.Info("[DATA]: Added IGridData Interface");
@ -84,7 +84,7 @@ namespace OpenSim.Grid.GridServer
if (typeInterface != null)
{
ILogData plug =
(ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
(ILogData) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
plug.Initialise();
_logplugins.Add(plug.getName(), plug);
m_log.Info("[DATA]: Added ILogData Interface");
@ -152,7 +152,7 @@ namespace OpenSim.Grid.GridServer
}
catch
{
m_log.Warn("[storage]: Unable to find region " + handle.ToString() + " via " + kvp.Key);
m_log.Warn("[storage]: Unable to find region " + handle + " via " + kvp.Key);
}
}
return null;
@ -218,20 +218,20 @@ namespace OpenSim.Grid.GridServer
{
if (
GetRegion(
Util.UIntsToLong((uint)((central_region.regionLocX + x) * Constants.RegionSize),
(uint)(central_region.regionLocY + y) * Constants.RegionSize)) != null)
Util.UIntsToLong((uint) ((central_region.regionLocX + x) * Constants.RegionSize),
(uint) (central_region.regionLocY + y) * Constants.RegionSize)) != null)
{
neighbour =
GetRegion(
Util.UIntsToLong((uint)((central_region.regionLocX + x) * Constants.RegionSize),
(uint)(central_region.regionLocY + y) * Constants.RegionSize));
Util.UIntsToLong((uint) ((central_region.regionLocX + x) * Constants.RegionSize),
(uint) (central_region.regionLocY + y) * Constants.RegionSize));
response += "<neighbour>";
response += "<sim_ip>" + neighbour.serverIP + "</sim_ip>";
response += "<sim_port>" + neighbour.serverPort.ToString() + "</sim_port>";
response += "<locx>" + neighbour.regionLocX.ToString() + "</locx>";
response += "<locy>" + neighbour.regionLocY.ToString() + "</locy>";
response += "<regionhandle>" + neighbour.regionHandle.ToString() + "</regionhandle>";
response += "<sim_port>" + neighbour.serverPort + "</sim_port>";
response += "<locx>" + neighbour.regionLocX + "</locx>";
response += "<locy>" + neighbour.regionLocY + "</locy>";
response += "<regionhandle>" + neighbour.regionHandle + "</regionhandle>";
response += "</neighbour>";
}
}
@ -287,10 +287,10 @@ namespace OpenSim.Grid.GridServer
RegionProfileData sim;
RegionProfileData existingSim;
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
LLUUID uuid;
if (!requestData.ContainsKey("UUID") || !LLUUID.TryParse((string)requestData["UUID"], out uuid))
if (!requestData.ContainsKey("UUID") || !LLUUID.TryParse((string) requestData["UUID"], out uuid))
{
m_log.Info("[GRID]: Region connected without a UUID, ignoring.");
return ErrorResponse("No UUID passed to grid server - unable to connect you");
@ -303,7 +303,7 @@ namespace OpenSim.Grid.GridServer
catch (FormatException e)
{
m_log.Info("[GRID]: Invalid login parameters, ignoring.");
return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString() );
return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e);
}
existingSim = GetRegion(sim.regionHandle);
@ -329,7 +329,7 @@ namespace OpenSim.Grid.GridServer
{
DataResponse insertResponse;
if( existingSim == null )
if (existingSim == null)
{
insertResponse = kvp.Value.AddProfile(sim);
}
@ -348,20 +348,20 @@ namespace OpenSim.Grid.GridServer
break;
case DataResponse.RESPONSE_INVALIDCREDENTIALS:
m_log.Warn("[storage]: " +
"New sim creation failed (Invalid Credentials): " + sim.regionName);
"New sim creation failed (Invalid Credentials): " + sim.regionName);
break;
case DataResponse.RESPONSE_AUTHREQUIRED:
m_log.Warn("[storage]: " +
"New sim creation failed (Authentication Required): " +
sim.regionName);
"New sim creation failed (Authentication Required): " +
sim.regionName);
break;
}
}
catch (Exception e)
{
m_log.Warn("[storage]: " +
"Unable to add region " + sim.UUID.ToString() + " via " + kvp.Key);
m_log.Warn("[storage]: " + e.ToString());
"Unable to add region " + sim.UUID + " via " + kvp.Key);
m_log.Warn("[storage]: " + e);
}
}
@ -375,7 +375,8 @@ namespace OpenSim.Grid.GridServer
{
m_log.Warn("[grid]: Authentication failed when trying to add new region " + sim.regionName +
" at location " + sim.regionLocX +
" " + sim.regionLocY + " with TheSim.regionRecvKey " + sim.regionRecvKey + "(" + Config.SimSendKey + ") and TheSim.regionRecvKey " + sim.regionSendKey + "(" + Config.SimRecvKey + ") ");
" " + sim.regionLocY + " with TheSim.regionRecvKey " + sim.regionRecvKey + "(" + Config.SimSendKey +
") and TheSim.regionRecvKey " + sim.regionSendKey + "(" + Config.SimRecvKey + ") ");
}
else
{
@ -389,7 +390,8 @@ namespace OpenSim.Grid.GridServer
}
else
{
m_log.Warn("[grid]: Failed to add new region " + sim.regionName + " at location " + sim.regionLocX + " " + sim.regionLocY + " currently occupied by " + existingSim.regionName);
m_log.Warn("[grid]: Failed to add new region " + sim.regionName + " at location " + sim.regionLocX + " " + sim.regionLocY +
" currently occupied by " + existingSim.regionName);
return ErrorResponse("Another region already exists at that location. Try another");
}
}
@ -464,7 +466,7 @@ namespace OpenSim.Grid.GridServer
foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours)
{
NeighbourBlock = new Hashtable();
NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.Value.serverIP.ToString()).ToString();
NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.Value.serverIP).ToString();
NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString();
NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString();
NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString();
@ -485,13 +487,13 @@ namespace OpenSim.Grid.GridServer
{
if (
GetRegion(
Helpers.UIntsToLong((uint)((sim.regionLocX + x) * Constants.RegionSize),
(uint)(sim.regionLocY + y) * Constants.RegionSize)) != null)
Helpers.UIntsToLong((uint) ((sim.regionLocX + x) * Constants.RegionSize),
(uint) (sim.regionLocY + y) * Constants.RegionSize)) != null)
{
neighbour =
GetRegion(
Helpers.UIntsToLong((uint)((sim.regionLocX + x) * Constants.RegionSize),
(uint)(sim.regionLocY + y) * Constants.RegionSize));
Helpers.UIntsToLong((uint) ((sim.regionLocX + x) * Constants.RegionSize),
(uint) (sim.regionLocY + y) * Constants.RegionSize));
NeighbourBlock = new Hashtable();
NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(neighbour.serverIP).ToString();
@ -519,27 +521,26 @@ namespace OpenSim.Grid.GridServer
RegionProfileData sim;
sim = new RegionProfileData();
sim.UUID = new LLUUID((string)requestData["UUID"]);
sim.originUUID = new LLUUID((string)requestData["originUUID"]);
sim.UUID = new LLUUID((string) requestData["UUID"]);
sim.originUUID = new LLUUID((string) requestData["originUUID"]);
sim.regionRecvKey = String.Empty;
sim.regionSendKey = String.Empty;
if (requestData.ContainsKey("region_secret"))
{
string regionsecret = (string)requestData["region_secret"];
string regionsecret = (string) requestData["region_secret"];
if (regionsecret.Length > 0)
sim.regionSecret = regionsecret;
else
sim.regionSecret = Config.SimRecvKey;
}
else
{
sim.regionSecret = Config.SimRecvKey;
}
sim.regionDataURI = String.Empty;
sim.regionAssetURI = Config.DefaultAssetServer;
sim.regionAssetRecvKey = Config.AssetRecvKey;
@ -548,16 +549,16 @@ namespace OpenSim.Grid.GridServer
sim.regionUserSendKey = Config.UserSendKey;
sim.regionUserRecvKey = Config.UserRecvKey;
sim.serverIP = (string)requestData["sim_ip"];
sim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]);
sim.httpPort = Convert.ToUInt32((string)requestData["http_port"]);
sim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]);
sim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]);
sim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]);
sim.serverIP = (string) requestData["sim_ip"];
sim.serverPort = Convert.ToUInt32((string) requestData["sim_port"]);
sim.httpPort = Convert.ToUInt32((string) requestData["http_port"]);
sim.remotingPort = Convert.ToUInt32((string) requestData["remoting_port"]);
sim.regionLocX = Convert.ToUInt32((string) requestData["region_locx"]);
sim.regionLocY = Convert.ToUInt32((string) requestData["region_locy"]);
sim.regionLocZ = 0;
LLUUID textureID;
if (LLUUID.TryParse((string)requestData["map-image-id"], out textureID))
if (LLUUID.TryParse((string) requestData["map-image-id"], out textureID))
{
sim.regionMapTextureID = textureID;
}
@ -570,21 +571,23 @@ namespace OpenSim.Grid.GridServer
//
// this particular section of the mod attempts to receive a value from the region's xml file by way of
// OSG1GridServices for the region's owner
sim.owner_uuid = (string)requestData["master_avatar_uuid"];
sim.owner_uuid = (string) requestData["master_avatar_uuid"];
try
{
sim.regionRecvKey = (string)requestData["recvkey"];
sim.regionSendKey = (string)requestData["authkey"];
sim.regionRecvKey = (string) requestData["recvkey"];
sim.regionSendKey = (string) requestData["authkey"];
}
catch (KeyNotFoundException)
{
}
catch (KeyNotFoundException) { }
sim.regionHandle = Helpers.UIntsToLong((sim.regionLocX * Constants.RegionSize), (sim.regionLocY * Constants.RegionSize));
sim.serverURI = (string)requestData["server_uri"];
sim.serverURI = (string) requestData["server_uri"];
sim.httpServerURI = "http://" + sim.serverIP + ":" + sim.httpPort + "/";
sim.regionName = (string)requestData["sim_name"];
sim.regionName = (string) requestData["sim_name"];
return sim;
}
@ -604,7 +607,7 @@ namespace OpenSim.Grid.GridServer
//RegionProfileData TheSim = null;
string uuid;
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
if (requestData.ContainsKey("UUID"))
{
@ -624,7 +627,7 @@ namespace OpenSim.Grid.GridServer
//OpenSim.Data.MySQL.MySQLGridData dbengine = new OpenSim.Data.MySQL.MySQLGridData();
try
{
MySQLGridData mysqldata = (MySQLGridData)(kvp.Value);
MySQLGridData mysqldata = (MySQLGridData) (kvp.Value);
//DataResponse insertResponse = mysqldata.DeleteProfile(TheSim);
DataResponse insertResponse = mysqldata.DeleteProfile(uuid);
switch (insertResponse)
@ -664,22 +667,22 @@ namespace OpenSim.Grid.GridServer
/// <returns></returns>
public XmlRpcResponse XmlRpcSimulatorDataRequestMethod(XmlRpcRequest request)
{
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
RegionProfileData simData = null;
if (requestData.ContainsKey("region_UUID"))
{
simData = GetRegion(new LLUUID((string)requestData["region_UUID"]));
simData = GetRegion(new LLUUID((string) requestData["region_UUID"]));
}
else if (requestData.ContainsKey("region_handle"))
{
//CFK: The if/else below this makes this message redundant.
//CFK: Console.WriteLine("requesting data for region " + (string) requestData["region_handle"]);
simData = GetRegion(Convert.ToUInt64((string)requestData["region_handle"]));
simData = GetRegion(Convert.ToUInt64((string) requestData["region_handle"]));
}
else if (requestData.ContainsKey("region_name_search"))
{
simData = GetRegion((string)requestData["region_name_search"]);
simData = GetRegion((string) requestData["region_name_search"]);
}
if (simData == null)
@ -690,8 +693,8 @@ namespace OpenSim.Grid.GridServer
}
else
{
m_log.Info("[DATA]: found " + (string)simData.regionName + " regionHandle = " +
(string)requestData["region_handle"]);
m_log.Info("[DATA]: found " + simData.regionName + " regionHandle = " +
(string) requestData["region_handle"]);
responseData["sim_ip"] = Util.GetHostFromDNS(simData.serverIP).ToString();
responseData["sim_port"] = simData.serverPort.ToString();
responseData["server_uri"] = simData.serverURI;
@ -713,22 +716,22 @@ namespace OpenSim.Grid.GridServer
{
int xmin = 980, ymin = 980, xmax = 1020, ymax = 1020;
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
if (requestData.ContainsKey("xmin"))
{
xmin = (Int32)requestData["xmin"];
xmin = (Int32) requestData["xmin"];
}
if (requestData.ContainsKey("ymin"))
{
ymin = (Int32)requestData["ymin"];
ymin = (Int32) requestData["ymin"];
}
if (requestData.ContainsKey("xmax"))
{
xmax = (Int32)requestData["xmax"];
xmax = (Int32) requestData["xmax"];
}
if (requestData.ContainsKey("ymax"))
{
ymax = (Int32)requestData["ymax"];
ymax = (Int32) requestData["ymax"];
}
//CFK: The second log is more meaningful and either standard or fast generally occurs.
//CFK: m_log.Info("[MAP]: World map request for range (" + xmin + "," + ymin + ")..(" + xmax + "," + ymax + ")");
@ -743,15 +746,15 @@ namespace OpenSim.Grid.GridServer
if (fastMode)
{
Dictionary<ulong, RegionProfileData> neighbours =
GetRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax);
GetRegions((uint) xmin, (uint) ymin, (uint) xmax, (uint) ymax);
foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours)
{
Hashtable simProfileBlock = new Hashtable();
simProfileBlock["x"] = aSim.Value.regionLocX.ToString();
simProfileBlock["y"] = aSim.Value.regionLocY.ToString();
Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX.ToString() + " , " +
aSim.Value.regionLocY.ToString());
Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX + " , " +
aSim.Value.regionLocY);
simProfileBlock["name"] = aSim.Value.regionName;
simProfileBlock["access"] = 21;
simProfileBlock["region-flags"] = 512;
@ -761,15 +764,15 @@ namespace OpenSim.Grid.GridServer
// For Sugilite compatibility
simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString();
simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString();
simProfileBlock["sim_ip"] = aSim.Value.serverIP;
simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString();
simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString();
simProfileBlock["sim_uri"] = aSim.Value.serverURI;
simProfileBlock["uuid"] = aSim.Value.UUID.ToString();
simProfileBlock["remoting_port"] = aSim.Value.remotingPort;
simProfileList.Add(simProfileBlock);
}
m_log.Info("[MAP]: Fast map " + simProfileList.Count.ToString() +
m_log.Info("[MAP]: Fast map " + simProfileList.Count +
" regions @ (" + xmin + "," + ymin + ")..(" + xmax + "," + ymax + ")");
}
else
@ -779,7 +782,7 @@ namespace OpenSim.Grid.GridServer
{
for (int y = ymin; y < ymax + 1; y++)
{
ulong regHandle = Helpers.UIntsToLong((uint)(x * Constants.RegionSize), (uint)(y * Constants.RegionSize));
ulong regHandle = Helpers.UIntsToLong((uint) (x * Constants.RegionSize), (uint) (y * Constants.RegionSize));
simProfile = GetRegion(regHandle);
if (simProfile != null)
{
@ -795,16 +798,16 @@ namespace OpenSim.Grid.GridServer
// For Sugilite compatibility
simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString();
simProfileBlock["sim_ip"] = simProfile.serverIP.ToString();
simProfileBlock["sim_ip"] = simProfile.serverIP;
simProfileBlock["sim_port"] = simProfile.serverPort.ToString();
simProfileBlock["sim_uri"] = simProfile.serverURI.ToString();
simProfileBlock["sim_uri"] = simProfile.serverURI;
simProfileBlock["uuid"] = simProfile.UUID.ToString();
simProfileList.Add(simProfileBlock);
}
}
}
m_log.Info("[MAP]: Std map " + simProfileList.Count.ToString() +
m_log.Info("[MAP]: Std map " + simProfileList.Count +
" regions @ (" + xmin + "," + ymin + ")..(" + xmax + "," + ymax + ")");
}
@ -860,12 +863,12 @@ namespace OpenSim.Grid.GridServer
respstring = "<Root>";
respstring += "<authkey>" + TheSim.regionSendKey + "</authkey>";
respstring += "<sim>";
respstring += "<uuid>" + TheSim.UUID.ToString() + "</uuid>";
respstring += "<uuid>" + TheSim.UUID + "</uuid>";
respstring += "<regionname>" + TheSim.regionName + "</regionname>";
respstring += "<sim_ip>" + Util.GetHostFromDNS(TheSim.serverIP).ToString() + "</sim_ip>";
respstring += "<sim_port>" + TheSim.serverPort.ToString() + "</sim_port>";
respstring += "<region_locx>" + TheSim.regionLocX.ToString() + "</region_locx>";
respstring += "<region_locy>" + TheSim.regionLocY.ToString() + "</region_locy>";
respstring += "<sim_ip>" + Util.GetHostFromDNS(TheSim.serverIP) + "</sim_ip>";
respstring += "<sim_port>" + TheSim.serverPort + "</sim_port>";
respstring += "<region_locx>" + TheSim.regionLocX + "</region_locx>";
respstring += "<region_locy>" + TheSim.regionLocY + "</region_locy>";
respstring += "<estate_id>1</estate_id>";
respstring += "</sim>";
respstring += "</Root>";
@ -946,12 +949,12 @@ namespace OpenSim.Grid.GridServer
break;
case "region_locx":
theSim.regionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
theSim.regionLocX = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
theSim.regionHandle = Helpers.UIntsToLong((theSim.regionLocX * Constants.RegionSize), (theSim.regionLocY * Constants.RegionSize));
break;
case "region_locy":
theSim.regionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
theSim.regionLocY = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
theSim.regionHandle = Helpers.UIntsToLong((theSim.regionLocX * Constants.RegionSize), (theSim.regionLocY * Constants.RegionSize));
break;
}
@ -1005,28 +1008,28 @@ namespace OpenSim.Grid.GridServer
catch (Exception e)
{
m_log.Warn("[GRID]: GetRegionPlugin Handle " + kvp.Key + " unable to add new sim: " +
e.ToString());
e);
}
}
return "OK";
}
catch (Exception e)
{
return "ERROR! Could not save to database! (" + e.ToString() + ")";
return "ERROR! Could not save to database! (" + e + ")";
}
}
public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
if (requestData.Contains("uri"))
{
string URI = (string)requestData["URI"];
string sendkey = (string)requestData["sendkey"];
string recvkey = (string)requestData["recvkey"];
string URI = (string) requestData["URI"];
string sendkey = (string) requestData["sendkey"];
string recvkey = (string) requestData["recvkey"];
MessageServerInfo m = new MessageServerInfo();
m.URI = URI;
m.sendkey = sendkey;
@ -1042,14 +1045,14 @@ namespace OpenSim.Grid.GridServer
public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
if (requestData.Contains("uri"))
{
string URI = (string)requestData["uri"];
string sendkey = (string)requestData["sendkey"];
string recvkey = (string)requestData["recvkey"];
string URI = (string) requestData["uri"];
string sendkey = (string) requestData["sendkey"];
string recvkey = (string) requestData["recvkey"];
MessageServerInfo m = new MessageServerInfo();
m.URI = URI;
m.sendkey = sendkey;
@ -1062,4 +1065,4 @@ namespace OpenSim.Grid.GridServer
return response;
}
}
}
}

View File

@ -44,6 +44,34 @@ namespace OpenSim.Grid.GridServer
protected GridManager m_gridManager;
protected List<IGridPlugin> m_plugins = new List<IGridPlugin>();
public GridServerBase()
{
m_console = new ConsoleBase("OpenGrid", this);
MainConsole.Instance = m_console;
}
#region conscmd_callback Members
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
break;
case "shutdown":
foreach (IGridPlugin plugin in m_plugins) plugin.Close();
m_console.Close();
Environment.Exit(0);
break;
}
}
#endregion
public void Work()
{
m_console.Notice("Enter help for a list of commands\n");
@ -54,12 +82,6 @@ namespace OpenSim.Grid.GridServer
}
}
public GridServerBase()
{
m_console = new ConsoleBase("OpenGrid", this);
MainConsole.Instance = m_console;
}
public void managercallback(string cmd)
{
switch (cmd)
@ -83,14 +105,14 @@ namespace OpenSim.Grid.GridServer
AddHttpHandlers();
LoadGridPlugins( );
LoadGridPlugins();
m_httpServer.Start();
m_console.Status("[GRID]: Starting sim status checker");
Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates.
simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
simCheckTimer.Elapsed += CheckSims;
simCheckTimer.Enabled = true;
}
@ -122,7 +144,7 @@ namespace OpenSim.Grid.GridServer
foreach (TypeExtensionNode node in nodes)
{
m_console.Status("[GRIDPLUGINS]: Loading OpenSim plugin " + node.Path);
IGridPlugin plugin = (IGridPlugin)node.CreateInstance();
IGridPlugin plugin = (IGridPlugin) node.CreateInstance();
plugin.Initialise(this);
m_plugins.Add(plugin);
}
@ -177,23 +199,5 @@ namespace OpenSim.Grid.GridServer
}
*/
}
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
break;
case "shutdown":
foreach (IGridPlugin plugin in m_plugins) plugin.Close();
m_console.Close();
Environment.Exit(0);
break;
}
}
}
}
}

View File

@ -38,4 +38,4 @@ namespace OpenSim.Grid.GridServer
void Initialise(GridServerBase gridServer);
void Close();
}
}
}

View File

@ -50,4 +50,4 @@ namespace OpenSim.Grid.GridServer
}
}
}
}
}

View File

@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
//
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]

View File

@ -40,7 +40,7 @@ namespace OpenSim.Grid.InventoryServer
/// </summary>
public class GridInventoryService : InventoryServiceBase
{
private static readonly ILog m_log
private static readonly ILog m_log
= LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public override void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback)
@ -55,7 +55,7 @@ namespace OpenSim.Grid.InventoryServer
/// <param name="itemsList"></param>
/// <returns>true if the inventory was retrieved, false otherwise</returns>
private bool GetUsersInventory(LLUUID userID, out List<InventoryFolderBase> folderList,
out List<InventoryItemBase> itemsList)
out List<InventoryItemBase> itemsList)
{
List<InventoryFolderBase> allFolders = GetInventorySkeleton(userID);
List<InventoryItemBase> allItems = new List<InventoryItemBase>();
@ -109,28 +109,28 @@ namespace OpenSim.Grid.InventoryServer
{
// uncomment me to simulate an overloaded inventory server
//Thread.Sleep(20000);
LLUUID userID = new LLUUID(rawUserID);
m_log.InfoFormat("[GRID AGENT INVENTORY]: Processing request for inventory of {0}", userID);
m_log.InfoFormat("[GRID AGENT INVENTORY]: Processing request for inventory of {0}", userID);
InventoryCollection invCollection = new InventoryCollection();
List<InventoryFolderBase> allFolders = GetInventorySkeleton(userID);
if (null == allFolders)
{
m_log.WarnFormat("[GRID AGENT INVENTORY]: No inventory found for user {0}", rawUserID);
return invCollection;
}
List<InventoryItemBase> allItems = new List<InventoryItemBase>();
foreach (InventoryFolderBase folder in allFolders)
{
List<InventoryItemBase> items = RequestFolderItems(folder.ID);
if (items != null)
{
allItems.InsertRange(0, items);
@ -138,9 +138,9 @@ namespace OpenSim.Grid.InventoryServer
}
invCollection.UserID = userID;
invCollection.Folders = allFolders;
invCollection.Items = allItems;
invCollection.Folders = allFolders;
invCollection.Items = allItems;
// foreach (InventoryFolderBase folder in invCollection.Folders)
// {
// m_log.DebugFormat("[GRID AGENT INVENTORY]: Sending back folder {0} {1}", folder.Name, folder.ID);
@ -150,14 +150,14 @@ namespace OpenSim.Grid.InventoryServer
// {
// m_log.DebugFormat("[GRID AGENT INVENTORY]: Sending back item {0} {1}, folder {2}", item.Name, item.ID, item.Folder);
// }
m_log.InfoFormat(
"[GRID AGENT INVENTORY]: Sending back inventory response to user {0} containing {1} folders and {2} items",
invCollection.UserID, invCollection.Folders.Count, invCollection.Items.Count);
invCollection.UserID, invCollection.Folders.Count, invCollection.Items.Count);
return invCollection;
}
/// <summary>
/// Guid to UUID wrapper for same name IInventoryServices method
/// </summary>
@ -166,10 +166,10 @@ namespace OpenSim.Grid.InventoryServer
public List<InventoryFolderBase> GetInventorySkeleton(Guid rawUserID)
{
//Thread.Sleep(10000);
LLUUID userID = new LLUUID(rawUserID);
return GetInventorySkeleton(userID);
}
}
/// <summary>
/// Create an inventory for the given user.
@ -196,11 +196,11 @@ namespace OpenSim.Grid.InventoryServer
{
MoveFolder(folder);
}
public override void PurgeInventoryFolder(LLUUID userID, InventoryFolderBase folder)
{
PurgeFolder(folder);
}
PurgeFolder(folder);
}
public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item)
{
@ -230,15 +230,15 @@ namespace OpenSim.Grid.InventoryServer
MoveExistingInventoryFolder(folder);
return true;
}
public bool PurgeInventoryFolder(InventoryFolderBase folder)
{
m_log.InfoFormat(
"[GRID AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID);
PurgeInventoryFolder(folder.Owner, folder);
return true;
}
}
public bool AddInventoryItem(InventoryItemBase item)
{
@ -267,4 +267,4 @@ namespace OpenSim.Grid.InventoryServer
return true;
}
}
}
}

View File

@ -54,7 +54,7 @@ namespace OpenSim.Grid.InventoryServer
Assembly pluginAssembly = Assembly.LoadFrom(FileName);
m_log.Info("[" + OpenInventory_Main.LogName + "]: " +
"Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
"Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
foreach (Type pluginType in pluginAssembly.GetTypes())
{
if (!pluginType.IsAbstract)
@ -68,7 +68,7 @@ namespace OpenSim.Grid.InventoryServer
plug.Initialise(dbconnect);
_databasePlugin = plug;
m_log.Info("[" + OpenInventory_Main.LogName + "]: " +
"Invenstorage: Added IInventoryData Interface");
"Invenstorage: Added IInventoryData Interface");
break;
}
}
@ -136,10 +136,12 @@ namespace OpenSim.Grid.InventoryServer
return fixupFolder(inventory.root, null);
}
#region Nested type: GetInventory
public class GetInventory : BaseStreamHandler
{
private SerializableInventory _inventory;
private InventoryManager _manager;
private readonly SerializableInventory _inventory;
private readonly InventoryManager _manager;
public GetInventory(InventoryManager manager)
: base("GET", "/inventory")
@ -181,7 +183,7 @@ namespace OpenSim.Grid.InventoryServer
{
byte[] result = new byte[] {};
string[] parms = path.Split(new char[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
string[] parms = path.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
if (parms.Length > 1)
{
if (string.Compare(parms[1], "library", true) == 0)
@ -190,7 +192,7 @@ namespace OpenSim.Grid.InventoryServer
saveInventoryToStream(_inventory, ms);
result = ms.GetBuffer();
Array.Resize<byte>(ref result, (int) ms.Length);
Array.Resize(ref result, (int) ms.Length);
}
else if (string.Compare(parms[1], "user", true) == 0)
{
@ -203,5 +205,7 @@ namespace OpenSim.Grid.InventoryServer
return result;
}
}
#endregion
}
}
}

View File

@ -40,13 +40,38 @@ namespace OpenSim.Grid.InventoryServer
{
public class OpenInventory_Main : BaseOpenSimServer, conscmd_callback
{
public const string LogName = "INVENTORY";
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private InventoryManager m_inventoryManager;
private InventoryConfig m_config;
private InventoryManager m_inventoryManager;
private GridInventoryService m_inventoryService;
public const string LogName = "INVENTORY";
public OpenInventory_Main()
{
m_console = new ConsoleBase(LogName, this);
MainConsole.Instance = m_console;
}
#region conscmd_callback Members
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "add-user":
m_inventoryService.CreateUsersInventory(LLUUID.Random().UUID);
break;
case "shutdown":
m_console.Close();
Environment.Exit(0);
break;
}
}
#endregion
[STAThread]
public static void Main(string[] args)
@ -59,12 +84,6 @@ namespace OpenSim.Grid.InventoryServer
theServer.Work();
}
public OpenInventory_Main()
{
m_console = new ConsoleBase(LogName, this);
MainConsole.Instance = m_console;
}
public void Startup()
{
m_log.Info("Initialising inventory manager...");
@ -75,7 +94,7 @@ namespace OpenSim.Grid.InventoryServer
m_inventoryService.AddPlugin(m_config.DatabaseProvider, m_config.DatabaseConnect);
m_log.Info("[" + LogName + "]: Starting HTTP server ...");
m_httpServer = new BaseHttpServer(m_config.HttpPort);
AddHttpHandlers();
m_httpServer.Start();
@ -88,11 +107,11 @@ namespace OpenSim.Grid.InventoryServer
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<Guid, InventoryCollection>(
"POST", "/GetInventory/", m_inventoryService.GetUserInventory));
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<Guid, bool>(
"POST", "/CreateInventory/", m_inventoryService.CreateUsersInventory));
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<InventoryFolderBase, bool>(
"POST", "/NewFolder/", m_inventoryService.AddInventoryFolder));
@ -100,15 +119,15 @@ namespace OpenSim.Grid.InventoryServer
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<InventoryFolderBase, bool>(
"POST", "/MoveFolder/", m_inventoryService.MoveInventoryFolder));
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<InventoryFolderBase, bool>(
"POST", "/PurgeFolder/", m_inventoryService.PurgeInventoryFolder));
"POST", "/PurgeFolder/", m_inventoryService.PurgeInventoryFolder));
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<InventoryItemBase, bool>(
"POST", "/NewItem/", m_inventoryService.AddInventoryItem));
m_httpServer.AddStreamHandler(
new RestDeserialisehandler<InventoryItemBase, bool>(
"POST", "/DeleteItem/", m_inventoryService.DeleteInvItem));
@ -134,21 +153,5 @@ namespace OpenSim.Grid.InventoryServer
m_console.Prompt();
}
}
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "add-user":
m_inventoryService.CreateUsersInventory(LLUUID.Random().UUID);
break;
case "shutdown":
m_console.Close();
Environment.Exit(0);
break;
}
}
}
}
}

View File

@ -44,9 +44,42 @@ namespace OpenSim.Grid.MessagingServer
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private MessageServerConfig Cfg;
private MessageService msgsvc;
private LLUUID m_lastCreatedUser = LLUUID.Random();
private MessageService msgsvc;
private OpenMessage_Main()
{
m_console = new ConsoleBase("OpenMessage", this);
MainConsole.Instance = m_console;
}
#region conscmd_callback Members
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice("shutdown - shutdown the message server (USE CAUTION!)");
break;
case "shutdown":
msgsvc.deregisterWithUserServer();
m_console.Close();
Environment.Exit(0);
break;
}
}
public override void Show(string ShowWhat)
{
base.Show(ShowWhat);
}
#endregion
[STAThread]
public static void Main(string[] args)
@ -55,7 +88,6 @@ namespace OpenSim.Grid.MessagingServer
m_log.Info("Launching MessagingServer...");
OpenMessage_Main messageserver = new OpenMessage_Main();
@ -63,12 +95,6 @@ namespace OpenSim.Grid.MessagingServer
messageserver.Work();
}
private OpenMessage_Main()
{
m_console = new ConsoleBase("OpenMessage", this);
MainConsole.Instance = m_console;
}
private void Work()
{
m_console.Notice("Enter help for a list of commands\n");
@ -118,12 +144,13 @@ namespace OpenSim.Grid.MessagingServer
switch (what)
{
case "user":
try
{
//userID =
//m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
} catch (Exception ex)
//m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
}
catch (Exception ex)
{
m_console.Error("[SERVER]: Error creating user: {0}", ex.ToString());
}
@ -131,7 +158,7 @@ namespace OpenSim.Grid.MessagingServer
try
{
//RestObjectPoster.BeginPostObject<Guid>(m_userManager._config.InventoryUrl + "CreateInventory/",
//userID.UUID);
//userID.UUID);
}
catch (Exception ex)
{
@ -141,28 +168,5 @@ namespace OpenSim.Grid.MessagingServer
break;
}
}
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice("shutdown - shutdown the message server (USE CAUTION!)");
break;
case "shutdown":
msgsvc.deregisterWithUserServer();
m_console.Close();
Environment.Exit(0);
break;
}
}
public override void Show(string ShowWhat)
{
base.Show(ShowWhat);
}
}
}
}

View File

@ -45,16 +45,16 @@ namespace OpenSim.Grid.MessagingServer
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private MessageServerConfig m_cfg;
private readonly MessageServerConfig m_cfg;
private readonly Hashtable m_presence_BackReferences = new Hashtable();
//A hashtable of all current presences this server knows about
private Hashtable m_presences = new Hashtable();
private readonly Hashtable m_presences = new Hashtable();
//a hashtable of all current regions this server knows about
private Hashtable m_regionInfoCache = new Hashtable();
private readonly Hashtable m_regionInfoCache = new Hashtable();
//A hashtable containing lists of UUIDs keyed by UUID for fast backreferencing
private Hashtable m_presence_BackReferences = new Hashtable();
// Hashtable containing work units that need to be processed
private Hashtable m_unProcessedWorkUnits = new Hashtable();
@ -63,13 +63,13 @@ namespace OpenSim.Grid.MessagingServer
{
m_cfg = cfg;
}
#region RegionComms Methods
#endregion
#region FriendList Methods
/// <summary>
/// Process Friendlist subscriptions for a user
/// The login method calls this for a User
@ -87,14 +87,14 @@ namespace OpenSim.Grid.MessagingServer
for (int i = 0; i < uFriendList.Count; i++)
{
//m_presence_BackReferences.Add(userpresence.agentData.AgentID, uFriendList[i].Friend);
// m_presence_BackReferences.Add(uFriendList[i].Friend, userpresence.agentData.AgentID);
// m_presence_BackReferences.Add(uFriendList[i].Friend, userpresence.agentData.AgentID);
if (m_presences.Contains(uFriendList[i].Friend))
{
UserPresenceData friendup = (UserPresenceData)m_presences[uFriendList[i].Friend];
UserPresenceData friendup = (UserPresenceData) m_presences[uFriendList[i].Friend];
// Add backreference
SubscribeToPresenceUpdates(userpresence, friendup, uFriendList[i],i);
SubscribeToPresenceUpdates(userpresence, friendup, uFriendList[i], i);
}
}
}
@ -108,10 +108,10 @@ namespace OpenSim.Grid.MessagingServer
/// <param name="friendpresence">P2</param>
/// <param name="uFriendListItem"></param>
/// <param name="uFriendListIndex"></param>
public void SubscribeToPresenceUpdates(UserPresenceData userpresence, UserPresenceData friendpresence,
FriendListItem uFriendListItem, int uFriendListIndex)
public void SubscribeToPresenceUpdates(UserPresenceData userpresence, UserPresenceData friendpresence,
FriendListItem uFriendListItem, int uFriendListIndex)
{
if ((uFriendListItem.FriendListOwnerPerms & (uint)FriendRights.CanSeeOnline) != 0)
if ((uFriendListItem.FriendListOwnerPerms & (uint) FriendRights.CanSeeOnline) != 0)
{
// Subscribe and Send Out updates
if (!friendpresence.subscriptionData.Contains(friendpresence.agentData.AgentID))
@ -126,13 +126,13 @@ namespace OpenSim.Grid.MessagingServer
PresenceInformer friendlistupdater = new PresenceInformer();
friendlistupdater.presence1 = friendpresence;
friendlistupdater.presence2 = userpresence;
WaitCallback cb = new WaitCallback(friendlistupdater.go);
WaitCallback cb = friendlistupdater.go;
ThreadPool.QueueUserWorkItem(cb);
//SendRegionPresenceUpdate(friendpresence, userpresence);
}
if ((uFriendListItem.FriendPerms & (uint)FriendRights.CanSeeOnline) != 0)
if ((uFriendListItem.FriendPerms & (uint) FriendRights.CanSeeOnline) != 0)
{
if (!friendpresence.subscriptionData.Contains(userpresence.agentData.AgentID))
{
@ -147,9 +147,9 @@ namespace OpenSim.Grid.MessagingServer
friendlistupdater.presence1 = userpresence;
friendlistupdater.presence2 = friendpresence;
WaitCallback cb2 = new WaitCallback(friendlistupdater.go);
WaitCallback cb2 = friendlistupdater.go;
ThreadPool.QueueUserWorkItem(cb2);
//SendRegionPresenceUpdate(userpresence, friendpresence);
}
}
@ -164,7 +164,7 @@ namespace OpenSim.Grid.MessagingServer
{
if (m_presence_BackReferences.Contains(friendID))
{
List<LLUUID> presenseBackReferences = (List<LLUUID>)m_presence_BackReferences[friendID];
List<LLUUID> presenseBackReferences = (List<LLUUID>) m_presence_BackReferences[friendID];
if (!presenseBackReferences.Contains(agentID))
{
presenseBackReferences.Add(agentID);
@ -188,7 +188,7 @@ namespace OpenSim.Grid.MessagingServer
{
if (m_presence_BackReferences.Contains(friendID))
{
List<LLUUID> presenseBackReferences = (List<LLUUID>)m_presence_BackReferences[friendID];
List<LLUUID> presenseBackReferences = (List<LLUUID>) m_presence_BackReferences[friendID];
if (presenseBackReferences.Contains(agentID))
{
presenseBackReferences.Remove(agentID);
@ -216,29 +216,29 @@ namespace OpenSim.Grid.MessagingServer
{
if (m_presences.Contains(AgentID))
{
AgentData = (UserPresenceData)m_presences[AgentID];
AgentData = (UserPresenceData) m_presences[AgentID];
}
}
if (AgentData != null)
{
AgentsNeedingNotification = AgentData.subscriptionData;
AgentsNeedingNotification = AgentData.subscriptionData;
//lock (m_presence_BackReferences)
//{
//if (m_presence_BackReferences.Contains(AgentID))
//{
//AgentsNeedingNotification = (List<LLUUID>)m_presence_BackReferences[AgentID];
//}
//if (m_presence_BackReferences.Contains(AgentID))
//{
//AgentsNeedingNotification = (List<LLUUID>)m_presence_BackReferences[AgentID];
//}
//}
for (int i = 0; i < AgentsNeedingNotification.Count; i++)
{
// TODO: Do Region Notifications
lock(m_presences)
lock (m_presences)
{
if (m_presences.Contains(AgentsNeedingNotification[i]))
{
friendd = (UserPresenceData)m_presences[AgentsNeedingNotification[i]];
friendd = (UserPresenceData) m_presences[AgentsNeedingNotification[i]];
}
}
@ -266,7 +266,7 @@ namespace OpenSim.Grid.MessagingServer
friendlistupdater.presence1 = AgentData;
friendlistupdater.presence2 = friendd;
WaitCallback cb3 = new WaitCallback(friendlistupdater.go);
WaitCallback cb3 = friendlistupdater.go;
ThreadPool.QueueUserWorkItem(cb3);
//SendRegionPresenceUpdate(AgentData, friendd);
@ -276,7 +276,7 @@ namespace OpenSim.Grid.MessagingServer
}
}
}
#endregion
#region UserServer Comms
@ -298,18 +298,17 @@ namespace OpenSim.Grid.MessagingServer
parameters.Add(param);
XmlRpcRequest req = new XmlRpcRequest("get_user_friend_list", parameters);
XmlRpcResponse resp = req.Send(m_cfg.UserServerURL, 3000);
Hashtable respData = (Hashtable)resp.Value;
Hashtable respData = (Hashtable) resp.Value;
if (respData.Contains("avcount"))
{
buddylist = ConvertXMLRPCDataToFriendListItemList(respData);
}
}
catch (WebException e)
{
m_log.Warn("Error when trying to fetch Avatar's friends list: " +
e.Message);
e.Message);
// Return Empty list (no friends)
}
return buddylist;
@ -323,16 +322,16 @@ namespace OpenSim.Grid.MessagingServer
public List<FriendListItem> ConvertXMLRPCDataToFriendListItemList(Hashtable data)
{
List<FriendListItem> buddylist = new List<FriendListItem>();
int buddycount = Convert.ToInt32((string)data["avcount"]);
int buddycount = Convert.ToInt32((string) data["avcount"]);
for (int i = 0; i < buddycount; i++)
{
FriendListItem buddylistitem = new FriendListItem();
buddylistitem.FriendListOwner = new LLUUID((string)data["ownerID" + i.ToString()]);
buddylistitem.Friend = new LLUUID((string)data["friendID" + i.ToString()]);
buddylistitem.FriendListOwnerPerms = (uint)Convert.ToInt32((string)data["ownerPerms" + i.ToString()]);
buddylistitem.FriendPerms = (uint)Convert.ToInt32((string)data["friendPerms" + i.ToString()]);
buddylistitem.FriendListOwner = new LLUUID((string) data["ownerID" + i]);
buddylistitem.Friend = new LLUUID((string) data["friendID" + i]);
buddylistitem.FriendListOwnerPerms = (uint) Convert.ToInt32((string) data["ownerPerms" + i]);
buddylistitem.FriendPerms = (uint) Convert.ToInt32((string) data["friendPerms" + i]);
buddylist.Add(buddylistitem);
}
@ -350,7 +349,7 @@ namespace OpenSim.Grid.MessagingServer
public XmlRpcResponse UserLoggedOn(XmlRpcRequest request)
{
m_log.Info("[LOGON]: User logged on, building indexes for user");
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
//requestData["sendkey"] = serv.sendkey;
//requestData["agentid"] = agentID.ToString();
@ -364,13 +363,13 @@ namespace OpenSim.Grid.MessagingServer
//requestData["lastname"] = lastname;
AgentCircuitData agentData = new AgentCircuitData();
agentData.SessionID = new LLUUID((string)requestData["sessionid"]);
agentData.SecureSessionID = new LLUUID((string)requestData["secure_session_id"]);
agentData.firstname = (string)requestData["firstname"];
agentData.lastname = (string)requestData["lastname"];
agentData.AgentID = new LLUUID((string)requestData["agentid"]);
agentData.SessionID = new LLUUID((string) requestData["sessionid"]);
agentData.SecureSessionID = new LLUUID((string) requestData["secure_session_id"]);
agentData.firstname = (string) requestData["firstname"];
agentData.lastname = (string) requestData["lastname"];
agentData.AgentID = new LLUUID((string) requestData["agentid"]);
agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
agentData.CapsPath = (string)requestData["caps_path"];
agentData.CapsPath = (string) requestData["caps_path"];
if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1"))
{
@ -379,13 +378,13 @@ namespace OpenSim.Grid.MessagingServer
else
{
agentData.startpos =
new LLVector3(Convert.ToUInt32(requestData["positionx"]),
new LLVector3(Convert.ToUInt32(requestData["positionx"]),
Convert.ToUInt32(requestData["positiony"]),
Convert.ToUInt32(requestData["positionz"]));
agentData.child = false;
}
ulong regionHandle = Convert.ToUInt64((string)requestData["regionhandle"]);
ulong regionHandle = Convert.ToUInt64((string) requestData["regionhandle"]);
UserPresenceData up = new UserPresenceData();
up.agentData = agentData;
@ -398,7 +397,7 @@ namespace OpenSim.Grid.MessagingServer
return new XmlRpcResponse();
}
/// <summary>
/// The UserServer got a Logoff message
/// Cleanup time for that user. Send out presence notifications
@ -407,9 +406,9 @@ namespace OpenSim.Grid.MessagingServer
/// <returns></returns>
public XmlRpcResponse UserLoggedOff(XmlRpcRequest request)
{
Hashtable requestData = (Hashtable)request.Params[0];
LLUUID AgentID = new LLUUID((string)requestData["agentid"]);
Hashtable requestData = (Hashtable) request.Params[0];
LLUUID AgentID = new LLUUID((string) requestData["agentid"]);
ProcessLogOff(AgentID);
@ -431,9 +430,9 @@ namespace OpenSim.Grid.MessagingServer
RegionProfileData regionInfo = null;
if (m_regionInfoCache.Contains(regionhandle))
{
regionInfo = (RegionProfileData)m_regionInfoCache[regionhandle];
regionInfo = (RegionProfileData) m_regionInfoCache[regionhandle];
}
else
else
{
regionInfo = RequestRegionInfo(regionhandle);
}
@ -447,7 +446,8 @@ namespace OpenSim.Grid.MessagingServer
/// <param name="regionHandle"></param>
/// <returns></returns>
public RegionProfileData RequestRegionInfo(ulong regionHandle)
{ RegionProfileData regionProfile = null;
{
RegionProfileData regionProfile = null;
try
{
Hashtable requestData = new Hashtable();
@ -457,8 +457,8 @@ namespace OpenSim.Grid.MessagingServer
SendParams.Add(requestData);
XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
XmlRpcResponse GridResp = GridReq.Send(m_cfg.GridServerURL, 3000);
Hashtable responseData = (Hashtable)GridResp.Value;
Hashtable responseData = (Hashtable) GridResp.Value;
if (responseData.ContainsKey("error"))
{
@ -466,23 +466,23 @@ namespace OpenSim.Grid.MessagingServer
return null;
}
uint regX = Convert.ToUInt32((string)responseData["region_locx"]);
uint regY = Convert.ToUInt32((string)responseData["region_locy"]);
string internalIpStr = (string)responseData["sim_ip"];
uint regX = Convert.ToUInt32((string) responseData["region_locx"]);
uint regY = Convert.ToUInt32((string) responseData["region_locy"]);
string internalIpStr = (string) responseData["sim_ip"];
uint port = Convert.ToUInt32(responseData["sim_port"]);
string externalUri = (string)responseData["sim_uri"];
string externalUri = (string) responseData["sim_uri"];
string neighbourExternalUri = externalUri;
regionProfile = new RegionProfileData();
regionProfile.httpPort = (uint)Convert.ToInt32((string)responseData["http_port"]);
regionProfile.httpPort = (uint) Convert.ToInt32((string) responseData["http_port"]);
regionProfile.httpServerURI = "http://" + internalIpStr + ":" + regionProfile.httpPort + "/";
regionProfile.regionHandle = Helpers.UIntsToLong((regX * Constants.RegionSize), (regY * Constants.RegionSize));
regionProfile.regionLocX = regX;
regionProfile.regionLocY = regY;
regionProfile.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
regionProfile.UUID = new LLUUID((string)responseData["region_UUID"]);
regionProfile.regionName = (string)responseData["region_name"];
regionProfile.remotingPort = Convert.ToUInt32((string) responseData["remoting_port"]);
regionProfile.UUID = new LLUUID((string) responseData["region_UUID"]);
regionProfile.regionName = (string) responseData["region_name"];
lock (m_regionInfoCache)
{
if (!m_regionInfoCache.Contains(regionHandle))
@ -494,31 +494,31 @@ namespace OpenSim.Grid.MessagingServer
catch (WebException)
{
m_log.Error("[GRID]: " +
"Region lookup failed for: " + regionHandle.ToString() +
"Region lookup failed for: " + regionHandle +
" - Is the GridServer down?");
return null;
}
return regionProfile;
}
public bool registerWithUserServer ()
public bool registerWithUserServer()
{
Hashtable UserParams = new Hashtable();
// Login / Authentication
if (m_cfg.HttpSSL)
{
UserParams["uri"] = "https://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
}
else
else
{
UserParams["uri"] = "http://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
}
UserParams["recvkey"] = m_cfg.UserRecvKey;
UserParams["sendkey"] = m_cfg.UserRecvKey;
// Package into an XMLRPC Request
ArrayList SendParams = new ArrayList();
SendParams.Add(UserParams);
@ -530,12 +530,13 @@ namespace OpenSim.Grid.MessagingServer
{
UserReq = new XmlRpcRequest("register_messageserver", SendParams);
UserResp = UserReq.Send(m_cfg.UserServerURL, 16000);
} catch (Exception ex)
}
catch (Exception ex)
{
m_log.Error("Unable to connect to grid. Grid server not running?");
throw(ex);
throw (ex);
}
Hashtable GridRespData = (Hashtable)UserResp.Value;
Hashtable GridRespData = (Hashtable) UserResp.Value;
Hashtable griddatahash = GridRespData;
// Process Response
@ -583,7 +584,7 @@ namespace OpenSim.Grid.MessagingServer
m_log.Error("Unable to connect to grid. Grid server not running?");
throw (ex);
}
Hashtable UserRespData = (Hashtable)UserResp.Value;
Hashtable UserRespData = (Hashtable) UserResp.Value;
Hashtable userdatahash = UserRespData;
// Process Response
@ -599,4 +600,4 @@ namespace OpenSim.Grid.MessagingServer
#endregion
}
}
}

View File

@ -35,21 +35,16 @@ namespace OpenSim.Grid.MessagingServer
{
public class PresenceInformer
{
public UserPresenceData presence1 = null;
public UserPresenceData presence2 = null;
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public UserPresenceData presence1;
public UserPresenceData presence2;
public PresenceInformer()
{
}
public void go(object o)
{
if (presence1 != null && presence2 != null)
{
SendRegionPresenceUpdate(presence1, presence2);
}
}
/// <summary>
@ -74,4 +69,4 @@ namespace OpenSim.Grid.MessagingServer
XmlRpcResponse RegionResp = RegionReq.Send(whichRegion.httpServerURI, 6000);
}
}
}
}

View File

@ -36,13 +36,9 @@ namespace OpenSim.Grid.MessagingServer
public class UserPresenceData
{
public AgentCircuitData agentData = new AgentCircuitData();
public RegionProfileData regionData = new RegionProfileData();
public List<FriendListItem> friendData = new List<FriendListItem>();
public string httpURI = String.Empty;
public List<FriendListItem> friendData = new List<FriendListItem> ();
public RegionProfileData regionData = new RegionProfileData();
public List<LLUUID> subscriptionData = new List<LLUUID>();
public UserPresenceData()
{
}
}
}
}

View File

@ -30,4 +30,4 @@ namespace OpenSim.Grid.MessagingServer
public class WorkUnitBase
{
}
}
}

View File

@ -30,4 +30,4 @@ namespace OpenSim.Grid.MessagingServer
public class WorkUnitPresenceUpdate : WorkUnitBase
{
}
}
}

View File

@ -48,28 +48,26 @@ namespace OpenSim.Grid.MessagingServer
: base("GET", "/presence")
{
m_log.Info("[REST]: In Get Request");
}
public override byte[] Handle(string path, Stream request)
{
string param = GetParam(path);
byte[] result = new byte[] {};
try
{
string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
string[] p = param.Split(new[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
if (p.Length > 0)
{
LLUUID assetID = null;
LLUUID assetID = null;
if (!LLUUID.TryParse(p[0], out assetID))
{
m_log.InfoFormat(
"[REST]: GET:/presence ignoring request with malformed UUID {0}", p[0]);
return result;
}
}
}
catch (Exception e)
@ -84,6 +82,11 @@ namespace OpenSim.Grid.MessagingServer
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public PostXMPPStreamHandler()
: base("POST", "/presence")
{
}
public override byte[] Handle(string path, Stream request)
{
string param = GetParam(path);
@ -97,12 +100,5 @@ namespace OpenSim.Grid.MessagingServer
return new byte[] {};
}
public PostXMPPStreamHandler()
: base("POST", "/presence")
{
}
}
}
}

View File

@ -39,7 +39,7 @@ namespace OpenSim.Grid.ScriptServer
XmlConfigurator.Configure();
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
CurrentDomain_UnhandledException;
// Application is starting
SE = new ScriptServerMain();
@ -50,9 +50,9 @@ namespace OpenSim.Grid.ScriptServer
Console.WriteLine(String.Empty);
Console.WriteLine("APPLICATION EXCEPTION DETECTED");
Console.WriteLine(String.Empty);
Console.WriteLine("Application is terminating: " + e.IsTerminating.ToString());
Console.WriteLine("Application is terminating: " + e.IsTerminating);
//Console.WriteLine("Exception:");
//Console.WriteLine(e.ExceptionObject.ToString());
}
}
}
}

View File

@ -34,7 +34,7 @@ using OpenSim.Region.Environment.Scenes;
namespace OpenSim.Grid.ScriptServer
{
public class FakeScene: Scene
public class FakeScene : Scene
{
public FakeScene(RegionInfo regInfo, AgentCircuitManager authen, PermissionManager permissionManager,
CommunicationsManager commsMan, SceneCommunicationService sceneGridService,
@ -48,4 +48,4 @@ namespace OpenSim.Grid.ScriptServer
// What does a scene have to do? :P
}
}
}

View File

@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
//
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]

View File

@ -34,9 +34,13 @@ namespace OpenSim.Grid.ScriptServer
{
// This object will be exposed over remoting. It is a singleton, so it exists only in as one instance.
#region ServerRemotingObject Members
ScriptServerInterfaces.RemoteEvents ScriptServerInterfaces.ServerRemotingObject.Events()
{
return ScriptServerMain.Engine.EventManager();
}
#endregion
}
}
}

View File

@ -31,9 +31,10 @@ using System.Runtime.Remoting.Channels.Tcp;
namespace OpenSim.Grid.ScriptServer
{
class RemotingServer
internal class RemotingServer
{
TcpChannel channel;
private readonly TcpChannel channel;
public RemotingServer(int port, string instanceName)
{
// Create an instance of a channel
@ -42,9 +43,9 @@ namespace OpenSim.Grid.ScriptServer
// Register as an available service with the name HelloWorld
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemotingObject),
typeof (RemotingObject),
instanceName,
WellKnownObjectMode.Singleton);
}
}
}
}

View File

@ -32,8 +32,13 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer.Region
// These are events that the region needs to have
// TEMP: Using System.Delegate -- needs replacing with a real delegate
#region Delegates
public delegate void DefaultDelegate();
#endregion
public event DefaultDelegate onScriptRez;
public event DefaultDelegate onstate_entry;
public event DefaultDelegate onstate_exit;

View File

@ -29,8 +29,8 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer.Region
{
public class RegionConnectionManager : RegionBase
{
private ScriptServerMain m_ScriptServerMain;
private object m_Connection;
private ScriptServerMain m_ScriptServerMain;
public RegionConnectionManager(ScriptServerMain scm, object Connection)
{

View File

@ -34,12 +34,10 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
{
internal class RegionCommManager
{
private readonly ScriptServerMain m_ScriptServerMain;
private readonly List<RegionConnectionManager> Regions = new List<RegionConnectionManager>();
private Thread listenThread;
private List<RegionConnectionManager> Regions = new List<RegionConnectionManager>();
private ScriptServerMain m_ScriptServerMain;
public RegionCommManager(ScriptServerMain scm)
{
m_ScriptServerMain = scm;

View File

@ -51,7 +51,7 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
{
m_log.Error("[ScriptEngine]: " +
"Error loading assembly \"" + EngineName + "\": " + e.Message + ", " +
e.StackTrace.ToString());
e.StackTrace);
}
return ret;
}
@ -104,7 +104,7 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
ScriptServerInterfaces.ScriptEngine ret;
//try
//{
ret = (ScriptServerInterfaces.ScriptEngine)Activator.CreateInstance(t);
ret = (ScriptServerInterfaces.ScriptEngine) Activator.CreateInstance(t);
//}
//catch (Exception e)
//{
@ -114,4 +114,4 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
return ret;
}
}
}
}

View File

@ -32,8 +32,8 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
{
internal class ScriptEngineManager
{
private ScriptEngineLoader ScriptEngineLoader;
private List<ScriptServerInterfaces.ScriptEngine> scriptEngines = new List<ScriptServerInterfaces.ScriptEngine>();
private readonly ScriptEngineLoader ScriptEngineLoader;
private readonly List<ScriptServerInterfaces.ScriptEngine> scriptEngines = new List<ScriptServerInterfaces.ScriptEngine>();
private ScriptServerMain m_ScriptServerMain;
// Initialize
@ -58,4 +58,4 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
return sei;
}
}
}
}

View File

@ -44,20 +44,20 @@ namespace OpenSim.Grid.ScriptServer
//
// Root object. Creates objects used.
//
private int listenPort = 8010;
// TEMP
public static ScriptServerInterfaces.ScriptEngine Engine;
private int listenPort = 8010;
//public static FakeScene m_Scene = new FakeScene(null,null,null,null,null,null,null,null,null,false, false, false);
// Objects we use
internal RegionCommManager RegionScriptDaemon; // Listen for incoming from region
internal ScriptEngineManager ScriptEngines; // Loads scriptengines
//internal RemotingServer m_RemotingServer;
internal TCPServer m_TCPServer;
internal RegionCommManager RegionScriptDaemon; // Listen for incoming from region
internal TRPC_Remote RPC;
internal ScriptEngineManager ScriptEngines; // Loads scriptengines
public ScriptServerMain()
public ScriptServerMain()
{
m_console = CreateConsole();
@ -68,13 +68,13 @@ namespace OpenSim.Grid.ScriptServer
Engine = ScriptEngines.LoadEngine("DotNetEngine");
Engine.InitializeEngine(null, null, false, Engine.GetScriptManager());
// Set up server
//m_RemotingServer = new RemotingServer(listenPort, "DotNetEngine");
m_TCPServer = new TCPServer(listenPort);
RPC = new TRPC_Remote(m_TCPServer);
RPC.ReceiveCommand += new TRPC_Remote.ReceiveCommandDelegate(RPC_ReceiveCommand);
RPC.ReceiveCommand += RPC_ReceiveCommand;
m_TCPServer.StartListen();
Console.ReadLine();
@ -93,7 +93,7 @@ namespace OpenSim.Grid.ScriptServer
if (Command == "OnRezScript")
{
Engine.EventManager().OnRezScript((uint)p[0], new LLUUID((string)p[1]), (string)p[2]);
Engine.EventManager().OnRezScript((uint) p[0], new LLUUID((string) p[1]), (string) p[2]);
}
}
@ -106,4 +106,4 @@ namespace OpenSim.Grid.ScriptServer
return new ConsoleBase("ScriptServer", this);
}
}
}
}

View File

@ -48,13 +48,62 @@ namespace OpenSim.Grid.UserServer
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private UserConfig Cfg;
public UserManager m_userManager;
public UserLoginService m_loginService;
public MessageServersConnector m_messagesService;
private LLUUID m_lastCreatedUser = LLUUID.Random();
public UserLoginService m_loginService;
public MessageServersConnector m_messagesService;
public UserManager m_userManager;
private OpenUser_Main()
{
m_console = new ConsoleBase("OpenUser", this);
MainConsole.Instance = m_console;
}
#region conscmd_callback Members
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice("create user - create a new user");
m_console.Notice("stats - statistical information for this server");
m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
break;
case "create":
do_create(cmdparams[0]);
break;
case "shutdown":
m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
m_console.Close();
Environment.Exit(0);
break;
case "stats":
m_console.Notice(StatsManager.UserStats.Report());
break;
case "test-inventory":
// RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
// requester.ReturnResponseVal = TestResponse;
// requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
m_userManager.
_config.
InventoryUrl +
"RootFolders/",
m_lastCreatedUser);
break;
}
}
#endregion
[STAThread]
public static void Main(string[] args)
{
@ -68,12 +117,6 @@ namespace OpenSim.Grid.UserServer
userserver.Work();
}
private OpenUser_Main()
{
m_console = new ConsoleBase("OpenUser", this);
MainConsole.Instance = m_console;
}
private void Work()
{
m_console.Notice("Enter help for a list of commands\n");
@ -87,16 +130,16 @@ namespace OpenSim.Grid.UserServer
public void Startup()
{
Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
StatsManager.StartCollectingUserStats();
m_log.Info("[REGION]: Establishing data connection");
m_userManager = new UserManager();
m_userManager = new UserManager();
m_userManager._config = Cfg;
m_userManager.AddPlugin(Cfg.DatabaseProvider);
m_userManager.AddPlugin(Cfg.DatabaseProvider);
m_loginService = new UserLoginService(
m_userManager, new LibraryRootFolder(), Cfg, Cfg.DefaultStartupMsg);
m_userManager, new LibraryRootFolder(), Cfg, Cfg.DefaultStartupMsg);
m_messagesService = new MessageServersConnector();
@ -104,7 +147,7 @@ namespace OpenSim.Grid.UserServer
m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
m_log.Info("[REGION]: Starting HTTP process");
m_httpServer = new BaseHttpServer(Cfg.HttpPort);
AddHttpHandlers();
m_httpServer.Start();
@ -117,7 +160,7 @@ namespace OpenSim.Grid.UserServer
m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod);
m_httpServer.AddHTTPHandler("login", m_loginService.ProcessHTMLLogin);
m_httpServer.SetLLSDHandler(m_loginService.LLSDLoginMethod);
m_httpServer.AddXmlRPCHandler("get_user_by_name", m_userManager.XmlRPCGetUserMethodName);
@ -128,7 +171,7 @@ namespace OpenSim.Grid.UserServer
m_httpServer.AddXmlRPCHandler("update_user_friend_perms", m_userManager.XmlRpcResponseXmlRPCUpdateUserFriendPerms);
m_httpServer.AddXmlRPCHandler("get_user_friend_list", m_userManager.XmlRpcResponseXmlRPCGetUserFriendList);
m_httpServer.AddXmlRPCHandler("logout_of_simulator", m_userManager.XmlRPCLogOffUserMethodUUID);
// Message Server ---> User Server
m_httpServer.AddXmlRPCHandler("register_messageserver", m_messagesService.XmlRPCRegisterMessageServer);
m_httpServer.AddXmlRPCHandler("agent_change_region", m_messagesService.XmlRPCUserMovedtoRegion);
@ -163,17 +206,17 @@ namespace OpenSim.Grid.UserServer
{
m_log.ErrorFormat(
"[USERS]: A user with the name {0} {1} already exists!", tempfirstname, templastname);
break;
}
tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + String.Empty);
LLUUID userID = new LLUUID();
try
{
userID = m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
}
}
catch (Exception ex)
{
m_log.ErrorFormat("[USERS]: Error creating user: {0}", ex.ToString());
@ -181,76 +224,35 @@ namespace OpenSim.Grid.UserServer
try
{
bool created
bool created
= SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
"POST", m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID);
if (!created)
{
throw new Exception(
String.Format(
"The inventory creation request for user {0} did not succeed."
+ " Please contact your inventory service provider for more information.",
+ " Please contact your inventory service provider for more information.",
userID));
}
}
catch (WebException e)
{
m_log.ErrorFormat(
"[USERS]: Could not contact the inventory service at {0} to create an inventory for {1}",
"[USERS]: Could not contact the inventory service at {0} to create an inventory for {1}",
m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID);
}
catch (Exception e)
{
m_log.ErrorFormat("[USERS]: Error creating inventory for user: {0}", e);
}
m_lastCreatedUser = userID;
break;
}
}
public override void RunCmd(string cmd, string[] cmdparams)
{
base.RunCmd(cmd, cmdparams);
switch (cmd)
{
case "help":
m_console.Notice("create user - create a new user");
m_console.Notice("stats - statistical information for this server");
m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
break;
case "create":
do_create(cmdparams[0]);
break;
case "shutdown":
m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
m_console.Close();
Environment.Exit(0);
break;
case "stats":
m_console.Notice(StatsManager.UserStats.Report());
break;
case "test-inventory":
// RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
// requester.ReturnResponseVal = TestResponse;
// requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
m_userManager.
_config.
InventoryUrl +
"RootFolders/",
m_lastCreatedUser);
break;
}
}
public void TestResponse(List<InventoryFolderBase> resp)
{
m_console.Notice("response got");
@ -262,12 +264,11 @@ namespace OpenSim.Grid.UserServer
}
public void NotifyMessageServersUserLoggedInToLocation(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
ulong regionhandle, float positionX, float positionY,
float positionZ, string firstname, string lastname)
ulong regionhandle, float positionX, float positionY,
float positionZ, string firstname, string lastname)
{
m_messagesService.TellMessageServersAboutUser( agentID, sessionID, RegionID, regionhandle, positionX,
positionY, positionZ, firstname, lastname);
m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX,
positionY, positionZ, firstname, lastname);
}
}
}
}

View File

@ -41,12 +41,12 @@ namespace OpenSim.Grid.UserServer
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public Dictionary<string, MessageServerInfo> MessageServers;
public MessageServersConnector()
{
MessageServers = new Dictionary<string, MessageServerInfo>();
}
public void RegisterMessageServer(string URI, MessageServerInfo serverData)
{
lock (MessageServers)
@ -55,7 +55,7 @@ namespace OpenSim.Grid.UserServer
MessageServers.Add(URI, serverData);
}
}
public void DeRegisterMessageServer(string URI)
{
lock (MessageServers)
@ -64,7 +64,7 @@ namespace OpenSim.Grid.UserServer
MessageServers.Remove(URI);
}
}
public void AddResponsibleRegion(string URI, ulong regionhandle)
{
if (!MessageServers.ContainsKey(URI))
@ -76,8 +76,9 @@ namespace OpenSim.Grid.UserServer
MessageServerInfo msginfo = MessageServers["URI"];
msginfo.responsibleForRegions.Add(regionhandle);
MessageServers["URI"] = msginfo;
}
}
}
public void RemoveResponsibleRegion(string URI, ulong regionhandle)
{
if (!MessageServers.ContainsKey(URI))
@ -92,20 +93,20 @@ namespace OpenSim.Grid.UserServer
msginfo.responsibleForRegions.Remove(regionhandle);
MessageServers["URI"] = msginfo;
}
}
}
}
public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
if (requestData.Contains("uri"))
{
string URI = (string)requestData["uri"];
string sendkey=(string)requestData["sendkey"];
string recvkey=(string)requestData["recvkey"];
string URI = (string) requestData["uri"];
string sendkey = (string) requestData["sendkey"];
string recvkey = (string) requestData["recvkey"];
MessageServerInfo m = new MessageServerInfo();
m.URI = URI;
m.sendkey = sendkey;
@ -116,15 +117,16 @@ namespace OpenSim.Grid.UserServer
}
return response;
}
public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
if (requestData.Contains("uri"))
{
string URI = (string)requestData["uri"];
string URI = (string) requestData["uri"];
DeRegisterMessageServer(URI);
responseData["responsestring"] = "TRUE";
@ -132,23 +134,24 @@ namespace OpenSim.Grid.UserServer
}
return response;
}
public XmlRpcResponse XmlRPCUserMovedtoRegion(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
if (requestData.Contains("fromuri"))
{
string sURI = (string)requestData["fromuri"];
string sagentID = (string)requestData["agentid"];
string ssessionID = (string)requestData["sessionid"];
string scurrentRegionID = (string)requestData["regionid"];
string sregionhandle = (string)requestData["regionhandle"];
string scurrentpos = (string)requestData["currentpos"];
string sURI = (string) requestData["fromuri"];
string sagentID = (string) requestData["agentid"];
string ssessionID = (string) requestData["sessionid"];
string scurrentRegionID = (string) requestData["regionid"];
string sregionhandle = (string) requestData["regionhandle"];
string scurrentpos = (string) requestData["currentpos"];
//LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos);
// TODO: Okay now raise event so the user server can pass this data to the Usermanager
responseData["responsestring"] = "TRUE";
response.Value = responseData;
}
@ -156,7 +159,7 @@ namespace OpenSim.Grid.UserServer
}
public void TellMessageServersAboutUser(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
ulong regionhandle, float positionX, float positionY,
ulong regionhandle, float positionX, float positionY,
float positionZ, string firstname, string lastname)
{
// Loop over registered Message Servers ( AND THERE WILL BE MORE THEN ONE :D )
@ -173,8 +176,8 @@ namespace OpenSim.Grid.UserServer
foreach (MessageServerInfo serv in MessageServers.Values)
{
NotifyMessageServerAboutUser(serv, agentID, sessionID, RegionID,
regionhandle, positionX, positionY, positionZ,
firstname, lastname);
regionhandle, positionX, positionY, positionZ,
firstname, lastname);
}
}
}
@ -191,10 +194,10 @@ namespace OpenSim.Grid.UserServer
// {
// m_log.Debug("[MSGCONNECTOR]: No Message Servers registered, ignoring");
// }
foreach (MessageServerInfo serv in MessageServers.Values)
{
NotifyMessageServerAboutUserLogoff(serv,agentID);
}
foreach (MessageServerInfo serv in MessageServers.Values)
{
NotifyMessageServerAboutUserLogoff(serv, agentID);
}
}
}
@ -218,10 +221,10 @@ namespace OpenSim.Grid.UserServer
m_log.Info("[LOGOUT]: Notified : " + serv.URI + " about user logout");
}
private void NotifyMessageServerAboutUser(MessageServerInfo serv,
LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
ulong regionhandle, float positionX, float positionY, float positionZ,
string firstname, string lastname)
private void NotifyMessageServerAboutUser(MessageServerInfo serv,
LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
ulong regionhandle, float positionX, float positionY, float positionZ,
string firstname, string lastname)
{
Hashtable reqparams = new Hashtable();
reqparams["sendkey"] = serv.sendkey;
@ -250,7 +253,6 @@ namespace OpenSim.Grid.UserServer
{
m_log.Warn("[MSGCONNECTOR]: Unable to notify Message Server about login. Presence might be borked for this user");
}
}
}
}
}

View File

@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
//
[assembly : AssemblyVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]
[assembly : AssemblyFileVersion("1.0.0.0")]

View File

@ -41,26 +41,26 @@ using OpenSim.Framework.Servers;
namespace OpenSim.Grid.UserServer
{
public delegate void UserLoggedInAtLocation(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
ulong regionhandle, float positionX, float positionY, float positionZ, string firstname, string lastname);
ulong regionhandle, float positionX, float positionY, float positionZ, string firstname, string lastname);
public class UserLoginService : LoginService
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
public event UserLoggedInAtLocation OnUserLoggedInAtLocation;
private UserLoggedInAtLocation handlerUserLoggedInAtLocation;
private UserLoggedInAtLocation handlerUserLoggedInAtLocation = null;
public UserConfig m_config;
public UserLoginService(
UserManagerBase userManager, LibraryRootFolder libraryRootFolder,
UserManagerBase userManager, LibraryRootFolder libraryRootFolder,
UserConfig config, string welcomeMess)
: base(userManager, libraryRootFolder, welcomeMess)
{
m_config = config;
}
public event UserLoggedInAtLocation OnUserLoggedInAtLocation;
/// <summary>
/// Customises the login response and fills in missing values.
/// </summary>
@ -95,7 +95,8 @@ namespace OpenSim.Grid.UserServer
else
{
string[] startLocationRequestParsed = Util.ParseStartLocationRequest(startLocationRequest);
m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" + startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]);
m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" +
startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]);
if (startLocationRequestParsed[0] == "last")
{
// TODO: Parse out startlocationrequest string in the format; 'uri:RegionName&X&Y&Z'
@ -108,9 +109,9 @@ namespace OpenSim.Grid.UserServer
{
m_log.Info("[LOGIN]: Looking up Sim: " + startLocationRequestParsed[0]);
SimInfo =
RegionProfileData.RequestSimProfileData(
startLocationRequestParsed[0], m_config.GridServerURL,
m_config.GridSendKey, m_config.GridRecvKey);
RegionProfileData.RequestSimProfileData(
startLocationRequestParsed[0], m_config.GridServerURL,
m_config.GridSendKey, m_config.GridRecvKey);
if (SimInfo == null)
{
@ -119,7 +120,9 @@ namespace OpenSim.Grid.UserServer
RegionProfileData.RequestSimProfileData(
theUser.HomeRegion, m_config.GridServerURL,
m_config.GridSendKey, m_config.GridRecvKey);
} else {
}
else
{
start_x = Convert.ToInt32(startLocationRequestParsed[1]);
start_y = Convert.ToInt32(startLocationRequestParsed[2]);
start_z = Convert.ToInt32(startLocationRequestParsed[3]);
@ -130,30 +133,30 @@ namespace OpenSim.Grid.UserServer
// Customise the response
//CFK: This is redundant and the next message should always appear.
//CFK: m_log.Info("[LOGIN]: Home Location");
response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize).ToString() + ",r" +
(SimInfo.regionLocY * Constants.RegionSize).ToString() + "], " +
"'position':[r" + theUser.HomeLocation.X.ToString() + ",r" +
theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "], " +
"'look_at':[r" + theUser.HomeLocation.X.ToString() + ",r" +
theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "]}";
response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize) + ",r" +
(SimInfo.regionLocY * Constants.RegionSize) + "], " +
"'position':[r" + theUser.HomeLocation.X + ",r" +
theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "], " +
"'look_at':[r" + theUser.HomeLocation.X + ",r" +
theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "]}";
// Destination
//CFK: The "Notifying" message always seems to appear, so subsume the data from this message into
//CFK: the next one for X & Y and comment this one.
//CFK: m_log.Info("[LOGIN]: CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX +
//CFK: "; Region Y: " + SimInfo.regionLocY);
response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new char[] { '/', ':' })[3]).ToString();
response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]);
response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new[] {'/', ':'})[3]).ToString();
response.SimPort = uint.Parse(SimInfo.serverURI.Split(new[] {'/', ':'})[4]);
response.RegionX = SimInfo.regionLocX;
response.RegionY = SimInfo.regionLocY;
//Not sure if the + "/CAPS/" should in fact be +"CAPS/" depending if there is already a / as part of httpServerURI
string capsPath = Util.GetRandomCapsPath();
response.SeedCapability = SimInfo.httpServerURI + "CAPS/" + capsPath + "0000/";
m_log.DebugFormat(
"[LOGIN]: Sending new CAPS seed url {0} to client {1}",
response.SeedCapability, response.AgentID);
"[LOGIN]: Sending new CAPS seed url {0} to client {1}",
response.SeedCapability, response.AgentID);
// Notify the target of an incoming user
//CFK: The "Notifying" message always seems to appear, so subsume the data from this message into
@ -163,7 +166,8 @@ namespace OpenSim.Grid.UserServer
theUser.CurrentAgent.Region = SimInfo.UUID;
theUser.CurrentAgent.Handle = SimInfo.regionHandle;
if (start_x >= 0 && start_y >= 0 && start_z >= 0) {
if (start_x >= 0 && start_y >= 0 && start_z >= 0)
{
LLVector3 tmp_v = new LLVector3(start_x, start_y, start_z);
theUser.CurrentAgent.Position = tmp_v;
}
@ -186,42 +190,43 @@ namespace OpenSim.Grid.UserServer
// Update agent with target sim
m_log.InfoFormat(
"[LOGIN]: Telling region {0} @ {1},{2} ({3}) to expect user connection",
SimInfo.regionName, response.RegionX, response.RegionY, SimInfo.httpServerURI);
"[LOGIN]: Telling region {0} @ {1},{2} ({3}) to expect user connection",
SimInfo.regionName, response.RegionX, response.RegionY, SimInfo.httpServerURI);
XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);
XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);
XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
if (GridResp.IsFault)
{
m_log.ErrorFormat(
"[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}",
"[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}",
SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
}
handlerUserLoggedInAtLocation = OnUserLoggedInAtLocation;
if (handlerUserLoggedInAtLocation != null)
{
//m_log.Info("[LOGIN]: Letting other objects know about login");
handlerUserLoggedInAtLocation(theUser.ID, theUser.CurrentAgent.SessionID, theUser.CurrentAgent.Region,
theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X,theUser.CurrentAgent.Position.Y,theUser.CurrentAgent.Position.Z,
theUser.FirstName,theUser.SurName);
handlerUserLoggedInAtLocation(theUser.ID, theUser.CurrentAgent.SessionID, theUser.CurrentAgent.Region,
theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X, theUser.CurrentAgent.Position.Y,
theUser.CurrentAgent.Position.Z,
theUser.FirstName, theUser.SurName);
}
}
catch (Exception)
//catch (System.AccessViolationException)
//catch (System.AccessViolationException)
{
tryDefault = true;
}
if (tryDefault)
{
// Send him to default region instead
// Load information from the gridserver
ulong defaultHandle = (((ulong)m_config.DefaultX * Constants.RegionSize) << 32) | ((ulong)m_config.DefaultY * Constants.RegionSize);
ulong defaultHandle = (((ulong) m_config.DefaultX * Constants.RegionSize) << 32) | ((ulong) m_config.DefaultY * Constants.RegionSize);
m_log.Warn(
"[LOGIN]: Home region not available: sending to default " + defaultHandle.ToString());
"[LOGIN]: Home region not available: sending to default " + defaultHandle);
try
{
@ -231,19 +236,19 @@ namespace OpenSim.Grid.UserServer
// Customise the response
m_log.Info("[LOGIN]: Home Location");
response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize).ToString() + ",r" +
(SimInfo.regionLocY * Constants.RegionSize).ToString() + "], " +
"'position':[r" + theUser.HomeLocation.X.ToString() + ",r" +
theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "], " +
"'look_at':[r" + theUser.HomeLocation.X.ToString() + ",r" +
theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "]}";
response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize) + ",r" +
(SimInfo.regionLocY * Constants.RegionSize) + "], " +
"'position':[r" + theUser.HomeLocation.X + ",r" +
theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "], " +
"'look_at':[r" + theUser.HomeLocation.X + ",r" +
theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "]}";
// Destination
m_log.Info("[LOGIN]: " +
"CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " +
SimInfo.regionLocY);
response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new char[] { '/', ':' })[3]).ToString();
response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]);
response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new[] {'/', ':'})[3]).ToString();
response.SimPort = uint.Parse(SimInfo.serverURI.Split(new[] {'/', ':'})[4]);
response.RegionX = SimInfo.regionLocX;
response.RegionY = SimInfo.regionLocY;
@ -283,15 +288,16 @@ namespace OpenSim.Grid.UserServer
{
m_log.Info("[LOGIN]: Letting other objects know about login");
handlerUserLoggedInAtLocation(theUser.ID, theUser.CurrentAgent.SessionID, theUser.CurrentAgent.Region,
theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X, theUser.CurrentAgent.Position.Y, theUser.CurrentAgent.Position.Z,
theUser.FirstName, theUser.SurName);
theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X, theUser.CurrentAgent.Position.Y,
theUser.CurrentAgent.Position.Z,
theUser.FirstName, theUser.SurName);
}
}
catch (Exception e)
{
m_log.Warn("[LOGIN]: Default region also not available");
m_log.Warn("[LOGIN]: " + e.ToString());
m_log.Warn("[LOGIN]: " + e);
}
}
}
@ -300,8 +306,8 @@ namespace OpenSim.Grid.UserServer
protected override InventoryData GetInventorySkeleton(LLUUID userID)
{
m_log.DebugFormat(
"[LOGIN]: Contacting inventory service at {0} for inventory skeleton of user {1}",
m_config.InventoryUrl, userID);
"[LOGIN]: Contacting inventory service at {0} for inventory skeleton of user {1}",
m_config.InventoryUrl, userID);
List<InventoryFolderBase> folders
= SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
@ -316,23 +322,23 @@ namespace OpenSim.Grid.UserServer
// tools are creating the user profile directly in the database without creating the inventory. At
// this time we'll accomodate them by lazily creating the user inventory now if it doesn't already
// exist.
bool created =
bool created =
SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
"POST", m_config.InventoryUrl + "CreateInventory/", userID.UUID);
if (!created)
{
throw new Exception(
String.Format(
"The inventory creation request for user {0} did not succeed."
+ " Please contact your inventory service provider for more information.",
+ " Please contact your inventory service provider for more information.",
userID));
}
else
{
m_log.InfoFormat("[LOGIN]: A new inventory skeleton was successfully created for user {0}", userID);
}
folders = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
"POST", m_config.InventoryUrl + "RootFolders/", userID.UUID);
}
@ -342,11 +348,11 @@ namespace OpenSim.Grid.UserServer
LLUUID rootID = LLUUID.Zero;
ArrayList AgentInventoryArray = new ArrayList();
Hashtable TempHash;
foreach (InventoryFolderBase InvFolder in folders)
{
// m_log.DebugFormat("[LOGIN]: Received agent inventory folder {0}", InvFolder.name);
if (InvFolder.ParentID == LLUUID.Zero)
{
rootID = InvFolder.ID;
@ -359,16 +365,16 @@ namespace OpenSim.Grid.UserServer
TempHash["folder_id"] = InvFolder.ID.ToString();
AgentInventoryArray.Add(TempHash);
}
return new InventoryData(AgentInventoryArray, rootID);
}
else
{
throw new Exception(
String.Format(
"A root inventory folder for user {0} could not be retrieved from the inventory service",
"A root inventory folder for user {0} could not be retrieved from the inventory service",
userID));
}
}
}
}
}

View File

@ -41,11 +41,11 @@ namespace OpenSim.Grid.UserServer
public delegate void logOffUser(LLUUID AgentID);
public class UserManager : UserManagerBase
{
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private logOffUser handlerLogOffUser;
public event logOffUser OnLogOffUser;
private logOffUser handlerLogOffUser = null;
/// <summary>
/// Deletes an active agent session
@ -81,17 +81,17 @@ namespace OpenSim.Grid.UserServer
XmlRpcResponse response = new XmlRpcResponse();
Hashtable responseData = new Hashtable();
// Query Result Information
responseData["queryid"] = (string) queryID.ToString();
responseData["avcount"] = (string) returnUsers.Count.ToString();
responseData["queryid"] = queryID.ToString();
responseData["avcount"] = returnUsers.Count.ToString();
for (int i = 0; i < returnUsers.Count; i++)
{
responseData["avatarid" + i.ToString()] = returnUsers[i].AvatarID.ToString();
responseData["firstname" + i.ToString()] = returnUsers[i].firstName;
responseData["lastname" + i.ToString()] = returnUsers[i].lastName;
responseData["avatarid" + i] = returnUsers[i].AvatarID.ToString();
responseData["firstname" + i] = returnUsers[i].firstName;
responseData["lastname" + i] = returnUsers[i].lastName;
}
response.Value = responseData;
return response;
}
@ -101,14 +101,14 @@ namespace OpenSim.Grid.UserServer
Hashtable responseData = new Hashtable();
// Query Result Information
responseData["avcount"] = (string)returnUsers.Count.ToString();
responseData["avcount"] = returnUsers.Count.ToString();
for (int i = 0; i < returnUsers.Count; i++)
{
responseData["ownerID" + i.ToString()] = returnUsers[i].FriendListOwner.UUID.ToString();
responseData["friendID" + i.ToString()] = returnUsers[i].Friend.UUID.ToString();
responseData["ownerPerms" + i.ToString()] = returnUsers[i].FriendListOwnerPerms.ToString();
responseData["friendPerms" + i.ToString()] = returnUsers[i].FriendPerms.ToString();
responseData["ownerID" + i] = returnUsers[i].FriendListOwner.UUID.ToString();
responseData["friendID" + i] = returnUsers[i].Friend.UUID.ToString();
responseData["ownerPerms" + i] = returnUsers[i].FriendListOwnerPerms.ToString();
responseData["friendPerms" + i] = returnUsers[i].FriendPerms.ToString();
}
response.Value = responseData;
@ -156,6 +156,21 @@ namespace OpenSim.Grid.UserServer
return response;
}
public override UserProfileData SetupMasterUser(string firstName, string lastName)
{
throw new Exception("The method or operation is not implemented.");
}
public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
{
throw new Exception("The method or operation is not implemented.");
}
public override UserProfileData SetupMasterUser(LLUUID uuid)
{
throw new Exception("The method or operation is not implemented.");
}
#region XMLRPC User Methods
public XmlRpcResponse XmlRPCGetAvatarPickerAvatar(XmlRpcRequest request)
@ -178,15 +193,16 @@ namespace OpenSim.Grid.UserServer
public XmlRpcResponse XmlRpcResponseXmlRPCAddUserFriend(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
string returnString = "FALSE";
// Query Result Information
if (requestData.Contains("ownerID") && requestData.Contains("friendID") && requestData.Contains("friendPerms"))
{
// UserManagerBase.AddNewuserFriend
AddNewUserFriend(new LLUUID((string)requestData["ownerID"]), new LLUUID((string)requestData["friendID"]), (uint)Convert.ToInt32((string)requestData["friendPerms"]));
AddNewUserFriend(new LLUUID((string) requestData["ownerID"]), new LLUUID((string) requestData["friendID"]),
(uint) Convert.ToInt32((string) requestData["friendPerms"]));
returnString = "TRUE";
}
responseData["returnString"] = returnString;
@ -197,15 +213,15 @@ namespace OpenSim.Grid.UserServer
public XmlRpcResponse XmlRpcResponseXmlRPCRemoveUserFriend(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
string returnString = "FALSE";
// Query Result Information
if (requestData.Contains("ownerID") && requestData.Contains("friendID"))
{
// UserManagerBase.AddNewuserFriend
RemoveUserFriend(new LLUUID((string)requestData["ownerID"]), new LLUUID((string)requestData["friendID"]));
RemoveUserFriend(new LLUUID((string) requestData["ownerID"]), new LLUUID((string) requestData["friendID"]));
returnString = "TRUE";
}
responseData["returnString"] = returnString;
@ -216,13 +232,14 @@ namespace OpenSim.Grid.UserServer
public XmlRpcResponse XmlRpcResponseXmlRPCUpdateUserFriendPerms(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
string returnString = "FALSE";
if (requestData.Contains("ownerID") && requestData.Contains("friendID") && requestData.Contains("friendPerms"))
{
UpdateUserFriendPerms(new LLUUID((string)requestData["ownerID"]), new LLUUID((string)requestData["friendID"]), (uint)Convert.ToInt32((string)requestData["friendPerms"]));
UpdateUserFriendPerms(new LLUUID((string) requestData["ownerID"]), new LLUUID((string) requestData["friendID"]),
(uint) Convert.ToInt32((string) requestData["friendPerms"]));
// UserManagerBase.
returnString = "TRUE";
}
@ -234,16 +251,16 @@ namespace OpenSim.Grid.UserServer
public XmlRpcResponse XmlRpcResponseXmlRPCGetUserFriendList(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
List<FriendListItem> returndata = new List<FriendListItem>();
if (requestData.Contains("ownerID"))
{
returndata = this.GetUserFriendList(new LLUUID((string)requestData["ownerID"]));
returndata = GetUserFriendList(new LLUUID((string) requestData["ownerID"]));
}
return FriendListItemListtoXmlRPCResponse(returndata);
}
@ -321,7 +338,7 @@ namespace OpenSim.Grid.UserServer
{
m_log.Debug("[UserManager]: Got request to update user profile");
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
Hashtable responseData = new Hashtable();
UserProfileData userProfile;
@ -330,7 +347,7 @@ namespace OpenSim.Grid.UserServer
return CreateUnknownUserErrorResponse();
}
LLUUID UserUUID = new LLUUID((string)requestData["avatar_uuid"]);
LLUUID UserUUID = new LLUUID((string) requestData["avatar_uuid"]);
userProfile = GetUserProfile(UserUUID);
if (null == userProfile)
{
@ -342,33 +359,33 @@ namespace OpenSim.Grid.UserServer
}
if (requestData.Contains("FLImageID"))
{
userProfile.FirstLifeImage = new LLUUID((string)requestData["FLImageID"]);
userProfile.FirstLifeImage = new LLUUID((string) requestData["FLImageID"]);
}
if (requestData.Contains("ImageID"))
{
userProfile.Image = new LLUUID((string)requestData["ImageID"]);
userProfile.Image = new LLUUID((string) requestData["ImageID"]);
}
// dont' know how yet
if (requestData.Contains("MaturePublish"))
{
{
}
if (requestData.Contains("AboutText"))
{
userProfile.AboutText = (string)requestData["AboutText"];
userProfile.AboutText = (string) requestData["AboutText"];
}
if (requestData.Contains("FLAboutText"))
{
userProfile.FirstLifeAboutText = (string)requestData["FLAboutText"];
userProfile.FirstLifeAboutText = (string) requestData["FLAboutText"];
}
// not in DB yet.
if (requestData.Contains("ProfileURL"))
{
{
}
if (requestData.Contains("home_region"))
{
try
{
userProfile.HomeRegion = Convert.ToUInt64((string)requestData["home_region"]);
userProfile.HomeRegion = Convert.ToUInt64((string) requestData["home_region"]);
}
catch (ArgumentException)
{
@ -382,25 +399,23 @@ namespace OpenSim.Grid.UserServer
{
m_log.Error("[PROFILE]:Failed to set home region, Value was too large");
}
}
if (requestData.Contains("home_pos_x"))
{
try
{
userProfile.HomeLocationX = (float)Convert.ToDecimal((string)requestData["home_pos_x"]);
userProfile.HomeLocationX = (float) Convert.ToDecimal((string) requestData["home_pos_x"]);
}
catch (InvalidCastException)
{
m_log.Error("[PROFILE]:Failed to set home postion x");
}
}
if (requestData.Contains("home_pos_y"))
{
try
{
userProfile.HomeLocationY = (float)Convert.ToDecimal((string)requestData["home_pos_y"]);
userProfile.HomeLocationY = (float) Convert.ToDecimal((string) requestData["home_pos_y"]);
}
catch (InvalidCastException)
{
@ -411,7 +426,7 @@ namespace OpenSim.Grid.UserServer
{
try
{
userProfile.HomeLocationZ = (float)Convert.ToDecimal((string)requestData["home_pos_z"]);
userProfile.HomeLocationZ = (float) Convert.ToDecimal((string) requestData["home_pos_z"]);
}
catch (InvalidCastException)
{
@ -422,7 +437,7 @@ namespace OpenSim.Grid.UserServer
{
try
{
userProfile.HomeLookAtX = (float)Convert.ToDecimal((string)requestData["home_look_x"]);
userProfile.HomeLookAtX = (float) Convert.ToDecimal((string) requestData["home_look_x"]);
}
catch (InvalidCastException)
{
@ -433,7 +448,7 @@ namespace OpenSim.Grid.UserServer
{
try
{
userProfile.HomeLookAtY = (float)Convert.ToDecimal((string)requestData["home_look_y"]);
userProfile.HomeLookAtY = (float) Convert.ToDecimal((string) requestData["home_look_y"]);
}
catch (InvalidCastException)
{
@ -442,9 +457,9 @@ namespace OpenSim.Grid.UserServer
}
if (requestData.Contains("home_look_z"))
{
try
try
{
userProfile.HomeLookAtZ = (float)Convert.ToDecimal((string)requestData["home_look_z"]);
userProfile.HomeLookAtZ = (float) Convert.ToDecimal((string) requestData["home_look_z"]);
}
catch (InvalidCastException)
{
@ -461,18 +476,18 @@ namespace OpenSim.Grid.UserServer
public XmlRpcResponse XmlRPCLogOffUserMethodUUID(XmlRpcRequest request)
{
XmlRpcResponse response = new XmlRpcResponse();
Hashtable requestData = (Hashtable)request.Params[0];
Hashtable requestData = (Hashtable) request.Params[0];
if (requestData.Contains("avatar_uuid"))
{
try
{
LLUUID userUUID = new LLUUID((string)requestData["avatar_uuid"]);
LLUUID RegionID = new LLUUID((string)requestData["region_uuid"]);
ulong regionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]);
float posx = (float)Convert.ToDecimal((string)requestData["region_pos_x"]);
float posy = (float)Convert.ToDecimal((string)requestData["region_pos_y"]);
float posz = (float)Convert.ToDecimal((string)requestData["region_pos_z"]);
LLUUID userUUID = new LLUUID((string) requestData["avatar_uuid"]);
LLUUID RegionID = new LLUUID((string) requestData["region_uuid"]);
ulong regionhandle = (ulong) Convert.ToInt64((string) requestData["region_handle"]);
float posx = (float) Convert.ToDecimal((string) requestData["region_pos_x"]);
float posy = (float) Convert.ToDecimal((string) requestData["region_pos_y"]);
float posz = (float) Convert.ToDecimal((string) requestData["region_pos_z"]);
handlerLogOffUser = OnLogOffUser;
if (handlerLogOffUser != null)
@ -495,20 +510,5 @@ namespace OpenSim.Grid.UserServer
}
#endregion
public override UserProfileData SetupMasterUser(string firstName, string lastName)
{
throw new Exception("The method or operation is not implemented.");
}
public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
{
throw new Exception("The method or operation is not implemented.");
}
public override UserProfileData SetupMasterUser(LLUUID uuid)
{
throw new Exception("The method or operation is not implemented.");
}
}
}
}

View File

@ -52,12 +52,12 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
public class LoadBalancerPlugin : IApplicationPlugin
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private readonly object padlock = new object();
private BaseHttpServer commandServer;
private bool[] isLocalNeighbour;
private bool isSplit = false;
private bool isSplit;
private TcpServer mTcpServer;
private object padlock = new object();
private int proxyOffset;
private string proxyURL;
@ -80,8 +80,8 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
if (proxyURL.Length == 0) return;
StartTcpServer();
ClientView.SynchronizeClient = new ClientView.SynchronizeClientHandler(SynchronizePackets);
AsynchronousSocketListener.PacketHandler = new AsynchronousSocketListener.PacketRecieveHandler(SynchronizePacketRecieve);
ClientView.SynchronizeClient = SynchronizePackets;
AsynchronousSocketListener.PacketHandler = SynchronizePacketRecieve;
sceneManager = openSim.SceneManager;
udpServers = openSim.UdpServers;
@ -146,7 +146,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
{
ClientView client = (ClientView) pre.ControllingClient;
//if(pre.MovementFlag!=0 && client.PacketProcessingEnabled==true) {
if (client.PacketProcessingEnabled == true)
if (client.PacketProcessingEnabled)
{
get_scene_presence_filter++;
}
@ -159,7 +159,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
{
ClientView client = (ClientView) pre.ControllingClient;
//if(pre.MovementFlag!=0 && client.PacketProcessingEnabled==true) {
if (client.PacketProcessingEnabled == true)
if (client.PacketProcessingEnabled)
{
get_avatar_filter++;
avatar_names += pre.Firstname + " " + pre.Lastname + "; ";
@ -178,7 +178,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
}
return response;
@ -199,7 +199,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
}
@ -223,7 +223,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
}
@ -247,7 +247,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
throw e;
}
@ -264,14 +264,14 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
int src_port = (int) request.Params[0];
// backgroud
WaitCallback callback = new WaitCallback(TerminateRegion);
WaitCallback callback = TerminateRegion;
ThreadPool.QueueUserWorkItem(callback, src_port);
m_log.Info("[BALANCER] " + "Exiting TerminateRegion()");
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
}
@ -330,8 +330,8 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
dst_region = DeserializeRegion(dst_port, false, serializeDir);
// Decide who is in charge for each section
int[] port = new int[] {src_port, dst_port};
string[] url = new string[] {"http://" + src_url + ":" + commandServer.Port, "http://" + dst_url + ":" + commandServer.Port};
int[] port = new[] {src_port, dst_port};
string[] url = new[] {"http://" + src_url + ":" + commandServer.Port, "http://" + dst_url + ":" + commandServer.Port};
for (int i = 0; i < 2; i++) Util.XmlRpcCommand(url[i], "SplitRegion", i, 2, port[0], port[1], url[0], url[1]);
// Enable the proxy
@ -424,7 +424,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
// serialization of region data
SearializableRegionInfo dst_region = new SearializableRegionInfo(src_region);
filename = export_dir + "RegionInfo_" + src_region.RegionID.ToString() + ".bin";
filename = export_dir + "RegionInfo_" + src_region.RegionID + ".bin";
Util.SerializeToFile(filename, dst_region);
// backup current scene's entities
@ -451,7 +451,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
{
ClientInfo info = controller.GetClientInfo();
filename = export_dir + "ClientInfo-" + String.Format("{0:0000}", idx) + "_" + controller.CircuitCode.ToString() + ".bin";
filename = export_dir + "ClientInfo-" + String.Format("{0:0000}", idx) + "_" + controller.CircuitCode + ".bin";
Util.SerializeToFile(filename, info);
@ -469,13 +469,12 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
private RegionInfo DeserializeRegion(int dst_port, bool move_flag, string import_dir)
{
string[] files = null;
RegionInfo dst_region = null;
try
{
// deserialization of region data
files = Directory.GetFiles(import_dir, "RegionInfo_*.bin");
string[] files = Directory.GetFiles(import_dir, "RegionInfo_*.bin");
foreach (string filename in files)
{
@ -503,7 +502,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
throw e;
}
@ -593,7 +592,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
// change RegionInfo (memory only)
dst_region.InternalEndPoint.Port = dst_port;
dst_region.ExternalHostName = proxyURL.Split(new char[] {'/', ':'})[3];
dst_region.ExternalHostName = proxyURL.Split(new[] {'/', ':'})[3];
// Create new region
simMain.CreateRegion(dst_region, false);
@ -695,7 +694,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
for (int i = 0; i < numRegions; i++)
{
hostname = sceneURL[i].Split(new char[] {'/', ':'})[3];
hostname = sceneURL[i].Split(new[] {'/', ':'})[3];
m_log.InfoFormat("[SPLITSCENE] " + "creating tcp client host:{0}", hostname);
tcpClientList[i] = new TcpClient(hostname, 10001);
}
@ -731,12 +730,11 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
List<uint> circuits = scene.ClientManager.GetAllCircuitCodes();
circuits.Sort();
IClientAPI controller = null;
foreach (uint code in circuits)
{
m_log.InfoFormat("[BALANCER] " + "circuit code : {0}", code);
IClientAPI controller;
if (scene.ClientManager.TryGetClient(code, out controller))
{
// Divide the presences evenly over the set of subscenes
@ -756,7 +754,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
scene.splitID = myID;
scene.SynchronizeScene = new Scene.SynchronizeSceneHandler(SynchronizeScenes);
scene.SynchronizeScene = SynchronizeScenes;
isSplit = true;
}
else
@ -766,7 +764,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[SPLITSCENE] " + e.ToString());
m_log.Error("[SPLITSCENE] " + e);
m_log.Error("[SPLITSCENE] " + e.StackTrace);
}
@ -820,7 +818,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[BALANCER] " + e.ToString());
m_log.Error("[BALANCER] " + e);
m_log.Error("[BALANCER] " + e.StackTrace);
throw e;
}
@ -893,7 +891,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
// Because data changes by the physics simulation when the client doesn't move,
// if MovementFlag is false, It is necessary to synchronize.
//if(pre.MovementFlag!=0 && client.PacketProcessingEnabled==true)
if (client.PacketProcessingEnabled == true)
if (client.PacketProcessingEnabled)
{
//m_log.Info("[SPLITSCENE] "+String.Format("Client moving in {0} {1}", scene.RegionInfo.RegionID, pre.AbsolutePosition));
@ -1016,7 +1014,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
return;
}
if (((ClientView) pre.ControllingClient).PacketProcessingEnabled == true)
if (((ClientView) pre.ControllingClient).PacketProcessingEnabled)
{
pre.ControllingClient.OutPacket(packet, throttlePacketType);
}
@ -1060,7 +1058,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
}
catch (Exception e)
{
m_log.Error("[SPLITSCENE] " + e.ToString());
m_log.Error("[SPLITSCENE] " + e);
m_log.Error("[SPLITSCENE] " + e.StackTrace);
}
@ -1072,7 +1070,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
LLUUID scenePresenceID = new LLUUID(header.agent_id);
LLVector3 position = new LLVector3(buff, 0);
LLVector3 velocity = new LLVector3(buff, 12);
bool flying = ((buff[24] == (byte) 1) ? true : false);
bool flying = ((buff[24] == 1) ? true : false);
LocalUpdatePhysics(regionPort, scenePresenceID, position, velocity, flying);

View File

@ -34,8 +34,8 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
{
public class AsynchronousClient
{
private static ManualResetEvent connectDone = new ManualResetEvent(false);
private static ManualResetEvent sendDone = new ManualResetEvent(false);
private static readonly ManualResetEvent connectDone = new ManualResetEvent(false);
private static readonly ManualResetEvent sendDone = new ManualResetEvent(false);
public static Socket StartClient(string hostname, int port)
{
@ -46,7 +46,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.BeginConnect(remoteEP, new AsyncCallback(ConnectCallback), client);
client.BeginConnect(remoteEP, ConnectCallback, client);
connectDone.WaitOne();
/*
Send(client,"This is a test<EOF>");
@ -71,7 +71,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
{
Socket client = (Socket) ar.AsyncState;
client.EndConnect(ar);
Console.WriteLine("Socket connected to {0}", client.RemoteEndPoint.ToString());
Console.WriteLine("Socket connected to {0}", client.RemoteEndPoint);
connectDone.Set();
}
catch (Exception e)
@ -138,8 +138,8 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
public class InternalPacketHeader
{
private readonly byte[] buffer = new byte[32];
public Guid agent_id;
private byte[] buffer = new byte[32];
public int numbytes;
public int region_port;
public int throttlePacketType;
@ -150,16 +150,16 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
int i = 0; // offset
try
{
type = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
throttlePacketType = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
numbytes = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
type = (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
throttlePacketType = (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
numbytes = (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
agent_id = new Guid(
bytes[i++] | (bytes[i++] << 8) | (bytes[i++] << 16) | bytes[i++] << 24,
(short) (bytes[i++] | (bytes[i++] << 8)),
(short) (bytes[i++] | (bytes[i++] << 8)),
bytes[i++], bytes[i++], bytes[i++], bytes[i++],
bytes[i++], bytes[i++], bytes[i++], bytes[i++]);
region_port = (int) (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
region_port = (bytes[i++] + (bytes[i++] << 8) + (bytes[i++] << 16) + (bytes[i++] << 24));
}
catch (Exception)
{
@ -201,10 +201,10 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
public class TcpClient
{
public static int internalPacketHeaderSize = 4 * 4 + 16 * 1;
private Socket mConnection;
private string mHostname;
private int mPort;
private readonly string mHostname;
private readonly int mPort;
private Socket mConnection;
public TcpClient(string hostname, int port)
{

View File

@ -37,15 +37,15 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
{
public const int BufferSize = 2048;
public byte[] buffer = new byte[BufferSize];
public InternalPacketHeader header = null;
public InternalPacketHeader header;
public MemoryStream ms_ptr = new MemoryStream();
public Socket workSocket = null;
public Socket workSocket;
}
public class AsynchronousSocketListener
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
public static string data = null;
public static string data;
#region KIRYU
@ -55,14 +55,10 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
#endregion
public static PacketRecieveHandler PacketHandler = null;
public static PacketRecieveHandler PacketHandler;
#endregion
public AsynchronousSocketListener()
{
}
public static void StartListening(int port)
{
IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
@ -199,7 +195,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
public class TcpServer
{
private int mPort = 11000;
private readonly int mPort = 11000;
public TcpServer()
{

View File

@ -75,7 +75,7 @@ namespace OpenSim.ApplicationPlugins.RegionProxy
string proxyURL = openSim.ConfigSource.Configs["Network"].GetString("proxy_url", "");
if (proxyURL.Length == 0) return;
uint port = (uint) Int32.Parse(proxyURL.Split(new char[] {':'})[2]);
uint port = (uint) Int32.Parse(proxyURL.Split(new[] {':'})[2]);
command_server = new BaseHttpServer(port);
command_server.Start();
command_server.AddXmlRPCHandler("AddPort", AddPort);
@ -223,7 +223,7 @@ namespace OpenSim.ApplicationPlugins.RegionProxy
{
m_log = log;
running = false;
receivedData = new AsyncCallback(OnReceivedData);
receivedData = OnReceivedData;
}
public void BlockClientMessages(string regionUrl, int regionPort)
@ -452,7 +452,7 @@ namespace OpenSim.ApplicationPlugins.RegionProxy
protected class ProxyMap
{
private Dictionary<EndPoint, RegionData> map;
private readonly Dictionary<EndPoint, RegionData> map;
public ProxyMap()
{
@ -494,7 +494,7 @@ namespace OpenSim.ApplicationPlugins.RegionProxy
public class RegionData
{
public bool isBlocked = false;
public bool isBlocked;
public List<EndPoint> regions = new List<EndPoint>();
public Queue storedMessages = new Queue();
}