Cleaned up IGridServer interfaces.
Added a try/catch around the http server Startupadam
parent
7c925fb607
commit
8d1e9f83f3
|
@ -38,6 +38,7 @@ using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using libsecondlife;
|
using libsecondlife;
|
||||||
using ServerConsole;
|
using ServerConsole;
|
||||||
|
using OpenSim.GridServers;
|
||||||
|
|
||||||
namespace OpenSim
|
namespace OpenSim
|
||||||
{
|
{
|
||||||
|
@ -54,16 +55,23 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StartHTTP() {
|
public void StartHTTP() {
|
||||||
ServerConsole.MainConsole.Instance.WriteLine("SimHttp.cs:StartHTTP() - Spawned main thread OK");
|
try
|
||||||
Listener = new HttpListener();
|
{
|
||||||
|
ServerConsole.MainConsole.Instance.WriteLine("SimHttp.cs:StartHTTP() - Spawned main thread OK");
|
||||||
|
Listener = new HttpListener();
|
||||||
|
|
||||||
Listener.Prefixes.Add("http://+:" + OpenSim_Main.cfg.IPListenPort + "/");
|
Listener.Prefixes.Add("http://+:" + OpenSim_Main.cfg.IPListenPort + "/");
|
||||||
Listener.Start();
|
Listener.Start();
|
||||||
|
|
||||||
HttpListenerContext context;
|
HttpListenerContext context;
|
||||||
while(true) {
|
while(true) {
|
||||||
context = Listener.GetContext();
|
context = Listener.GetContext();
|
||||||
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
|
ThreadPool.QueueUserWorkItem(new WaitCallback(HandleRequest), context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
ServerConsole.MainConsole.Instance.WriteLine(e.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +89,10 @@ namespace OpenSim
|
||||||
agent_data.lastname = (string)requestData["lastname"];
|
agent_data.lastname = (string)requestData["lastname"];
|
||||||
agent_data.AgentID = new LLUUID((string)requestData["agent_id"]);
|
agent_data.AgentID = new LLUUID((string)requestData["agent_id"]);
|
||||||
agent_data.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
|
agent_data.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
|
||||||
OpenSim_Main.gridServers.GridServer.agentcircuits.Add((uint)agent_data.circuitcode,agent_data);
|
if (OpenSim_Main.gridServers.GridServer.GetName() == "Remote")
|
||||||
|
{
|
||||||
|
((RemoteGridBase) OpenSim_Main.gridServers.GridServer).agentcircuits.Add((uint)agent_data.circuitcode,agent_data);
|
||||||
|
}
|
||||||
return "<?xml version=\"1.0\"?><methodResponse><params /></methodResponse>";
|
return "<?xml version=\"1.0\"?><methodResponse><params /></methodResponse>";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,18 +46,41 @@ namespace OpenSim.GridServers
|
||||||
|
|
||||||
public interface IGridServer
|
public interface IGridServer
|
||||||
{
|
{
|
||||||
bool RequestConnection();
|
|
||||||
Dictionary<uint, agentcircuitdata> agentcircuits {
|
|
||||||
get;
|
|
||||||
set;
|
|
||||||
}
|
|
||||||
UUIDBlock RequestUUIDBlock();
|
UUIDBlock RequestUUIDBlock();
|
||||||
void RequestNeighbours(); //should return a array of neighbouring regions
|
void RequestNeighbours(); //should return a array of neighbouring regions
|
||||||
AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
|
string GetName();
|
||||||
|
bool RequestConnection();
|
||||||
void SetServerInfo(string ServerUrl, string ServerKey);
|
void SetServerInfo(string ServerUrl, string ServerKey);
|
||||||
void AddNewSession(Login session); // only used by local version of grid server
|
}
|
||||||
// and didn't use to be part of this interface until we put this in a dll
|
|
||||||
|
public abstract class RemoteGridBase : IGridServer
|
||||||
|
{
|
||||||
|
public abstract Dictionary<uint, agentcircuitdata> agentcircuits {
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract UUIDBlock RequestUUIDBlock();
|
||||||
|
public abstract void RequestNeighbours();
|
||||||
|
public abstract AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
|
public abstract bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
|
public abstract string GetName();
|
||||||
|
public abstract bool RequestConnection();
|
||||||
|
public abstract void SetServerInfo(string ServerUrl, string ServerKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract class LocalGridBase : IGridServer
|
||||||
|
{
|
||||||
|
public abstract UUIDBlock RequestUUIDBlock();
|
||||||
|
public abstract void RequestNeighbours();
|
||||||
|
public abstract AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
|
public abstract bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode);
|
||||||
|
public abstract string GetName();
|
||||||
|
public abstract bool RequestConnection();
|
||||||
|
public abstract void SetServerInfo(string ServerUrl, string ServerKey);
|
||||||
|
public abstract void AddNewSession(Login session);
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct UUIDBlock
|
public struct UUIDBlock
|
||||||
|
|
|
@ -249,8 +249,11 @@ namespace OpenSim.GridServers
|
||||||
_login.BaseFolder = BaseFolderID;
|
_login.BaseFolder = BaseFolderID;
|
||||||
_login.InventoryFolder = InventoryFolderID;
|
_login.InventoryFolder = InventoryFolderID;
|
||||||
|
|
||||||
//working on local computer so lets add to the gridserver's list of sessions
|
//working on local computer so lets add to the gridserver's list of sessions?
|
||||||
this._gridServer.AddNewSession(_login);
|
if(OpenSim_Main.gridServers.GridServer.GetName() == "Local")
|
||||||
|
{
|
||||||
|
((LocalGridBase)this._gridServer).AddNewSession(_login);
|
||||||
|
}
|
||||||
|
|
||||||
// forward the XML-RPC response to the client
|
// forward the XML-RPC response to the client
|
||||||
writer.WriteLine("HTTP/1.0 200 OK");
|
writer.WriteLine("HTTP/1.0 200 OK");
|
||||||
|
|
|
@ -110,28 +110,26 @@ namespace LocalGridServers
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LocalGridServer :IGridServer
|
public class LocalGridServer : LocalGridBase
|
||||||
{
|
{
|
||||||
public List<Login> Sessions = new List<Login>();
|
public List<Login> Sessions = new List<Login>();
|
||||||
|
|
||||||
private Dictionary<uint, agentcircuitdata> AgentCircuits = new Dictionary<uint, agentcircuitdata>();
|
|
||||||
|
|
||||||
public Dictionary<uint, agentcircuitdata> agentcircuits {
|
|
||||||
get {return agentcircuits;}
|
|
||||||
set {agentcircuits=value;}
|
|
||||||
}
|
|
||||||
|
|
||||||
public LocalGridServer()
|
public LocalGridServer()
|
||||||
{
|
{
|
||||||
Sessions = new List<Login>();
|
Sessions = new List<Login>();
|
||||||
ServerConsole.MainConsole.Instance.WriteLine("Local Grid Server class created");
|
ServerConsole.MainConsole.Instance.WriteLine("Local Grid Server class created");
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool RequestConnection()
|
public override string GetName()
|
||||||
|
{
|
||||||
|
return "Local";
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool RequestConnection()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
public AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
public override AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
||||||
{
|
{
|
||||||
//we are running local
|
//we are running local
|
||||||
AuthenticateResponse user = new AuthenticateResponse();
|
AuthenticateResponse user = new AuthenticateResponse();
|
||||||
|
@ -151,31 +149,32 @@ namespace LocalGridServers
|
||||||
return(user);
|
return(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
public override bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
||||||
{
|
{
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUIDBlock RequestUUIDBlock()
|
public override UUIDBlock RequestUUIDBlock()
|
||||||
{
|
{
|
||||||
UUIDBlock uuidBlock = new UUIDBlock();
|
UUIDBlock uuidBlock = new UUIDBlock();
|
||||||
return(uuidBlock);
|
return(uuidBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RequestNeighbours()
|
public override void RequestNeighbours()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetServerInfo(string ServerUrl, string ServerKey)
|
public override void SetServerInfo(string ServerUrl, string ServerKey)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// used by the local login server to inform us of new sessions
|
/// used by the local login server to inform us of new sessions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="session"></param>
|
/// <param name="session"></param>
|
||||||
public void AddNewSession(Login session)
|
public override void AddNewSession(Login session)
|
||||||
{
|
{
|
||||||
lock(this.Sessions)
|
lock(this.Sessions)
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,13 +65,13 @@ namespace RemoteGridServers
|
||||||
return(new RemoteAssetServer());
|
return(new RemoteAssetServer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public class RemoteGridServer :IGridServer
|
public class RemoteGridServer : RemoteGridBase
|
||||||
{
|
{
|
||||||
private string GridServerUrl;
|
private string GridServerUrl;
|
||||||
private string GridSendKey;
|
private string GridSendKey;
|
||||||
private Dictionary<uint, agentcircuitdata> AgentCircuits = new Dictionary<uint, agentcircuitdata>();
|
private Dictionary<uint, agentcircuitdata> AgentCircuits = new Dictionary<uint, agentcircuitdata>();
|
||||||
|
|
||||||
public Dictionary<uint, agentcircuitdata> agentcircuits {
|
public override Dictionary<uint, agentcircuitdata> agentcircuits {
|
||||||
get {return AgentCircuits;}
|
get {return AgentCircuits;}
|
||||||
set {AgentCircuits=value;}
|
set {AgentCircuits=value;}
|
||||||
}
|
}
|
||||||
|
@ -81,13 +81,12 @@ namespace RemoteGridServers
|
||||||
ServerConsole.MainConsole.Instance.WriteLine("Remote Grid Server class created");
|
ServerConsole.MainConsole.Instance.WriteLine("Remote Grid Server class created");
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool RequestConnection()
|
public override bool RequestConnection()
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
|
||||||
public AuthenticateResponse AuthenticateSession(LLUUID sessionID, LLUUID agentID, uint circuitcode)
|
|
||||||
{
|
{
|
||||||
agentcircuitdata validcircuit=this.AgentCircuits[circuitcode];
|
agentcircuitdata validcircuit=this.AgentCircuits[circuitcode];
|
||||||
AuthenticateResponse user = new AuthenticateResponse();
|
AuthenticateResponse user = new AuthenticateResponse();
|
||||||
|
@ -110,7 +109,7 @@ namespace RemoteGridServers
|
||||||
return(user);
|
return(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
public override bool LogoutSession(LLUUID sessionID, LLUUID agentID, uint circuitCode)
|
||||||
{
|
{
|
||||||
WebRequest DeleteSession = WebRequest.Create(GridServerUrl + "/usersessions/" + sessionID.ToString());
|
WebRequest DeleteSession = WebRequest.Create(GridServerUrl + "/usersessions/" + sessionID.ToString());
|
||||||
DeleteSession.Method="DELETE";
|
DeleteSession.Method="DELETE";
|
||||||
|
@ -127,26 +126,26 @@ namespace RemoteGridServers
|
||||||
return(true);
|
return(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public UUIDBlock RequestUUIDBlock()
|
public override UUIDBlock RequestUUIDBlock()
|
||||||
{
|
{
|
||||||
UUIDBlock uuidBlock = new UUIDBlock();
|
UUIDBlock uuidBlock = new UUIDBlock();
|
||||||
return(uuidBlock);
|
return(uuidBlock);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RequestNeighbours()
|
public override void RequestNeighbours()
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetServerInfo(string ServerUrl, string ServerKey)
|
public override void SetServerInfo(string ServerUrl, string ServerKey)
|
||||||
{
|
{
|
||||||
this.GridServerUrl = ServerUrl;
|
this.GridServerUrl = ServerUrl;
|
||||||
this.GridSendKey = ServerKey;
|
this.GridSendKey = ServerKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddNewSession(Login session)
|
public override string GetName()
|
||||||
{
|
{
|
||||||
|
return "Remote";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue