mirror of
https://github.com/opensim/opensim.git
synced 2026-05-20 23:35:47 +08:00
* cleaned away suo and user files. * added handy string chat variety to the API * Moved LockPhysicsEngine on World to SyncRoot on IWorld * Introduced NextLocalId instead of World fuggliness. * Transformed GetRegionInfo to Property on IWorld for great justice * Extracted default wearables (good to have) * Deleted unused BaseServer * Used IWorld instead of World wherever possible * The client constructor's not getting unused port any longer. * Extracted ClientView factoring so PacketServer can be tweaked. * Added SendLayerData to World * Made WorldBase abstract and cleaned it up a bit * added OpenGrid.Framework.Communications.dll.build and OpenSim.World.dll.build to svn * Added code for two examples (but not in prebuild yet)
97 lines
3.2 KiB
C#
97 lines
3.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using libsecondlife.Packets;
|
|
using OpenSim.Framework.Interfaces;
|
|
using OpenSim.Framework;
|
|
using System.Net;
|
|
using System.Net.Sockets;
|
|
using OpenSim.Assets;
|
|
|
|
namespace OpenSim
|
|
{
|
|
public class PacketServer
|
|
{
|
|
private OpenSimNetworkHandler _networkHandler;
|
|
private IWorld _localWorld;
|
|
public Dictionary<uint, ClientView> ClientThreads = new Dictionary<uint, ClientView>();
|
|
public Dictionary<uint, IClientAPI> ClientAPIs = new Dictionary<uint, IClientAPI>();
|
|
protected uint serverPort;
|
|
|
|
public PacketServer(OpenSimNetworkHandler networkHandler, uint port)
|
|
{
|
|
_networkHandler = networkHandler;
|
|
this.serverPort = port;
|
|
_networkHandler.RegisterPacketServer(this);
|
|
}
|
|
|
|
public IWorld LocalWorld
|
|
{
|
|
set
|
|
{
|
|
this._localWorld = value;
|
|
}
|
|
}
|
|
|
|
public virtual void ClientInPacket(uint circuitCode, Packet packet)
|
|
{
|
|
if (this.ClientThreads.ContainsKey(circuitCode))
|
|
{
|
|
ClientThreads[circuitCode].InPacket(packet);
|
|
}
|
|
}
|
|
|
|
public virtual bool AddNewCircuitCodeClient(uint circuitCode)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public virtual void SendPacketToAllClients(Packet packet)
|
|
{
|
|
|
|
}
|
|
|
|
public virtual void SendPacketToAllExcept(Packet packet, ClientView simClient)
|
|
{
|
|
|
|
}
|
|
|
|
public virtual void AddClientPacketHandler(PacketType packetType, PacketMethod handler)
|
|
{
|
|
|
|
}
|
|
|
|
public virtual void RegisterClientPacketHandlers()
|
|
{
|
|
|
|
}
|
|
|
|
protected virtual ClientView CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, Dictionary<uint, ClientView> clientThreads, IWorld world, AssetCache assetCache, PacketServer packServer, InventoryCache inventoryCache, AuthenticateSessionsBase authenSessions)
|
|
{
|
|
return new ClientView(remoteEP, initialcirpack, clientThreads, world, assetCache, packServer, inventoryCache, authenSessions );
|
|
}
|
|
|
|
public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache, InventoryCache inventoryCache, AuthenticateSessionsBase authenticateSessionsClass)
|
|
{
|
|
ClientView newuser =
|
|
CreateNewClient(epSender, useCircuit, ClientThreads, _localWorld, assetCache, this, inventoryCache,
|
|
authenticateSessionsClass);
|
|
|
|
this.ClientThreads.Add(useCircuit.CircuitCode.Code, newuser);
|
|
this.ClientAPIs.Add(useCircuit.CircuitCode.Code, (IClientAPI)newuser);
|
|
|
|
return true;
|
|
}
|
|
|
|
public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
|
|
{
|
|
this._networkHandler.SendPacketTo(buffer, size, flags, circuitcode);
|
|
}
|
|
|
|
public virtual void RemoveClientCircuit(uint circuitcode)
|
|
{
|
|
this._networkHandler.RemoveClientCircuit(circuitcode);
|
|
}
|
|
}
|
|
}
|