Skip to content

Commit

Permalink
No commit message
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanovnikolay committed Jun 28, 2010
1 parent 4cc6cef commit 1be5a81
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 0 deletions.
55 changes: 55 additions & 0 deletions Pop3/trunk/Ntlx.Server/Dispatcher/Dispatcher.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ntlx.Server.Net;
using Ntlx.Server.Sessions;
using Ntlx.Server.Formatters;
using Ntlx.Server.Collections.Generic;

namespace Ntlx.Server.Dispatcher
{
public class Dispatcher
{
private Gateway gateway;

private SessionManager sessionManager = new SessionManager();

private IDictionary<string, IFormatter> formatters = new ThreadSafeDictionary<string, IFormatter>();


public Dispatcher(Gateway gateway)
{
this.gateway = gateway;
gateway.OpenConnection += OpenConnection;
gateway.CloseConnection += CloseConnection;
}


private void OpenConnection(object sender, ConnectionOpenEventArgs e)
{
sessionManager.AddSession(new Session(e.Connection.Id));
e.Connection.Received += ReceivedData;
e.Formatter.DeserializedMessage += DeserializedMessage;
formatters[e.Connection.Id] = e.Formatter;
}

private void CloseConnection(object sender, ConnectionCloseEventArgs e)
{
e.Connection.Received -= ReceivedData;
formatters[e.Connection.Id].DeserializedMessage -= DeserializedMessage;
formatters.Remove(e.Connection.Id);
sessionManager.RemoveSession(e.Connection.Id);
}

private void ReceivedData(object sender, ConnectionBufferEventArgs e)
{
formatters[e.Connection.Id].WriteMessage(e.Buffer, e.Offset, e.Count);
}

private void DeserializedMessage(object sender, EventArgs e)
{
throw new NotImplementedException();
}
}
}
16 changes: 16 additions & 0 deletions Pop3/trunk/Ntlx.Server/Formatters/IFormatter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ntlx.Server.Formatters
{
public interface IFormatter
{
void WriteMessage(byte[] buffer, int offset, int count);

event EventHandler DeserializedMessage;

byte[] SerializeMessage(object obj);
}
}
21 changes: 21 additions & 0 deletions Pop3/trunk/Ntlx.Server/Sessions/Session.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ntlx.Server.Sessions
{
public class Session
{
public string Id
{
get;
private set;
}

public Session(string id)
{
Id = id;
}
}
}
24 changes: 24 additions & 0 deletions Pop3/trunk/Ntlx.Server/Sessions/SessionManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ntlx.Server.Collections.Generic;

namespace Ntlx.Server.Sessions
{
public class SessionManager
{
private IDictionary<string, Session> sessions = new ThreadSafeDictionary<string, Session>();


public void AddSession(Session session)
{

}

public void RemoveSession(string id)
{

}
}
}
6 changes: 6 additions & 0 deletions Pop3/trunk/Pop3Server/Pop3Server.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Ntlx.Server\Ntlx.Server.csproj">
<Project>{670996D1-E75A-403F-A2BC-CCF0B3EEF1BC}</Project>
<Name>Ntlx.Server</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
Expand Down
2 changes: 2 additions & 0 deletions Pop3/trunk/Pop3Server/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ntlx.Server.Dispatcher;

namespace Pop3Server
{
class Program
{
static void Main(string[] args)
{

}
}
}

0 comments on commit 1be5a81

Please sign in to comment.