Skip to content
This repository has been archived by the owner on Jul 21, 2022. It is now read-only.

Commit

Permalink
Name standardization.
Browse files Browse the repository at this point in the history
  • Loading branch information
vegardlarsen committed Jan 18, 2014
1 parent a242071 commit e2c31ec
Show file tree
Hide file tree
Showing 6 changed files with 128 additions and 128 deletions.
2 changes: 1 addition & 1 deletion Pusher.Connections.Net/Pusher.Connections.Net.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="WebSocketConnection.cs" />
<Compile Include="WebsocketConnectionFactory.cs" />
<Compile Include="WebSocketConnectionFactory.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Pusher\Pusher.csproj">
Expand Down
2 changes: 1 addition & 1 deletion Pusher.Connections.Net/WebsocketConnectionFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Pusher.Connections.Net
{
public class WebsocketConnectionFactory : IConnectionFactory
public class WebSocketConnectionFactory : IConnectionFactory
{
public IConnection Create(Uri endpoint)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,8 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="WebSocket.cs" />
<Compile Include="WebsocketConnectionFactory.cs" />
<Compile Include="WebSocketConnection.cs" />
<Compile Include="WebSocketConnectionFactory.cs" />
</ItemGroup>
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &lt; '11.0' ">
<VisualStudioVersion>11.0</VisualStudioVersion>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,122 +1,122 @@
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Pusher.Events;
using Windows.Networking.Sockets;
using Windows.Storage.Streams;

namespace Pusher.Connections.WindowsStore
{
public class WebSocket : IConnection, IDisposable
{
private MessageWebSocket _socket;
private DataWriter _messageWriter;
private readonly Uri _endpoint;
private ConnectionState _connectionState;

public WebSocket(Uri endpoint)
{
_endpoint = endpoint;
SetupSocket();
}

private void SetupSocket()
{
_socket = new MessageWebSocket();
_socket.Control.MessageType = SocketMessageType.Utf8;
_socket.Closed += OnSocketClosed;
_socket.MessageReceived += OnMessageReceived;
}

private async void OnMessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args)
{
if (OnData == null) return;

var exceptionOccured = false;
try
{
var reader = args.GetDataReader();
var text = reader.ReadString(reader.UnconsumedBufferLength);
OnData(sender, new DataReceivedEventArgs { TextData = text });
}
catch (Exception)
{
exceptionOccured = true;
}
// cannot await in catch
if (exceptionOccured) await Reconnect();
}

private async Task Reconnect()
{
if (_connectionState == ConnectionState.Connecting || _connectionState == ConnectionState.Connected) return;

SetupSocket();
await Open();
}

private async void OnSocketClosed(IWebSocket sender, WebSocketClosedEventArgs args)
{
_messageWriter = null;
if (_connectionState != ConnectionState.Disconnecting)
{
await Reconnect();
}
_connectionState = ConnectionState.Disconnected;
if (OnClose != null) OnClose(sender, new EventArgs());
}

#region Implementation of IConnection

public void Close()
{
_connectionState = ConnectionState.Disconnecting;
_socket.Close(1000, "Close requested");
_connectionState = ConnectionState.Disconnected;
}

public async Task Open()
{
if (_connectionState == ConnectionState.Connected)
{
Close();
SetupSocket();
}
_connectionState = ConnectionState.Connecting;
await _socket.ConnectAsync(_endpoint);
_messageWriter = new DataWriter(_socket.OutputStream);
_connectionState = ConnectionState.Connected;
if (OnOpen != null)
{
OnOpen(this, new EventArgs());
}
}

public async Task SendMessage(string data)
{
if (_messageWriter == null)
{
await Open();
}
Debug.Assert(_messageWriter != null);

_messageWriter.WriteString(data);
await _messageWriter.StoreAsync();
}

public event EventHandler<EventArgs> OnClose;
public event EventHandler<EventArgs> OnOpen;
public event EventHandler<DataReceivedEventArgs> OnData;

#endregion

#region Implementation of IDisposable

public void Dispose()
{
_socket.Dispose();
}

#endregion
}
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Pusher.Events;
using Windows.Networking.Sockets;
using Windows.Storage.Streams;

namespace Pusher.Connections.WindowsStore
{
public class WebSocketConnection : IConnection, IDisposable
{
private MessageWebSocket _socket;
private DataWriter _messageWriter;
private readonly Uri _endpoint;
private ConnectionState _connectionState;

public WebSocketConnection(Uri endpoint)
{
_endpoint = endpoint;
SetupSocket();
}

private void SetupSocket()
{
_socket = new MessageWebSocket();
_socket.Control.MessageType = SocketMessageType.Utf8;
_socket.Closed += OnSocketClosed;
_socket.MessageReceived += OnMessageReceived;
}

private async void OnMessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args)
{
if (OnData == null) return;

var exceptionOccured = false;
try
{
var reader = args.GetDataReader();
var text = reader.ReadString(reader.UnconsumedBufferLength);
OnData(sender, new DataReceivedEventArgs { TextData = text });
}
catch (Exception)
{
exceptionOccured = true;
}
// cannot await in catch
if (exceptionOccured) await Reconnect();
}

private async Task Reconnect()
{
if (_connectionState == ConnectionState.Connecting || _connectionState == ConnectionState.Connected) return;

SetupSocket();
await Open();
}

private async void OnSocketClosed(IWebSocket sender, WebSocketClosedEventArgs args)
{
_messageWriter = null;
if (_connectionState != ConnectionState.Disconnecting)
{
await Reconnect();
}
_connectionState = ConnectionState.Disconnected;
if (OnClose != null) OnClose(sender, new EventArgs());
}

#region Implementation of IConnection

public void Close()
{
_connectionState = ConnectionState.Disconnecting;
_socket.Close(1000, "Close requested");
_connectionState = ConnectionState.Disconnected;
}

public async Task Open()
{
if (_connectionState == ConnectionState.Connected)
{
Close();
SetupSocket();
}
_connectionState = ConnectionState.Connecting;
await _socket.ConnectAsync(_endpoint);
_messageWriter = new DataWriter(_socket.OutputStream);
_connectionState = ConnectionState.Connected;
if (OnOpen != null)
{
OnOpen(this, new EventArgs());
}
}

public async Task SendMessage(string data)
{
if (_messageWriter == null)
{
await Open();
}
Debug.Assert(_messageWriter != null);

_messageWriter.WriteString(data);
await _messageWriter.StoreAsync();
}

public event EventHandler<EventArgs> OnClose;
public event EventHandler<EventArgs> OnOpen;
public event EventHandler<DataReceivedEventArgs> OnData;

#endregion

#region Implementation of IDisposable

public void Dispose()
{
_socket.Dispose();
}

#endregion
}
}
4 changes: 2 additions & 2 deletions Pusher.Connections.WindowsStore/WebsocketConnectionFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

namespace Pusher.Connections.WindowsStore
{
public class WebsocketConnectionFactory : IConnectionFactory
public class WebSocketConnectionFactory : IConnectionFactory
{
public IConnection Create(Uri endpoint)
{
return new WebSocket(endpoint);
return new WebSocketConnection(endpoint);
}
}
}
2 changes: 1 addition & 1 deletion Pusher.Samples.WindowsStore/ViewModel/MainViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ private async void ConnectAsync()
{"channel", Channel}
});
}
_pusher = new Pusher(new WebsocketConnectionFactory(), AppKey, options);
_pusher = new Pusher(new WebSocketConnectionFactory(), AppKey, options);
_pusher.Logger = _logger;

_logger.Debug("Connecting...");
Expand Down

0 comments on commit e2c31ec

Please sign in to comment.