* More refactorings of UDPServer.
* Removed all references where possible. * Renamed lots of variables from UDPServerXYZ to clientServerXYZ0.6.0-stable
parent
a1c0e89067
commit
67bbfadc06
|
@ -24,103 +24,3 @@
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace OpenSim.Framework.Servers
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
public class CheckSumServer : UDPServerBase
|
|
||||||
{
|
|
||||||
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
public CheckSumServer(int port)
|
|
||||||
: base(port)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnReceivedData(IAsyncResult result)
|
|
||||||
{
|
|
||||||
ipeSender = new IPEndPoint(IPAddress.Any, 0);
|
|
||||||
epSender = (EndPoint)ipeSender;
|
|
||||||
Packet packet = null;
|
|
||||||
int numBytes = Server.EndReceiveFrom(result, ref epSender);
|
|
||||||
int packetEnd = numBytes - 1;
|
|
||||||
|
|
||||||
packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
|
|
||||||
|
|
||||||
if (packet.Type == PacketType.SecuredTemplateChecksumRequest)
|
|
||||||
{
|
|
||||||
SecuredTemplateChecksumRequestPacket checksum = (SecuredTemplateChecksumRequestPacket)packet;
|
|
||||||
TemplateChecksumReplyPacket checkreply = new TemplateChecksumReplyPacket();
|
|
||||||
checkreply.DataBlock.Checksum = 3220703154;//180572585;
|
|
||||||
checkreply.DataBlock.Flags = 0;
|
|
||||||
checkreply.DataBlock.MajorVersion = 1;
|
|
||||||
checkreply.DataBlock.MinorVersion = 15;
|
|
||||||
checkreply.DataBlock.PatchVersion = 0;
|
|
||||||
checkreply.DataBlock.ServerVersion = 0;
|
|
||||||
checkreply.TokenBlock.Token = checksum.TokenBlock.Token;
|
|
||||||
this.SendPacket(checkreply, epSender);
|
|
||||||
|
|
||||||
/*
|
|
||||||
//if we wanted to echo the the checksum/ version from the client (so that any client worked)
|
|
||||||
SecuredTemplateChecksumRequestPacket checkrequest = new SecuredTemplateChecksumRequestPacket();
|
|
||||||
checkrequest.TokenBlock.Token = checksum.TokenBlock.Token;
|
|
||||||
this.SendPacket(checkrequest, epSender);
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (packet.Type == PacketType.TemplateChecksumReply)
|
|
||||||
{
|
|
||||||
//echo back the client checksum reply (Hegemon's method)
|
|
||||||
TemplateChecksumReplyPacket checksum2 = (TemplateChecksumReplyPacket)packet;
|
|
||||||
TemplateChecksumReplyPacket checkreply2 = new TemplateChecksumReplyPacket();
|
|
||||||
checkreply2.DataBlock.Checksum = checksum2.DataBlock.Checksum;
|
|
||||||
checkreply2.DataBlock.Flags = checksum2.DataBlock.Flags;
|
|
||||||
checkreply2.DataBlock.MajorVersion = checksum2.DataBlock.MajorVersion;
|
|
||||||
checkreply2.DataBlock.MinorVersion = checksum2.DataBlock.MinorVersion;
|
|
||||||
checkreply2.DataBlock.PatchVersion = checksum2.DataBlock.PatchVersion;
|
|
||||||
checkreply2.DataBlock.ServerVersion = checksum2.DataBlock.ServerVersion;
|
|
||||||
checkreply2.TokenBlock.Token = checksum2.TokenBlock.Token;
|
|
||||||
this.SendPacket(checkreply2, epSender);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SendPacket(Packet Pack, EndPoint endp)
|
|
||||||
{
|
|
||||||
if (!Pack.Header.Resent)
|
|
||||||
{
|
|
||||||
Pack.Header.Sequence = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte[] ZeroOutBuffer = new byte[4096];
|
|
||||||
byte[] sendbuffer;
|
|
||||||
sendbuffer = Pack.ToBytes();
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (Pack.Header.Zerocoded)
|
|
||||||
{
|
|
||||||
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
|
|
||||||
this.SendPackTo(ZeroOutBuffer, packetsize, SocketFlags.None, endp);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.SendPackTo(sendbuffer, sendbuffer.Length, SocketFlags.None, endp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception)
|
|
||||||
{
|
|
||||||
m_log.Warn("CheckSumServer.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SendPackTo(byte[] buffer, int size, SocketFlags flags, EndPoint endp)
|
|
||||||
{
|
|
||||||
this.Server.SendTo(buffer, size, flags, endp);
|
|
||||||
}
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
|
@ -40,7 +40,6 @@ using OpenSim.Framework.Communications.Cache;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
using OpenSim.Framework.Statistics;
|
using OpenSim.Framework.Statistics;
|
||||||
using OpenSim.Region.ClientStack;
|
using OpenSim.Region.ClientStack;
|
||||||
using OpenSim.Region.ClientStack.LindenUDP;
|
|
||||||
using OpenSim.Region.Communications.Local;
|
using OpenSim.Region.Communications.Local;
|
||||||
using OpenSim.Region.Communications.OGS1;
|
using OpenSim.Region.Communications.OGS1;
|
||||||
using OpenSim.Region.Environment;
|
using OpenSim.Region.Environment;
|
||||||
|
@ -106,7 +105,7 @@ namespace OpenSim
|
||||||
get { return m_httpServer; }
|
get { return m_httpServer; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IClientNetworkServer> UdpServers
|
public List<IClientNetworkServer> ClientServers
|
||||||
{
|
{
|
||||||
get { return m_clientServers; }
|
get { return m_clientServers; }
|
||||||
}
|
}
|
||||||
|
@ -409,12 +408,6 @@ namespace OpenSim
|
||||||
plugin.Initialise(this);
|
plugin.Initialise(this);
|
||||||
m_plugins.Add(plugin);
|
m_plugins.Add(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start UDP servers
|
|
||||||
//for (int i = 0; i < m_udpServers.Count; i++)
|
|
||||||
//{
|
|
||||||
// m_udpServers[i].ServerListener();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Initialize()
|
protected override void Initialize()
|
||||||
|
@ -496,8 +489,8 @@ namespace OpenSim
|
||||||
Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName);
|
Util.XmlRpcCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName);
|
||||||
}
|
}
|
||||||
|
|
||||||
IClientNetworkServer udpServer;
|
IClientNetworkServer clientServer;
|
||||||
Scene scene = SetupScene(regionInfo, proxyOffset, out udpServer, m_permissions);
|
Scene scene = SetupScene(regionInfo, proxyOffset, out clientServer, m_permissions);
|
||||||
|
|
||||||
m_log.Info("[MODULES]: Loading Region's modules");
|
m_log.Info("[MODULES]: Loading Region's modules");
|
||||||
|
|
||||||
|
@ -549,9 +542,9 @@ namespace OpenSim
|
||||||
|
|
||||||
m_sceneManager.Add(scene);
|
m_sceneManager.Add(scene);
|
||||||
|
|
||||||
m_clientServers.Add(udpServer);
|
m_clientServers.Add(clientServer);
|
||||||
m_regionData.Add(regionInfo);
|
m_regionData.Add(regionInfo);
|
||||||
udpServer.Start();
|
clientServer.Start();
|
||||||
|
|
||||||
if (do_post_init)
|
if (do_post_init)
|
||||||
{
|
{
|
||||||
|
@ -561,7 +554,7 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return udpServer;
|
return clientServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override StorageManager CreateStorageManager(string connectionstring)
|
protected override StorageManager CreateStorageManager(string connectionstring)
|
||||||
|
@ -583,24 +576,23 @@ namespace OpenSim
|
||||||
public void handleRestartRegion(RegionInfo whichRegion)
|
public void handleRestartRegion(RegionInfo whichRegion)
|
||||||
{
|
{
|
||||||
m_log.Error("[OPENSIM MAIN]: Got restart signal from SceneManager");
|
m_log.Error("[OPENSIM MAIN]: Got restart signal from SceneManager");
|
||||||
// Shutting down the UDP server
|
// Shutting down the client server
|
||||||
bool foundUDPServer = false;
|
bool foundClientServer = false;
|
||||||
int UDPServerElement = 0;
|
int clientServerElement = 0;
|
||||||
|
|
||||||
for (int i = 0; i < m_clientServers.Count; i++)
|
for (int i = 0; i < m_clientServers.Count; i++)
|
||||||
{
|
{
|
||||||
if (m_clientServers[i].HandlesRegion(new Location(whichRegion.RegionHandle)))
|
if (m_clientServers[i].HandlesRegion(new Location(whichRegion.RegionHandle)))
|
||||||
{
|
{
|
||||||
UDPServerElement = i;
|
clientServerElement = i;
|
||||||
foundUDPServer = true;
|
foundClientServer = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (foundUDPServer)
|
if (foundClientServer)
|
||||||
{
|
{
|
||||||
// m_udpServers[UDPServerElement].Server.End
|
m_clientServers[clientServerElement].Server.Close();
|
||||||
m_clientServers[UDPServerElement].Server.Close();
|
m_clientServers.RemoveAt(clientServerElement);
|
||||||
m_clientServers.RemoveAt(UDPServerElement);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Removing the region from the sim's database of regions..
|
//Removing the region from the sim's database of regions..
|
||||||
|
@ -618,9 +610,6 @@ namespace OpenSim
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateRegion(whichRegion, true);
|
CreateRegion(whichRegion, true);
|
||||||
//UDPServer restartingRegion = CreateRegion(whichRegion);
|
|
||||||
//restartingRegion.ServerListener();
|
|
||||||
//m_sceneManager.SendSimOnlineNotification(restartingRegion.RegionHandle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# region Setup methods
|
# region Setup methods
|
||||||
|
|
|
@ -38,7 +38,6 @@ using Nini.Config;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Console;
|
using OpenSim.Framework.Console;
|
||||||
using OpenSim.Framework.Statistics;
|
using OpenSim.Framework.Statistics;
|
||||||
using OpenSim.Region.ClientStack.LindenUDP;
|
|
||||||
using OpenSim.Region.Environment.Interfaces;
|
using OpenSim.Region.Environment.Interfaces;
|
||||||
using OpenSim.Region.Environment.Scenes;
|
using OpenSim.Region.Environment.Scenes;
|
||||||
using Timer=System.Timers.Timer;
|
using Timer=System.Timers.Timer;
|
||||||
|
|
|
@ -4915,7 +4915,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
//MainLog.Instance.Debug("UDPSERVER", e.ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_needAck.Add(key, packet);
|
m_needAck.Add(key, packet);
|
||||||
|
|
|
@ -107,12 +107,12 @@ namespace OpenSim.Region.ClientStack
|
||||||
return physicsPluginManager.GetPhysicsScene(engine, meshEngine);
|
return physicsPluginManager.GetPhysicsScene(engine, meshEngine);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer udpServer, bool m_permissions)
|
protected Scene SetupScene(RegionInfo regionInfo, out IClientNetworkServer clientServer, bool m_permissions)
|
||||||
{
|
{
|
||||||
return SetupScene(regionInfo, 0, out udpServer, m_permissions);
|
return SetupScene(regionInfo, 0, out clientServer, m_permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Scene SetupScene(RegionInfo regionInfo, int proxyOffset, out IClientNetworkServer udpServer, bool m_permissions)
|
protected Scene SetupScene(RegionInfo regionInfo, int proxyOffset, out IClientNetworkServer clientServer, bool m_permissions)
|
||||||
{
|
{
|
||||||
AgentCircuitManager circuitManager = new AgentCircuitManager();
|
AgentCircuitManager circuitManager = new AgentCircuitManager();
|
||||||
IPAddress listenIP = regionInfo.InternalEndPoint.Address;
|
IPAddress listenIP = regionInfo.InternalEndPoint.Address;
|
||||||
|
@ -120,12 +120,12 @@ namespace OpenSim.Region.ClientStack
|
||||||
// listenIP = IPAddress.Parse("0.0.0.0");
|
// listenIP = IPAddress.Parse("0.0.0.0");
|
||||||
|
|
||||||
uint port = (uint) regionInfo.InternalEndPoint.Port;
|
uint port = (uint) regionInfo.InternalEndPoint.Port;
|
||||||
udpServer = new LLUDPServer(listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, m_assetCache, circuitManager);
|
clientServer = new LLUDPServer(listenIP, ref port, proxyOffset, regionInfo.m_allow_alternate_ports, m_assetCache, circuitManager);
|
||||||
regionInfo.InternalEndPoint.Port = (int)port;
|
regionInfo.InternalEndPoint.Port = (int)port;
|
||||||
|
|
||||||
Scene scene = CreateScene(regionInfo, m_storageManager, circuitManager);
|
Scene scene = CreateScene(regionInfo, m_storageManager, circuitManager);
|
||||||
|
|
||||||
udpServer.AddScene(scene);
|
clientServer.AddScene(scene);
|
||||||
|
|
||||||
scene.LoadWorldMap();
|
scene.LoadWorldMap();
|
||||||
|
|
||||||
|
|
|
@ -1594,8 +1594,6 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
client.OnMoveInventoryItem += MoveInventoryItem;
|
client.OnMoveInventoryItem += MoveInventoryItem;
|
||||||
client.OnRemoveInventoryItem += RemoveInventoryItem;
|
client.OnRemoveInventoryItem += RemoveInventoryItem;
|
||||||
client.OnRemoveInventoryFolder += RemoveInventoryFolder;
|
client.OnRemoveInventoryFolder += RemoveInventoryFolder;
|
||||||
// client.OnAssetUploadRequest += CommsManager.TransactionsManager.HandleUDPUploadRequest;
|
|
||||||
// client.OnXferReceive += CommsManager.TransactionsManager.HandleXfer;
|
|
||||||
client.OnRezScript += RezScript;
|
client.OnRezScript += RezScript;
|
||||||
|
|
||||||
client.OnRequestTaskInventory += RequestTaskInventory;
|
client.OnRequestTaskInventory += RequestTaskInventory;
|
||||||
|
|
|
@ -224,7 +224,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This works out to be the ClientView object associated with this avatar, or it's UDP connection manager
|
/// This works out to be the ClientView object associated with this avatar, or it's client connection manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private IClientAPI m_controllingClient;
|
private IClientAPI m_controllingClient;
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,6 @@ using Mono.Addins;
|
||||||
using Nwc.XmlRpc;
|
using Nwc.XmlRpc;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Framework.Servers;
|
using OpenSim.Framework.Servers;
|
||||||
//using OpenSim.Region.ClientStack.LindenUDP;
|
|
||||||
using OpenSim.Region.ClientStack;
|
using OpenSim.Region.ClientStack;
|
||||||
using OpenSim.Region.ClientStack.LindenUDP;
|
using OpenSim.Region.ClientStack.LindenUDP;
|
||||||
using OpenSim.Region.Environment.Scenes;
|
using OpenSim.Region.Environment.Scenes;
|
||||||
|
@ -88,7 +87,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
|
||||||
AsynchronousSocketListener.PacketHandler = new AsynchronousSocketListener.PacketRecieveHandler(SynchronizePacketRecieve);
|
AsynchronousSocketListener.PacketHandler = new AsynchronousSocketListener.PacketRecieveHandler(SynchronizePacketRecieve);
|
||||||
|
|
||||||
sceneManager = openSim.SceneManager;
|
sceneManager = openSim.SceneManager;
|
||||||
m_clientServers = openSim.UdpServers;
|
m_clientServers = openSim.ClientServers;
|
||||||
regionData = openSim.RegionData;
|
regionData = openSim.RegionData;
|
||||||
simMain = openSim;
|
simMain = openSim;
|
||||||
commandServer = openSim.HttpServer;
|
commandServer = openSim.HttpServer;
|
||||||
|
@ -390,7 +389,7 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IClientNetworkServer SearchUDPServerFromPortNum(int portnum)
|
private IClientNetworkServer SearchClientServerFromPortNum(int portnum)
|
||||||
{
|
{
|
||||||
return m_clientServers.Find(delegate(IClientNetworkServer server) { return (portnum + proxyOffset == ((IPEndPoint)server.Server.LocalEndPoint).Port); });
|
return m_clientServers.Find(delegate(IClientNetworkServer server) { return (portnum + proxyOffset == ((IPEndPoint)server.Server.LocalEndPoint).Port); });
|
||||||
}
|
}
|
||||||
|
@ -522,12 +521,11 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
|
||||||
Scene scene = null;
|
Scene scene = null;
|
||||||
string[] files = null;
|
string[] files = null;
|
||||||
IClientAPI controller = null;
|
IClientAPI controller = null;
|
||||||
IClientNetworkServer udpserv = null;
|
IClientNetworkServer clientserv = null;
|
||||||
|
|
||||||
if (sceneManager.TryGetScene(dst_region.RegionID, out scene))
|
if (sceneManager.TryGetScene(dst_region.RegionID, out scene))
|
||||||
{
|
{
|
||||||
// search udpserver
|
clientserv = SearchClientServerFromPortNum(scene.RegionInfo.InternalEndPoint.Port);
|
||||||
udpserv = SearchUDPServerFromPortNum(scene.RegionInfo.InternalEndPoint.Port);
|
|
||||||
|
|
||||||
// restore the scene presence
|
// restore the scene presence
|
||||||
for (int i = 0;; i++)
|
for (int i = 0;; i++)
|
||||||
|
@ -565,9 +563,9 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
|
||||||
|
|
||||||
// BUG: Will only work with LLUDPServer.
|
// BUG: Will only work with LLUDPServer.
|
||||||
// TODO: This needs to be abstracted and converted into IClientNetworkServer
|
// TODO: This needs to be abstracted and converted into IClientNetworkServer
|
||||||
if (udpserv is LLUDPServer)
|
if (clientserv is LLUDPServer)
|
||||||
{
|
{
|
||||||
((LLUDPServer) udpserv).RestoreClient(agentdata, data.userEP, data.proxyEP);
|
((LLUDPServer) clientserv).RestoreClient(agentdata, data.userEP, data.proxyEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
// waiting for the scene-presense restored
|
// waiting for the scene-presense restored
|
||||||
|
@ -627,12 +625,12 @@ namespace OpenSim.ApplicationPlugins.LoadBalancer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shutting down the UDP server
|
// Shutting down the UDP server
|
||||||
IClientNetworkServer udpsvr = SearchUDPServerFromPortNum(port);
|
IClientNetworkServer clientsvr = SearchClientServerFromPortNum(port);
|
||||||
|
|
||||||
if (udpsvr != null)
|
if (clientsvr != null)
|
||||||
{
|
{
|
||||||
udpsvr.Server.Close();
|
clientsvr.Server.Close();
|
||||||
m_clientServers.Remove(udpsvr);
|
m_clientServers.Remove(clientsvr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,7 @@ namespace OpenSim.ApplicationPlugins.RegionProxy
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
m_log.InfoFormat("[PROXY] Opening UDP socket on {0}", sd.clientEP);
|
m_log.InfoFormat("[PROXY] Opening special UDP socket on {0}", sd.clientEP);
|
||||||
sd.serverIP = new IPEndPoint(IPAddress.Parse("0.0.0.0"), ((IPEndPoint) sd.clientEP).Port);
|
sd.serverIP = new IPEndPoint(IPAddress.Parse("0.0.0.0"), ((IPEndPoint) sd.clientEP).Port);
|
||||||
sd.server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
sd.server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
|
||||||
sd.server.Bind(sd.serverIP);
|
sd.server.Bind(sd.serverIP);
|
||||||
|
|
Loading…
Reference in New Issue