From 8a931a4e914a00cbf0e853b83e74e56ace08419e Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sun, 27 Dec 2009 16:07:05 +1100 Subject: * Implements some basic Sirikata protocol work (initial handshakes). --- OpenSim/Client/Sirikata/SirikataModule.cs | 37 ++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) (limited to 'OpenSim/Client/Sirikata/SirikataModule.cs') diff --git a/OpenSim/Client/Sirikata/SirikataModule.cs b/OpenSim/Client/Sirikata/SirikataModule.cs index d2d7ff8..cbb6c23 100644 --- a/OpenSim/Client/Sirikata/SirikataModule.cs +++ b/OpenSim/Client/Sirikata/SirikataModule.cs @@ -60,8 +60,11 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; using Nini.Config; using OpenMetaverse; +using OpenSim.Client.Sirikata.ClientStack; using OpenSim.Framework; using OpenSim.Framework.Servers; using OpenSim.Framework.Servers.HttpServer; @@ -72,18 +75,50 @@ namespace OpenSim.Client.Sirikata { class SirikataModule : IRegionModule { + private bool m_enabled = false; + + private TcpListener m_listener; + private bool m_running = true; + + private List m_scenes = new List(); + private Dictionary m_clients = new Dictionary(); + #region Implementation of IRegionModule public void Initialise(Scene scene, IConfigSource source) { - + lock (m_scenes) + m_scenes.Add(scene); } public void PostInitialise() { + if(!m_enabled) + return; + + m_listener = new TcpListener(IPAddress.Any, 5943); } + private void ListenLoop() + { + while(m_running) + { + m_listener.BeginAcceptTcpClient(AcceptSocket, m_listener); + } + } + + private void AcceptSocket(IAsyncResult ar) + { + TcpListener listener = (TcpListener) ar.AsyncState; + TcpClient client = listener.EndAcceptTcpClient(ar); + + SirikataClientView clientView = new SirikataClientView(client); + + lock (m_clients) + m_clients.Add(clientView.SessionId, clientView); + } + public void Close() { -- cgit v1.1