diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..c3b84ea8
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,21 @@
+; EditorConfig to support per-solution formatting.
+; Use the EditorConfig VS add-in to make this work.
+; http://editorconfig.org/
+
+; This is the default for the codeline.
+root = true
+
+[*]
+end_of_line = CRLF
+
+[*.{cs,txt,md}]
+indent_style = tab
+indent_size = 4
+
+[*.{sln,proj,props,targets,xml,config,nuspec}]
+indent_style = tab
+indent_size = 4
+
+[*.{csproj,resx}]
+indent_style = space
+indent_size = 2
\ No newline at end of file
diff --git a/NuGet.Restore.targets b/NuGet.Restore.targets
deleted file mode 100644
index c51e068b..00000000
--- a/NuGet.Restore.targets
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
- $(MSBuildThisFileDirectory).nuget
- $(NuGetPath)\NuGet.exe
- $(LocalAppData)\NuGet\NuGet.exe
-
-
-
- nuget
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll
- $(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll
-
- $(MSBuildToolsPath)\Microsoft.Build.Tasks.v12.0.dll
-
- $(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll
-
-
-
- $(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build.cmd b/build.cmd
index 36e4a202..99a7efec 100644
--- a/build.cmd
+++ b/build.cmd
@@ -1,25 +1,41 @@
-@echo off
-rem Only need to run this the first time after clone. Subsequent builds can be just "msbuild".
-rem Alternatively, this batch file can be invoked passing msbuild parameters, like: build.cmd /v:detailed /t:Rebuild
+:: Optional batch file to quickly build with some defaults.
+:: Alternatively, this batch file can be invoked passing msbuild parameters, like: build.cmd /v:detailed /t:Rebuild
-cd %~dp0
+@ECHO OFF
+SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+PUSHD "%~dp0" >NUL
-SETLOCAL
SET CACHED_NUGET=%LocalAppData%\NuGet\NuGet.exe
+:: Determine if MSBuild can be located. Allows for a better error message below.
+where msbuild > %TEMP%\msbuild.txt
+set /p msb=<%TEMP%\msbuild.txt
+
+IF "%msb%"=="" (
+ echo Please run %~n0 from a Visual Studio Developer Command Prompt.
+ exit /b -1
+)
+
IF EXIST %CACHED_NUGET% goto copynuget
echo Downloading latest version of NuGet.exe...
IF NOT EXIST %LocalAppData%\NuGet md %LocalAppData%\NuGet
-@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://www.nuget.org/nuget.exe' -OutFile '%CACHED_NUGET%'"
+@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://dist.nuget.org/win-x86-commandline/latest/nuget.exe' -OutFile '%CACHED_NUGET%'"
:copynuget
-IF EXIST build\.nuget\nuget.exe goto restore
-md build\.nuget
-copy %CACHED_NUGET% build\.nuget\nuget.exe > nul
+IF EXIST .nuget\nuget.exe goto restore
+md .nuget
+copy %CACHED_NUGET% .nuget\nuget.exe > nul
+.nuget\nuget.exe update -self
:restore
+:: Build script packages have no version in the path, so we install them to .nuget\packages to avoid conflicts with
+:: solution/project packages.
IF NOT EXIST packages.config goto run
-build\.nuget\NuGet.exe install packages.config -OutputDirectory packages -ExcludeVersion
+.nuget\NuGet.exe install packages.config -OutputDirectory .nuget\packages -ExcludeVersion
:run
-msbuild build.proj /nologo /v:minimal %1 %2 %3 %4 %5 %6 %7 %8 %9
\ No newline at end of file
+"%msb%" build.proj /v:normal %1 %2 %3 %4 %5 %6 %7 %8 %9
+
+POPD >NUL
+ENDLOCAL
+ECHO ON
\ No newline at end of file
diff --git a/build.proj b/build.proj
index 1523f09c..afb765f1 100644
--- a/build.proj
+++ b/build.proj
@@ -22,51 +22,78 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-->
-
+
-
-
- Release
- false
+ Release
+ .nuget\
+ $(IntermediateOutputPath)packages
+ out
high
+ TrackFileAccess=false;WarningLevel=0;NoWarn=1591;RunCodeAnalysis=false;Configuration=$(Configuration)
-
-
-
- Configuration=$(Configuration);TrackFileAccess=$(TrackFileAccess)
-
-
-
- Configuration=$(Configuration);TrackFileAccess=$(TrackFileAccess)
-
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- GitVersion;
- GitInfoReport;
- NuGetVersion;
-
+ $(PackagesPath)\GitInfo\build\GitInfo.targets
+ true
-
-
+
+
+
+
+
+
+
+
+
+
+
+
$(GitSemVerMajor).$(GitSemVerMinor).$(GitSemVerPatch)$(GitSemVerDashLabel)
-
-
-
- $(Version)
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/packages.config b/packages.config
index 4c1f97fc..9a2bdf25 100644
--- a/packages.config
+++ b/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/src/Before.Hermes.sln.targets b/src/Before.Hermes.sln.targets
index edc960aa..ac1c2667 100644
--- a/src/Before.Hermes.sln.targets
+++ b/src/Before.Hermes.sln.targets
@@ -1,9 +1,4 @@
-
-
-
- $([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), NuGet.Restore.targets).TrimEnd("\").TrimEnd("/"))
-
-
-
+
+
\ No newline at end of file
diff --git a/src/Client.Android/Client.Android.csproj b/src/Client.Android/Client.Android.csproj
index 2bcc124a..03a10437 100644
--- a/src/Client.Android/Client.Android.csproj
+++ b/src/Client.Android/Client.Android.csproj
@@ -1,50 +1,17 @@
+
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}
{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
System.Net.Mqtt.Client
- System.Net.Mqtt.Android
- 512
+ System.Net.Mqtt
Resources\Resource.Designer.cs
Off
False
v5.1
-
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
-
-
-
@@ -70,20 +37,10 @@
-
-
-
-
-
-
-
-
-
-
@@ -99,19 +56,14 @@
Core
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/src/Client.Android/Resources/AboutResources.txt b/src/Client.Android/Resources/AboutResources.txt
deleted file mode 100644
index c2bca974..00000000
--- a/src/Client.Android/Resources/AboutResources.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Images, layout descriptions, binary blobs and string dictionaries can be included
-in your application as resource files. Various Android APIs are designed to
-operate on the resource IDs instead of dealing with images, strings or binary blobs
-directly.
-
-For example, a sample Android app that contains a user interface layout (main.axml),
-an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
-would keep its resources in the "Resources" directory of the application:
-
-Resources/
- drawable/
- icon.png
-
- layout/
- main.axml
-
- values/
- strings.xml
-
-In order to get the build system to recognize Android resources, set the build action to
-"AndroidResource". The native Android APIs do not operate directly with filenames, but
-instead operate on resource IDs. When you compile an Android application that uses resources,
-the build system will package the resources for distribution and generate a class called "R"
-(this is an Android convention) that contains the tokens for each one of the resources
-included. For example, for the above Resources layout, this is what the R class would expose:
-
-public class R {
- public class drawable {
- public const int icon = 0x123;
- }
-
- public class layout {
- public const int main = 0x456;
- }
-
- public class strings {
- public const int first_string = 0xabc;
- public const int second_string = 0xbcd;
- }
-}
-
-You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
-to reference the layout/main.axml file, or R.strings.first_string to reference the first
-string in the dictionary file values/strings.xml.
\ No newline at end of file
diff --git a/src/Client.Android/Resources/Resource.Designer.cs b/src/Client.Android/Resources/Resource.Designer.cs
index 1083bb82..e69de29b 100644
--- a/src/Client.Android/Resources/Resource.Designer.cs
+++ b/src/Client.Android/Resources/Resource.Designer.cs
@@ -1,60 +0,0 @@
-#pragma warning disable 1591
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-[assembly: global::Android.Runtime.ResourceDesignerAttribute("System.Net.Mqtt.Client.Resource", IsApplication=false)]
-
-namespace System.Net.Mqtt.Client
-{
-
-
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
- public partial class Resource
- {
-
- static Resource()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- public partial class Attribute
- {
-
- static Attribute()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Attribute()
- {
- }
- }
-
- public partial class String
- {
-
- // aapt resource value: 0x7f020001
- public static int ApplicationName = 2130837505;
-
- // aapt resource value: 0x7f020000
- public static int Hello = 2130837504;
-
- static String()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private String()
- {
- }
- }
- }
-}
-#pragma warning restore 1591
diff --git a/src/Client.Android/Resources/Values/Strings.xml b/src/Client.Android/Resources/Values/Strings.xml
deleted file mode 100644
index 8fd17630..00000000
--- a/src/Client.Android/Resources/Values/Strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Hello World, Click Me!
- $projectname$
-
diff --git a/src/Client.Android/TcpBinding.cs b/src/Client.Android/TcpBinding.cs
deleted file mode 100644
index 13a23872..00000000
--- a/src/Client.Android/TcpBinding.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-
-namespace System.Net.Mqtt.Client
-{
- public class TcpBinding : IProtocolBinding
- {
- public IChannelFactory GetChannelFactory (string hostAddress, ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- return new TcpChannelFactory (hostAddress, tracerManager, configuration);
- }
-
- public IChannelProvider GetChannelProvider (ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- return new TcpChannelProvider (tracerManager, configuration);
- }
- }
-}
diff --git a/src/Client.Android/TcpChannel.cs b/src/Client.Android/TcpChannel.cs
deleted file mode 100644
index 59aad32e..00000000
--- a/src/Client.Android/TcpChannel.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-using System.Reactive.Concurrency;
-using System.Reactive.Linq;
-using System.Reactive.Subjects;
-using System.Threading.Tasks;
-
-namespace System.Net.Mqtt.Client
-{
- internal class TcpChannel : IChannel
- {
- bool disposed;
-
- readonly ITracer tracer;
- readonly TcpClient client;
- readonly IPacketBuffer buffer;
- readonly ReplaySubject receiver;
- readonly ReplaySubject sender;
- readonly IDisposable streamSubscription;
-
- public TcpChannel (TcpClient client,
- IPacketBuffer buffer,
- ITracerManager tracerManager,
- ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.client = client;
- this.client.ReceiveBufferSize = configuration.BufferSize;
- this.client.SendBufferSize = configuration.BufferSize;
- this.buffer = buffer;
- receiver = new ReplaySubject (window: TimeSpan.FromSeconds (configuration.WaitingTimeoutSecs));
- sender = new ReplaySubject (window: TimeSpan.FromSeconds (configuration.WaitingTimeoutSecs));
- streamSubscription = SubscribeStream ();
- }
-
- public bool IsConnected
- {
- get
- {
- var connected = !disposed;
-
- try {
- connected = connected && client.Connected;
- } catch (Exception) {
- connected = false;
- }
-
- return connected;
- }
- }
-
- public IObservable Receiver { get { return receiver; } }
-
- public IObservable Sender { get { return sender; } }
-
- public async Task SendAsync (byte[] message)
- {
- if (disposed) {
- throw new ObjectDisposedException (GetType ().FullName);
- }
-
- if (!IsConnected) {
- throw new MqttException (Properties.Resources.TcpChannel_ClientIsNotConnected);
- }
-
- sender.OnNext (message);
-
- try {
- tracer.Verbose (Properties.Resources.TcpChannel_SendingPacket, message.Length);
-
- await client.GetStream ()
- .WriteAsync (message, 0, message.Length)
- .ConfigureAwait (continueOnCapturedContext: false);
- } catch (ObjectDisposedException disposedEx) {
- throw new MqttException (Properties.Resources.TcpChannel_SocketDisconnected, disposedEx);
- }
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (disposed) return;
-
- if (disposing) {
- tracer.Info (Properties.Resources.Tracer_Disposing, GetType ().FullName);
-
- streamSubscription.Dispose ();
- receiver.OnCompleted ();
-
- if (IsConnected) {
- try {
- client.Client.Shutdown (SocketShutdown.Both);
- client.Close ();
- } catch (SocketException socketEx) {
- tracer.Error (socketEx, Properties.Resources.TcpChannel_DisposeError, socketEx.ErrorCode);
- }
- }
-
- disposed = true;
- }
- }
-
- IDisposable SubscribeStream ()
- {
- return Observable.Defer (() => {
- var buffer = new byte[client.ReceiveBufferSize];
-
- return Observable.FromAsync (() => {
- return client.GetStream ().ReadAsync (buffer, 0, buffer.Length);
- })
- .Select (x => buffer.Take (x).ToArray ());
- })
- .Repeat ()
- .TakeWhile (bytes => bytes.Any ())
- .ObserveOn (NewThreadScheduler.Default)
- .Subscribe (bytes => {
- var packets = default(IEnumerable);
-
- if (buffer.TryGetPackets (bytes, out packets)) {
- foreach (var packet in packets) {
- tracer.Verbose (Properties.Resources.TcpChannel_ReceivedPacket, packet.Length);
-
- receiver.OnNext (packet);
- }
- }
- }, ex => {
- if (ex is ObjectDisposedException) {
- receiver.OnError (new MqttException (Properties.Resources.TcpChannel_SocketDisconnected, ex));
- } else {
- receiver.OnError (ex);
- }
- }, () => {
- tracer.Warn (Properties.Resources.TcpChannel_NetworkStreamCompleted);
- receiver.OnCompleted ();
- });
- }
- }
-}
diff --git a/src/Client.Android/TcpChannelFactory.cs b/src/Client.Android/TcpChannelFactory.cs
deleted file mode 100644
index a37d5e90..00000000
--- a/src/Client.Android/TcpChannelFactory.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-
-namespace System.Net.Mqtt.Client
-{
- internal class TcpChannelFactory : IChannelFactory
- {
- readonly ITracer tracer;
- readonly string hostAddress;
- readonly ITracerManager tracerManager;
- readonly ProtocolConfiguration configuration;
-
- public TcpChannelFactory (string hostAddress, ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.hostAddress = hostAddress;
- this.tracerManager = tracerManager;
- this.configuration = configuration;
- }
-
- /// ProtocolException
- public IChannel Create ()
- {
- var tcpClient = new TcpClient ();
-
- try {
- tcpClient.Connect (hostAddress, configuration.Port);
- } catch (SocketException socketEx) {
- var message = string.Format(Properties.Resources.TcpChannelFactory_TcpClient_Failed, hostAddress, configuration.Port);
-
- tracer.Error (socketEx, message);
-
- throw new MqttException (message, socketEx);
- }
-
- return new TcpChannel (tcpClient, new PacketBuffer (), tracerManager, configuration);
- }
- }
-}
diff --git a/src/Client.Android/TcpChannelProvider.cs b/src/Client.Android/TcpChannelProvider.cs
deleted file mode 100644
index 5c7879a9..00000000
--- a/src/Client.Android/TcpChannelProvider.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-using System.Reactive.Linq;
-using System.Threading.Tasks;
-
-namespace System.Net.Mqtt.Client
-{
- internal class TcpChannelProvider : IChannelProvider
- {
- readonly ITracer tracer;
- readonly ITracerManager tracerManager;
- readonly ProtocolConfiguration configuration;
- readonly Lazy listener;
- bool disposed;
-
- public TcpChannelProvider (ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.configuration = configuration;
- listener = new Lazy (() => {
- var tcpListener = new TcpListener(IPAddress.Any, this.configuration.Port);
-
- try {
- tcpListener.Start ();
- } catch (SocketException socketEx) {
- tracer.Error (socketEx, Properties.Resources.TcpChannelProvider_TcpListener_Failed);
-
- throw new MqttException (Properties.Resources.TcpChannelProvider_TcpListener_Failed, socketEx);
- }
-
- return tcpListener;
- });
- }
-
- /// ProtocolException
- public IObservable> GetChannels ()
- {
- if (disposed) {
- throw new ObjectDisposedException (GetType ().FullName);
- }
-
- return Observable
- .FromAsync (() => {
- return Task.Factory.FromAsync (listener.Value.BeginAcceptTcpClient,
- listener.Value.EndAcceptTcpClient, TaskCreationOptions.AttachedToParent);
- })
- .Repeat ()
- .Select (client => new TcpChannel (client, new PacketBuffer (), tracerManager, configuration));
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (disposed) return;
-
- if (disposing) {
- listener.Value.Stop ();
- disposed = true;
- }
- }
- }
-}
diff --git a/src/Client.Android/packages.config b/src/Client.Android/packages.config
index 80821f5e..807a21b5 100644
--- a/src/Client.Android/packages.config
+++ b/src/Client.Android/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Client.Library/Client.Library.csproj b/src/Client.Library/Client.Library.csproj
index 4943b496..14ea0515 100644
--- a/src/Client.Library/Client.Library.csproj
+++ b/src/Client.Library/Client.Library.csproj
@@ -1,55 +1,21 @@
+
- Debug
- AnyCPU
{A09B1D2D-2DC3-46BB-8E85-19C1D3FC54E8}
- Library
- Properties
System.Net.Mqtt.Client
- System.Net.Mqtt.Library
+ System.Net.Mqtt
v4.5
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
-
-
-
-
-
-
@@ -67,22 +33,16 @@
-
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/src/Client.Library/ClientFactory.cs b/src/Client.Library/ClientFactory.cs
deleted file mode 100644
index f4c56aae..00000000
--- a/src/Client.Library/ClientFactory.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Flows;
-using System.Net.Mqtt.Storage;
-
-namespace System.Net.Mqtt.Client
-{
- public class ClientFactory : IFactory
- {
- readonly ITracerManager tracerManager;
- readonly ITracer tracer;
- readonly string hostAddress;
- readonly IProtocolBinding binding;
-
- public ClientFactory (string hostAddress, IProtocolBinding binding)
- : this (hostAddress, binding, new DefaultTracerManager ())
- {
- }
-
- public ClientFactory (string hostAddress, IProtocolBinding binding, ITracerManager tracerManager)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.hostAddress = hostAddress;
- this.binding = binding;
- }
-
- /// ClientException
- public Client Create (ProtocolConfiguration configuration)
- {
- try {
- var topicEvaluator = new TopicEvaluator (configuration);
- var innerChannelFactory = binding.GetChannelFactory (hostAddress, tracerManager, configuration);
- var channelFactory = new PacketChannelFactory (innerChannelFactory, topicEvaluator, tracerManager, configuration);
- var packetIdProvider = new PacketIdProvider ();
- var repositoryProvider = new InMemoryRepositoryProvider ();
- var flowProvider = new ClientProtocolFlowProvider (topicEvaluator, repositoryProvider, tracerManager, configuration);
- var packetChannel = channelFactory.Create ();
-
- return new Client (packetChannel, flowProvider, repositoryProvider, packetIdProvider, tracerManager, configuration);
- } catch (Exception ex) {
- tracer.Error (ex, Properties.Resources.Client_InitializeError);
-
- throw new ClientException (Properties.Resources.Client_InitializeError, ex);
- }
- }
- }
-}
diff --git a/src/Client.Library/Hermes.snk b/src/Client.Library/Hermes.snk
deleted file mode 100644
index 640ba373..00000000
Binary files a/src/Client.Library/Hermes.snk and /dev/null differ
diff --git a/src/Client.Library/packages.config b/src/Client.Library/packages.config
index 3e137b0f..ae82a624 100644
--- a/src/Client.Library/packages.config
+++ b/src/Client.Library/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/src/Client.Shared/Client.Shared.projitems b/src/Client.Shared/Client.Shared.projitems
new file mode 100644
index 00000000..7d1c0c85
--- /dev/null
+++ b/src/Client.Shared/Client.Shared.projitems
@@ -0,0 +1,14 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ e314b453-080d-481c-8fb1-356f78da72fc
+
+
+ Client.Shared
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Client.Shared/Client.Shared.shproj b/src/Client.Shared/Client.Shared.shproj
new file mode 100644
index 00000000..b2b6fa30
--- /dev/null
+++ b/src/Client.Shared/Client.Shared.shproj
@@ -0,0 +1,13 @@
+
+
+
+ e314b453-080d-481c-8fb1-356f78da72fc
+ 14.0
+
+
+
+
+
+
+
+
diff --git a/src/Client.Android/ClientFactory.cs b/src/Client.Shared/ClientFactory.cs
similarity index 100%
rename from src/Client.Android/ClientFactory.cs
rename to src/Client.Shared/ClientFactory.cs
diff --git a/src/Client.iOS/Client.iOS.csproj b/src/Client.iOS/Client.iOS.csproj
index c0eb2dc3..06c3b982 100644
--- a/src/Client.iOS/Client.iOS.csproj
+++ b/src/Client.iOS/Client.iOS.csproj
@@ -1,45 +1,19 @@
+
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
{E1EE11FF-BA01-4919-8984-C61CCF8CAFAB}
{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
System.Net.Mqtt.Client
+ Library
+ System.Net.Mqtt
Resources
- System.Net.Mqtt.iOS
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- true
-
-
- Hermes.snk
-
-
+
@@ -47,11 +21,8 @@
+
-
-
-
-
@@ -70,15 +41,14 @@
Core
-
-
-
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
\ No newline at end of file
diff --git a/src/Client.iOS/ClientFactory.cs b/src/Client.iOS/ClientFactory.cs
deleted file mode 100644
index 84732c81..00000000
--- a/src/Client.iOS/ClientFactory.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Flows;
-using System.Net.Mqtt.Storage;
-
-namespace System.Net.Mqtt.Client
-{
- public class ClientFactory : IFactory
- {
- readonly ITracerManager tracerManager;
- readonly ITracer tracer;
- readonly string hostAddress;
- readonly IProtocolBinding binding;
-
- public ClientFactory (string hostAddress, IProtocolBinding binding)
- : this (hostAddress, binding, new DefaultTracerManager ())
- {
- }
-
- public ClientFactory (string hostAddress, IProtocolBinding binding, ITracerManager tracerManager)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.hostAddress = hostAddress;
- this.binding = binding;
- }
-
- ///// ClientException
- public Client Create (ProtocolConfiguration configuration)
- {
- try {
- var topicEvaluator = new TopicEvaluator (configuration);
- var innerChannelFactory = binding.GetChannelFactory (hostAddress, tracerManager, configuration);
- var channelFactory = new PacketChannelFactory (innerChannelFactory, topicEvaluator, tracerManager, configuration);
- var packetIdProvider = new PacketIdProvider ();
- var repositoryProvider = new InMemoryRepositoryProvider();
- var flowProvider = new ClientProtocolFlowProvider (topicEvaluator, repositoryProvider, tracerManager, configuration);
- var packetChannel = channelFactory.Create ();
-
- return new Client (packetChannel, flowProvider, repositoryProvider, packetIdProvider, tracerManager, configuration);
- } catch (Exception ex) {
- tracer.Error (ex, Properties.Resources.Client_InitializeError);
-
- throw new ClientException (Properties.Resources.Client_InitializeError, ex);
- }
- }
- }
-}
diff --git a/src/Client.iOS/packages.config b/src/Client.iOS/packages.config
index 56581059..fea636b4 100644
--- a/src/Client.iOS/packages.config
+++ b/src/Client.iOS/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/src/Client/Client.csproj b/src/Client/Client.csproj
index 2e6a0ac5..00e28b38 100644
--- a/src/Client/Client.csproj
+++ b/src/Client/Client.csproj
@@ -3,30 +3,17 @@
- AnyCPU
{D3EB8C4F-6CF4-4EB4-94E3-BCA31767AE53}
- Library
- Properties
System.Net.Mqtt.Client
System.Net.Mqtt.Portable
v4.5
- 512
{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Profile111
v4.5
-
- true
-
-
- Hermes.snk
-
-
- Properties\GlobalAssemblyInfo.cs
-
@@ -50,7 +37,6 @@
-
@@ -85,13 +71,12 @@
-
+
+
- This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
-
\ No newline at end of file
diff --git a/src/Client/Properties/AssemblyInfo.cs b/src/Client/Properties/AssemblyInfo.cs
index 3c19e0d2..232b9e7e 100644
--- a/src/Client/Properties/AssemblyInfo.cs
+++ b/src/Client/Properties/AssemblyInfo.cs
@@ -1,10 +1,11 @@
-using System.Reflection;
+#pragma warning disable 0436
+using System.Net.Mqtt;
+using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle ("System.Net.Mqtt")]
[assembly: AssemblyDescription ("Shared components for Mqtt clients.")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Library,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.iOS,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Android,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
-[assembly: InternalsVisibleTo ("Tests,PublicKey=0024000004800000940000000602000000240000525341310004000001000100b930098aa349ada91b5b5e04b74afb3b141768bf24cd9cce9625f5ae2ac75c448b0f7881c83d0730f35dfc73b5fccc99e817bdece3953909d9c76ea901aeb99b24771054d1145194e0911753642979ab525f5ca233a292c8ba563d9bbc0f8bfaa4b83bc3ec5865d9f73c17d1c30bc519757a9c9b3061f4d992d496515cabdbd3")]
\ No newline at end of file
+[assembly: InternalsVisibleTo ("System.Net.Mqtt, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo("Tests, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2,PublicKey=" + ThisAssembly.PublicKey)]
+#pragma warning restore 0436
\ No newline at end of file
diff --git a/src/Client/packages.config b/src/Client/packages.config
index b12bcd64..0c738e2d 100644
--- a/src/Client/packages.config
+++ b/src/Client/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Core.Android/Core.Android.csproj b/src/Core.Android/Core.Android.csproj
index 5aeb81ff..a8c388f1 100644
--- a/src/Core.Android/Core.Android.csproj
+++ b/src/Core.Android/Core.Android.csproj
@@ -1,17 +1,12 @@
+
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
{D0826E54-0983-48EC-B5D0-F19CFD66FADE}
{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
System.Net.Mqtt
- System.Net.Mqtt.Core.Android
- 512
+ System.Net.Mqtt.Core
Resources\Resource.Designer.cs
Off
False
@@ -19,32 +14,6 @@
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
-
-
-
-
@@ -70,19 +39,10 @@
-
-
-
-
-
-
-
-
-
@@ -90,19 +50,14 @@
Core
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/src/Core.Android/Hermes.snk b/src/Core.Android/Hermes.snk
deleted file mode 100644
index 640ba373..00000000
Binary files a/src/Core.Android/Hermes.snk and /dev/null differ
diff --git a/src/Core.Android/Resources/AboutResources.txt b/src/Core.Android/Resources/AboutResources.txt
deleted file mode 100644
index c2bca974..00000000
--- a/src/Core.Android/Resources/AboutResources.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Images, layout descriptions, binary blobs and string dictionaries can be included
-in your application as resource files. Various Android APIs are designed to
-operate on the resource IDs instead of dealing with images, strings or binary blobs
-directly.
-
-For example, a sample Android app that contains a user interface layout (main.axml),
-an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
-would keep its resources in the "Resources" directory of the application:
-
-Resources/
- drawable/
- icon.png
-
- layout/
- main.axml
-
- values/
- strings.xml
-
-In order to get the build system to recognize Android resources, set the build action to
-"AndroidResource". The native Android APIs do not operate directly with filenames, but
-instead operate on resource IDs. When you compile an Android application that uses resources,
-the build system will package the resources for distribution and generate a class called "R"
-(this is an Android convention) that contains the tokens for each one of the resources
-included. For example, for the above Resources layout, this is what the R class would expose:
-
-public class R {
- public class drawable {
- public const int icon = 0x123;
- }
-
- public class layout {
- public const int main = 0x456;
- }
-
- public class strings {
- public const int first_string = 0xabc;
- public const int second_string = 0xbcd;
- }
-}
-
-You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
-to reference the layout/main.axml file, or R.strings.first_string to reference the first
-string in the dictionary file values/strings.xml.
\ No newline at end of file
diff --git a/src/Core.Android/Resources/Resource.Designer.cs b/src/Core.Android/Resources/Resource.Designer.cs
deleted file mode 100644
index 028c07b8..00000000
--- a/src/Core.Android/Resources/Resource.Designer.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-#pragma warning disable 1591
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-[assembly: global::Android.Runtime.ResourceDesignerAttribute("System.Net.Mqtt.Resource", IsApplication=false)]
-
-namespace System.Net.Mqtt
-{
-
-
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
- public partial class Resource
- {
-
- static Resource()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- public partial class Attribute
- {
-
- static Attribute()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Attribute()
- {
- }
- }
-
- public partial class String
- {
-
- // aapt resource value: 0x7f020001
- public static int ApplicationName = 2130837505;
-
- // aapt resource value: 0x7f020000
- public static int Hello = 2130837504;
-
- static String()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private String()
- {
- }
- }
- }
-}
-#pragma warning restore 1591
diff --git a/src/Core.Android/Resources/Values/Strings.xml b/src/Core.Android/Resources/Values/Strings.xml
deleted file mode 100644
index 8fd17630..00000000
--- a/src/Core.Android/Resources/Values/Strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Hello World, Click Me!
- $projectname$
-
diff --git a/src/Core.Android/packages.config b/src/Core.Android/packages.config
index 5ad39f85..807a21b5 100644
--- a/src/Core.Android/packages.config
+++ b/src/Core.Android/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Core.Library/Core.Library.csproj b/src/Core.Library/Core.Library.csproj
index 68deb89c..10f15b09 100644
--- a/src/Core.Library/Core.Library.csproj
+++ b/src/Core.Library/Core.Library.csproj
@@ -1,42 +1,14 @@
+
- Debug
- AnyCPU
{FDA37B7E-32E7-45C8-9D09-7D34DAB2CC28}
- Library
- Properties
System.Net.Mqtt
- System.Net.Mqtt.Core.Library
+ System.Net.Mqtt.Core
v4.5
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
@@ -71,14 +43,9 @@
-
-
-
-
-
@@ -87,19 +54,14 @@
Core
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/src/Core.Library/Properties/AssemblyInfo.cs b/src/Core.Library/Properties/AssemblyInfo.cs
index 689e5f6f..5f9ada02 100644
--- a/src/Core.Library/Properties/AssemblyInfo.cs
+++ b/src/Core.Library/Properties/AssemblyInfo.cs
@@ -1,12 +1,12 @@
-using System.Reflection;
+#pragma warning disable 0436
+using System.Net.Mqtt;
+using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle ("System.Net.Mqtt.Core.Library")]
[assembly: AssemblyDescription ("Shared components between Mqtt Broker and Client libraries.")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Library,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Library,PublicKey=00240000048000009400000006020000002400005253413100040000010001006379aaef112fa0342688938babd601397fb12f83046786c2568e997044049adac4e82d258c4e1edb011d4ebde8dfff5019405b2552fea9bba3ddbfe7df94dbe0e4f8e035c7673c60438aab0874476e73969d198088b9f46714778c2c990207a7a9216e8146cdd7eeaf48019168c20ea743c0cb2d477786dc4ec61cbc6a80b29e")]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Library,PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Library,PublicKey=" + ThisAssembly.PublicKey)]
[assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
-[assembly: InternalsVisibleTo ("IntegrationTests,PublicKey=0024000004800000940000000602000000240000525341310004000001000100fd93c2b3cea7da32b2f5e206f6dac620234b26e9487d2ce76ea652b0f718ce5a0a7d07ca16b81f20ca573d44fb3f0ba408236570474a9e29103432566b771ed40710409a58ddde9e3c3ddd5fbb6474c51018d2bd80308fcbaef19afc9f6d478180dd55085c741ab2256ca7d05dea736523661422f831d169c9852f292244e3b5")]
-
-
-
+[assembly: InternalsVisibleTo ("IntegrationTests,PublicKey=" + ThisAssembly.PublicKey)]
+#pragma warning restore 0436
\ No newline at end of file
diff --git a/src/Core.Library/TcpBinding.cs b/src/Core.Library/TcpBinding.cs
deleted file mode 100644
index 5f10ee75..00000000
--- a/src/Core.Library/TcpBinding.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-
-namespace System.Net.Mqtt
-{
- public class TcpBinding : IProtocolBinding
- {
- public IChannelFactory GetChannelFactory (string hostAddress, ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- return new TcpChannelFactory (hostAddress, tracerManager, configuration);
- }
-
- public IChannelProvider GetChannelProvider (ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- return new TcpChannelProvider (tracerManager, configuration);
- }
- }
-}
diff --git a/src/Core.Library/TcpChannel.cs b/src/Core.Library/TcpChannel.cs
deleted file mode 100644
index ac27b294..00000000
--- a/src/Core.Library/TcpChannel.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-using System.Reactive.Concurrency;
-using System.Reactive.Linq;
-using System.Reactive.Subjects;
-using System.Threading.Tasks;
-
-namespace System.Net.Mqtt
-{
- internal class TcpChannel : IChannel
- {
- bool disposed;
-
- readonly ITracer tracer;
- readonly TcpClient client;
- readonly IPacketBuffer buffer;
- readonly ReplaySubject receiver;
- readonly ReplaySubject sender;
- readonly IDisposable streamSubscription;
-
- public TcpChannel (TcpClient client,
- IPacketBuffer buffer,
- ITracerManager tracerManager,
- ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.client = client;
- this.client.ReceiveBufferSize = configuration.BufferSize;
- this.client.SendBufferSize = configuration.BufferSize;
- this.buffer = buffer;
- receiver = new ReplaySubject (window: TimeSpan.FromSeconds (configuration.WaitingTimeoutSecs));
- sender = new ReplaySubject (window: TimeSpan.FromSeconds (configuration.WaitingTimeoutSecs));
- streamSubscription = SubscribeStream ();
- }
-
- public bool IsConnected
- {
- get
- {
- var connected = !disposed;
-
- try {
- connected = connected && client.Connected;
- } catch (Exception) {
- connected = false;
- }
-
- return connected;
- }
- }
-
- public IObservable Receiver { get { return receiver; } }
-
- public IObservable Sender { get { return sender; } }
-
- public async Task SendAsync (byte[] message)
- {
- if (disposed) {
- throw new ObjectDisposedException (GetType ().FullName);
- }
-
- if (!IsConnected) {
- throw new MqttException (Properties.Resources.TcpChannel_ClientIsNotConnected);
- }
-
- sender.OnNext (message);
-
- try {
- tracer.Verbose (Properties.Resources.TcpChannel_SendingPacket, message.Length);
-
- await client.GetStream ()
- .WriteAsync (message, 0, message.Length)
- .ConfigureAwait (continueOnCapturedContext: false);
- } catch (ObjectDisposedException disposedEx) {
- throw new MqttException (Properties.Resources.TcpChannel_SocketDisconnected, disposedEx);
- }
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (disposed) return;
-
- if (disposing) {
- tracer.Info (Properties.Resources.Tracer_Disposing, GetType ().FullName);
-
- streamSubscription.Dispose ();
- receiver.OnCompleted ();
-
- if (IsConnected) {
- try {
- client.Client.Shutdown (SocketShutdown.Both);
- client.Close ();
- } catch (SocketException socketEx) {
- tracer.Error (socketEx, Properties.Resources.TcpChannel_DisposeError, socketEx.ErrorCode);
- }
- }
-
- disposed = true;
- }
- }
-
- IDisposable SubscribeStream ()
- {
- return Observable.Defer (() => {
- var buffer = new byte[client.ReceiveBufferSize];
-
- return Observable.FromAsync (() => {
- return client.GetStream ().ReadAsync (buffer, 0, buffer.Length);
- })
- .Select (x => buffer.Take (x).ToArray ());
- })
- .Repeat ()
- .TakeWhile (bytes => bytes.Any ())
- .ObserveOn (NewThreadScheduler.Default)
- .Subscribe (bytes => {
- var packets = default(IEnumerable);
-
- if (buffer.TryGetPackets (bytes, out packets)) {
- foreach (var packet in packets) {
- tracer.Verbose (Properties.Resources.TcpChannel_ReceivedPacket, packet.Length);
-
- receiver.OnNext (packet);
- }
- }
- }, ex => {
- if (ex is ObjectDisposedException) {
- receiver.OnError (new MqttException (Properties.Resources.TcpChannel_SocketDisconnected, ex));
- } else {
- receiver.OnError (ex);
- }
- }, () => {
- tracer.Warn (Properties.Resources.TcpChannel_NetworkStreamCompleted);
- receiver.OnCompleted ();
- });
- }
- }
-}
diff --git a/src/Core.Library/TcpChannelFactory.cs b/src/Core.Library/TcpChannelFactory.cs
deleted file mode 100644
index 9024f78d..00000000
--- a/src/Core.Library/TcpChannelFactory.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-
-namespace System.Net.Mqtt
-{
- internal class TcpChannelFactory : IChannelFactory
- {
- readonly ITracer tracer;
- readonly string hostAddress;
- readonly ITracerManager tracerManager;
- readonly ProtocolConfiguration configuration;
-
- public TcpChannelFactory (string hostAddress, ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.hostAddress = hostAddress;
- this.tracerManager = tracerManager;
- this.configuration = configuration;
- }
-
- /// ProtocolException
- public IChannel Create ()
- {
- var tcpClient = new TcpClient ();
-
- try {
- tcpClient.Connect (hostAddress, configuration.Port);
- } catch (SocketException socketEx) {
- var message = string.Format(Properties.Resources.TcpChannelFactory_TcpClient_Failed, hostAddress, configuration.Port);
-
- tracer.Error (socketEx, message);
-
- throw new MqttException (message, socketEx);
- }
-
- return new TcpChannel (tcpClient, new PacketBuffer (), tracerManager, configuration);
- }
- }
-}
diff --git a/src/Core.Library/TcpChannelProvider.cs b/src/Core.Library/TcpChannelProvider.cs
deleted file mode 100644
index c8ea62cb..00000000
--- a/src/Core.Library/TcpChannelProvider.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-using System.Reactive.Linq;
-using System.Threading.Tasks;
-
-namespace System.Net.Mqtt
-{
- internal class TcpChannelProvider : IChannelProvider
- {
- readonly ITracer tracer;
- readonly ITracerManager tracerManager;
- readonly ProtocolConfiguration configuration;
- readonly Lazy listener;
- bool disposed;
-
- public TcpChannelProvider (ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.configuration = configuration;
- listener = new Lazy (() => {
- var tcpListener = new TcpListener(IPAddress.Any, this.configuration.Port);
-
- try {
- tcpListener.Start ();
- } catch (SocketException socketEx) {
- tracer.Error (socketEx, Properties.Resources.TcpChannelProvider_TcpListener_Failed);
-
- throw new MqttException (Properties.Resources.TcpChannelProvider_TcpListener_Failed, socketEx);
- }
-
- return tcpListener;
- });
- }
-
- /// ProtocolException
- public IObservable> GetChannels ()
- {
- if (disposed) {
- throw new ObjectDisposedException (GetType ().FullName);
- }
-
- return Observable
- .FromAsync (() => {
- return Task.Factory.FromAsync (listener.Value.BeginAcceptTcpClient,
- listener.Value.EndAcceptTcpClient, TaskCreationOptions.AttachedToParent);
- })
- .Repeat ()
- .Select (client => new TcpChannel (client, new PacketBuffer (), tracerManager, configuration));
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (disposed) return;
-
- if (disposing) {
- listener.Value.Stop ();
- disposed = true;
- }
- }
- }
-}
diff --git a/src/Core.Library/packages.config b/src/Core.Library/packages.config
index 4b66c8e3..f4939c0a 100644
--- a/src/Core.Library/packages.config
+++ b/src/Core.Library/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Core.Shared/Core.Shared.projitems b/src/Core.Shared/Core.Shared.projitems
new file mode 100644
index 00000000..0b863df1
--- /dev/null
+++ b/src/Core.Shared/Core.Shared.projitems
@@ -0,0 +1,17 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ 9124efd9-4676-4a79-aff9-265107dc1d64
+
+
+ Core.Shared
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Core.Shared/Core.Shared.shproj b/src/Core.Shared/Core.Shared.shproj
new file mode 100644
index 00000000..5fac1741
--- /dev/null
+++ b/src/Core.Shared/Core.Shared.shproj
@@ -0,0 +1,13 @@
+
+
+
+ 9124efd9-4676-4a79-aff9-265107dc1d64
+ 14.0
+
+
+
+
+
+
+
+
diff --git a/src/Core.Android/TcpBinding.cs b/src/Core.Shared/TcpBinding.cs
similarity index 100%
rename from src/Core.Android/TcpBinding.cs
rename to src/Core.Shared/TcpBinding.cs
diff --git a/src/Core.Android/TcpChannel.cs b/src/Core.Shared/TcpChannel.cs
similarity index 100%
rename from src/Core.Android/TcpChannel.cs
rename to src/Core.Shared/TcpChannel.cs
diff --git a/src/Core.Android/TcpChannelFactory.cs b/src/Core.Shared/TcpChannelFactory.cs
similarity index 100%
rename from src/Core.Android/TcpChannelFactory.cs
rename to src/Core.Shared/TcpChannelFactory.cs
diff --git a/src/Core.Android/TcpChannelProvider.cs b/src/Core.Shared/TcpChannelProvider.cs
similarity index 100%
rename from src/Core.Android/TcpChannelProvider.cs
rename to src/Core.Shared/TcpChannelProvider.cs
diff --git a/src/Core.iOS/Core.iOS.csproj b/src/Core.iOS/Core.iOS.csproj
index dad5c94e..46778043 100644
--- a/src/Core.iOS/Core.iOS.csproj
+++ b/src/Core.iOS/Core.iOS.csproj
@@ -1,46 +1,17 @@
+
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
{E6678FD3-F321-410A-9858-F542E87C1CF7}
{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
System.Net.Mqtt
+ Library
+ System.Net.Mqtt.Core
Resources
- System.Net.Mqtt.Core.iOS
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- true
-
-
- Hermes.snk
-
-
-
-
@@ -63,15 +34,9 @@
-
-
-
+
-
-
-
-
@@ -82,12 +47,14 @@
Core
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
\ No newline at end of file
diff --git a/src/Core.iOS/Hermes.snk b/src/Core.iOS/Hermes.snk
deleted file mode 100644
index 640ba373..00000000
Binary files a/src/Core.iOS/Hermes.snk and /dev/null differ
diff --git a/src/Core.iOS/TcpBinding.cs b/src/Core.iOS/TcpBinding.cs
deleted file mode 100644
index 5f10ee75..00000000
--- a/src/Core.iOS/TcpBinding.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-
-namespace System.Net.Mqtt
-{
- public class TcpBinding : IProtocolBinding
- {
- public IChannelFactory GetChannelFactory (string hostAddress, ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- return new TcpChannelFactory (hostAddress, tracerManager, configuration);
- }
-
- public IChannelProvider GetChannelProvider (ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- return new TcpChannelProvider (tracerManager, configuration);
- }
- }
-}
diff --git a/src/Core.iOS/TcpChannel.cs b/src/Core.iOS/TcpChannel.cs
deleted file mode 100644
index ac27b294..00000000
--- a/src/Core.iOS/TcpChannel.cs
+++ /dev/null
@@ -1,146 +0,0 @@
-using System.Collections.Generic;
-using System.Linq;
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-using System.Reactive.Concurrency;
-using System.Reactive.Linq;
-using System.Reactive.Subjects;
-using System.Threading.Tasks;
-
-namespace System.Net.Mqtt
-{
- internal class TcpChannel : IChannel
- {
- bool disposed;
-
- readonly ITracer tracer;
- readonly TcpClient client;
- readonly IPacketBuffer buffer;
- readonly ReplaySubject receiver;
- readonly ReplaySubject sender;
- readonly IDisposable streamSubscription;
-
- public TcpChannel (TcpClient client,
- IPacketBuffer buffer,
- ITracerManager tracerManager,
- ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.client = client;
- this.client.ReceiveBufferSize = configuration.BufferSize;
- this.client.SendBufferSize = configuration.BufferSize;
- this.buffer = buffer;
- receiver = new ReplaySubject (window: TimeSpan.FromSeconds (configuration.WaitingTimeoutSecs));
- sender = new ReplaySubject (window: TimeSpan.FromSeconds (configuration.WaitingTimeoutSecs));
- streamSubscription = SubscribeStream ();
- }
-
- public bool IsConnected
- {
- get
- {
- var connected = !disposed;
-
- try {
- connected = connected && client.Connected;
- } catch (Exception) {
- connected = false;
- }
-
- return connected;
- }
- }
-
- public IObservable Receiver { get { return receiver; } }
-
- public IObservable Sender { get { return sender; } }
-
- public async Task SendAsync (byte[] message)
- {
- if (disposed) {
- throw new ObjectDisposedException (GetType ().FullName);
- }
-
- if (!IsConnected) {
- throw new MqttException (Properties.Resources.TcpChannel_ClientIsNotConnected);
- }
-
- sender.OnNext (message);
-
- try {
- tracer.Verbose (Properties.Resources.TcpChannel_SendingPacket, message.Length);
-
- await client.GetStream ()
- .WriteAsync (message, 0, message.Length)
- .ConfigureAwait (continueOnCapturedContext: false);
- } catch (ObjectDisposedException disposedEx) {
- throw new MqttException (Properties.Resources.TcpChannel_SocketDisconnected, disposedEx);
- }
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (disposed) return;
-
- if (disposing) {
- tracer.Info (Properties.Resources.Tracer_Disposing, GetType ().FullName);
-
- streamSubscription.Dispose ();
- receiver.OnCompleted ();
-
- if (IsConnected) {
- try {
- client.Client.Shutdown (SocketShutdown.Both);
- client.Close ();
- } catch (SocketException socketEx) {
- tracer.Error (socketEx, Properties.Resources.TcpChannel_DisposeError, socketEx.ErrorCode);
- }
- }
-
- disposed = true;
- }
- }
-
- IDisposable SubscribeStream ()
- {
- return Observable.Defer (() => {
- var buffer = new byte[client.ReceiveBufferSize];
-
- return Observable.FromAsync (() => {
- return client.GetStream ().ReadAsync (buffer, 0, buffer.Length);
- })
- .Select (x => buffer.Take (x).ToArray ());
- })
- .Repeat ()
- .TakeWhile (bytes => bytes.Any ())
- .ObserveOn (NewThreadScheduler.Default)
- .Subscribe (bytes => {
- var packets = default(IEnumerable);
-
- if (buffer.TryGetPackets (bytes, out packets)) {
- foreach (var packet in packets) {
- tracer.Verbose (Properties.Resources.TcpChannel_ReceivedPacket, packet.Length);
-
- receiver.OnNext (packet);
- }
- }
- }, ex => {
- if (ex is ObjectDisposedException) {
- receiver.OnError (new MqttException (Properties.Resources.TcpChannel_SocketDisconnected, ex));
- } else {
- receiver.OnError (ex);
- }
- }, () => {
- tracer.Warn (Properties.Resources.TcpChannel_NetworkStreamCompleted);
- receiver.OnCompleted ();
- });
- }
- }
-}
diff --git a/src/Core.iOS/TcpChannelFactory.cs b/src/Core.iOS/TcpChannelFactory.cs
deleted file mode 100644
index 9024f78d..00000000
--- a/src/Core.iOS/TcpChannelFactory.cs
+++ /dev/null
@@ -1,40 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-
-namespace System.Net.Mqtt
-{
- internal class TcpChannelFactory : IChannelFactory
- {
- readonly ITracer tracer;
- readonly string hostAddress;
- readonly ITracerManager tracerManager;
- readonly ProtocolConfiguration configuration;
-
- public TcpChannelFactory (string hostAddress, ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.hostAddress = hostAddress;
- this.tracerManager = tracerManager;
- this.configuration = configuration;
- }
-
- /// ProtocolException
- public IChannel Create ()
- {
- var tcpClient = new TcpClient ();
-
- try {
- tcpClient.Connect (hostAddress, configuration.Port);
- } catch (SocketException socketEx) {
- var message = string.Format(Properties.Resources.TcpChannelFactory_TcpClient_Failed, hostAddress, configuration.Port);
-
- tracer.Error (socketEx, message);
-
- throw new MqttException (message, socketEx);
- }
-
- return new TcpChannel (tcpClient, new PacketBuffer (), tracerManager, configuration);
- }
- }
-}
diff --git a/src/Core.iOS/TcpChannelProvider.cs b/src/Core.iOS/TcpChannelProvider.cs
deleted file mode 100644
index c8ea62cb..00000000
--- a/src/Core.iOS/TcpChannelProvider.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-using System.Net.Mqtt.Diagnostics;
-using System.Net.Mqtt.Exceptions;
-using System.Net.Sockets;
-using System.Reactive.Linq;
-using System.Threading.Tasks;
-
-namespace System.Net.Mqtt
-{
- internal class TcpChannelProvider : IChannelProvider
- {
- readonly ITracer tracer;
- readonly ITracerManager tracerManager;
- readonly ProtocolConfiguration configuration;
- readonly Lazy listener;
- bool disposed;
-
- public TcpChannelProvider (ITracerManager tracerManager, ProtocolConfiguration configuration)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.configuration = configuration;
- listener = new Lazy (() => {
- var tcpListener = new TcpListener(IPAddress.Any, this.configuration.Port);
-
- try {
- tcpListener.Start ();
- } catch (SocketException socketEx) {
- tracer.Error (socketEx, Properties.Resources.TcpChannelProvider_TcpListener_Failed);
-
- throw new MqttException (Properties.Resources.TcpChannelProvider_TcpListener_Failed, socketEx);
- }
-
- return tcpListener;
- });
- }
-
- /// ProtocolException
- public IObservable> GetChannels ()
- {
- if (disposed) {
- throw new ObjectDisposedException (GetType ().FullName);
- }
-
- return Observable
- .FromAsync (() => {
- return Task.Factory.FromAsync (listener.Value.BeginAcceptTcpClient,
- listener.Value.EndAcceptTcpClient, TaskCreationOptions.AttachedToParent);
- })
- .Repeat ()
- .Select (client => new TcpChannel (client, new PacketBuffer (), tracerManager, configuration));
- }
-
- public void Dispose ()
- {
- Dispose (true);
- GC.SuppressFinalize (this);
- }
-
- protected virtual void Dispose (bool disposing)
- {
- if (disposed) return;
-
- if (disposing) {
- listener.Value.Stop ();
- disposed = true;
- }
- }
- }
-}
diff --git a/src/Core.iOS/packages.config b/src/Core.iOS/packages.config
index f430ef45..e38f0c0e 100644
--- a/src/Core.iOS/packages.config
+++ b/src/Core.iOS/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Core/Core.csproj b/src/Core/Core.csproj
index 05c7b0f7..3c15c78d 100644
--- a/src/Core/Core.csproj
+++ b/src/Core/Core.csproj
@@ -3,30 +3,17 @@
- AnyCPU
{6481B999-0479-4162-AC53-5936CE5FD8BF}
- Library
- Properties
System.Net.Mqtt
System.Net.Mqtt.Core.Portable
v4.5
- 512
{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Profile111
v4.5
-
- true
-
-
- Hermes.snk
-
-
- Properties\GlobalAssemblyInfo.cs
-
@@ -161,13 +148,11 @@
-
+
- This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
+
-
\ No newline at end of file
diff --git a/src/Core/Properties/AssemblyInfo.cs b/src/Core/Properties/AssemblyInfo.cs
index 8b9b7e9e..d3cd58cd 100644
--- a/src/Core/Properties/AssemblyInfo.cs
+++ b/src/Core/Properties/AssemblyInfo.cs
@@ -1,19 +1,16 @@
-using System.Reflection;
+#pragma warning disable 0436
+using System.Net.Mqtt;
+using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle ("System.Net.Mqtt.Core")]
[assembly: AssemblyDescription ("Shared components between Mqtt Broker and Client.")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Portable,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Library,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.iOS,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Android,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Core.Library,PublicKey=002400000480000094000000060200000024000052534131000400000100010065b8df7c05d8bc2ba727492ad269e444ac8823b4c573a2b1a5f2aaec8cad859a5cf93a5d3dfb13a0632217f97f8c6bc27669440c1d18926320f63d406c3c8fb586f3481a62b18d45b506d956ac4e43b450c4afd028f68ead13d96e454d20d99b6ca5703ca401ac82e47058748f08c6dc01476596c599011fd14e74778c8652f0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Core.iOS,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Core.Android,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Portable,PublicKey=00240000048000009400000006020000002400005253413100040000010001006379aaef112fa0342688938babd601397fb12f83046786c2568e997044049adac4e82d258c4e1edb011d4ebde8dfff5019405b2552fea9bba3ddbfe7df94dbe0e4f8e035c7673c60438aab0874476e73969d198088b9f46714778c2c990207a7a9216e8146cdd7eeaf48019168c20ea743c0cb2d477786dc4ec61cbc6a80b29e")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Library,PublicKey=00240000048000009400000006020000002400005253413100040000010001006379aaef112fa0342688938babd601397fb12f83046786c2568e997044049adac4e82d258c4e1edb011d4ebde8dfff5019405b2552fea9bba3ddbfe7df94dbe0e4f8e035c7673c60438aab0874476e73969d198088b9f46714778c2c990207a7a9216e8146cdd7eeaf48019168c20ea743c0cb2d477786dc4ec61cbc6a80b29e")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.iOS,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Android,PublicKey=00240000048000009400000006020000002400005253413100040000010001006379aaef112fa0342688938babd601397fb12f83046786c2568e997044049adac4e82d258c4e1edb011d4ebde8dfff5019405b2552fea9bba3ddbfe7df94dbe0e4f8e035c7673c60438aab0874476e73969d198088b9f46714778c2c990207a7a9216e8146cdd7eeaf48019168c20ea743c0cb2d477786dc4ec61cbc6a80b29e")]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Portable, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Core, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Portable, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo("IntegrationTests, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo("Tests, PublicKey=" + ThisAssembly.PublicKey)]
[assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
-[assembly: InternalsVisibleTo ("IntegrationTests,PublicKey=0024000004800000940000000602000000240000525341310004000001000100fd93c2b3cea7da32b2f5e206f6dac620234b26e9487d2ce76ea652b0f718ce5a0a7d07ca16b81f20ca573d44fb3f0ba408236570474a9e29103432566b771ed40710409a58ddde9e3c3ddd5fbb6474c51018d2bd80308fcbaef19afc9f6d478180dd55085c741ab2256ca7d05dea736523661422f831d169c9852f292244e3b5")]
-[assembly: InternalsVisibleTo ("Tests,PublicKey=0024000004800000940000000602000000240000525341310004000001000100b930098aa349ada91b5b5e04b74afb3b141768bf24cd9cce9625f5ae2ac75c448b0f7881c83d0730f35dfc73b5fccc99e817bdece3953909d9c76ea901aeb99b24771054d1145194e0911753642979ab525f5ca233a292c8ba563d9bbc0f8bfaa4b83bc3ec5865d9f73c17d1c30bc519757a9c9b3061f4d992d496515cabdbd3")]
\ No newline at end of file
+#pragma warning restore 0436
\ No newline at end of file
diff --git a/src/Core/packages.config b/src/Core/packages.config
index ea5a1de4..e144fa89 100644
--- a/src/Core/packages.config
+++ b/src/Core/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/GlobalAssemblyInfo.cs b/src/GlobalAssemblyInfo.cs
index 15a0adbf..8c59a086 100644
--- a/src/GlobalAssemblyInfo.cs
+++ b/src/GlobalAssemblyInfo.cs
@@ -1,6 +1,6 @@
#pragma warning disable 0436
/*
- Copyright 2014 NETFX
+ Copyright 2014 MobileEssentials
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -33,6 +33,7 @@ namespace System.Net.Mqtt
{
partial class ThisAssembly
{
+ public const string PublicKey = "002400000480000094000000060200000024000052534131000400000100010065b8df7c05d8bc2ba727492ad269e444ac8823b4c573a2b1a5f2aaec8cad859a5cf93a5d3dfb13a0632217f97f8c6bc27669440c1d18926320f63d406c3c8fb586f3481a62b18d45b506d956ac4e43b450c4afd028f68ead13d96e454d20d99b6ca5703ca401ac82e47058748f08c6dc01476596c599011fd14e74778c8652f0";
public const string Version = ThisAssembly.Git.SemVer.Major + "." + ThisAssembly.Git.SemVer.Minor + "." + ThisAssembly.Git.SemVer.Patch;
public const string FileVersion = Version;
public const string InformationVersion = Version + ThisAssembly.Git.SemVer.DashLabel + "-" + ThisAssembly.Git.Branch + "+" + ThisAssembly.Git.Commit;
diff --git a/src/Hermes.props b/src/Hermes.props
index 643240fd..f727bf6b 100644
--- a/src/Hermes.props
+++ b/src/Hermes.props
@@ -3,11 +3,14 @@
- Release
..\
System.Net.Mqtt
+
+ 11.0
+
+
@@ -18,17 +21,18 @@
4.0
-
- 10.0
-
-
+ Debug
+ AnyCPU
+ Library
bin\$(Configuration)\
true
full
prompt
4
+ 2.0
+ Properties
@@ -42,6 +46,15 @@
true
+
+ true
+ $(MSBuildThisFileDirectory)Hermes.snk
+
+
+
+
+
+
diff --git a/src/Hermes.sln b/src/Hermes.sln
index d56e0e83..da20e213 100644
--- a/src/Hermes.sln
+++ b/src/Hermes.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
-VisualStudioVersion = 14.0.24720.0
+VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core", "Core\Core.csproj", "{6481B999-0479-4162-AC53-5936CE5FD8BF}"
EndProject
@@ -13,9 +13,11 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IntegrationTests", "Integra
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1A5ABB89-2797-4946-8D46-F07144F616F3}"
ProjectSection(SolutionItems) = preProject
+ Before.Hermes.sln.targets = Before.Hermes.sln.targets
GlobalAssemblyInfo.cs = GlobalAssemblyInfo.cs
Hermes.props = Hermes.props
Hermes.targets = Hermes.targets
+ NuGet.Restore.targets = NuGet.Restore.targets
..\packages.config = ..\packages.config
..\README.md = ..\README.md
..\ReleaseNotes.md = ..\ReleaseNotes.md
@@ -25,8 +27,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csp
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{E887D106-44B8-46EF-9BCC-FF68AD1A1B71}"
ProjectSection(SolutionItems) = preProject
- build.proj = build.proj
- build\build.targets = build\build.targets
+ ..\build.cmd = ..\build.cmd
+ ..\build.proj = ..\build.proj
+ ..\packages.config = ..\packages.config
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Library", "Core.Library\Core.Library.csproj", "{FDA37B7E-32E7-45C8-9D09-7D34DAB2CC28}"
@@ -47,7 +50,29 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Core.Android", "Core.Androi
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server.Android", "Server.Android\Server.Android.csproj", "{92A500B2-6AC1-4E57-9028-210A1E1B3BBF}"
EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Core.Shared", "Core.Shared\Core.Shared.shproj", "{9124EFD9-4676-4A79-AFF9-265107DC1D64}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Server.Shared", "Server.Shared\Server.Shared.shproj", "{4E908EDC-CC81-4F9E-BA2F-48416C4A8FFB}"
+EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Client.Shared", "Client.Shared\Client.Shared.shproj", "{E314B453-080D-481C-8FB1-356F78DA72FC}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platforms", "Platforms", "{59231552-9EA8-48E4-BEBB-A964666F36D0}"
+EndProject
Global
+ GlobalSection(SharedMSBuildProjectFiles) = preSolution
+ Client.Shared\Client.Shared.projitems*{a09b1d2d-2dc3-46bb-8e85-19c1d3fc54e8}*SharedItemsImports = 4
+ Client.Shared\Client.Shared.projitems*{e1ee11ff-ba01-4919-8984-c61ccf8cafab}*SharedItemsImports = 4
+ Core.Shared\Core.Shared.projitems*{fda37b7e-32e7-45c8-9d09-7d34dab2cc28}*SharedItemsImports = 4
+ Server.Shared\Server.Shared.projitems*{4e908edc-cc81-4f9e-ba2f-48416c4a8ffb}*SharedItemsImports = 13
+ Server.Shared\Server.Shared.projitems*{92a500b2-6ac1-4e57-9028-210a1e1b3bbf}*SharedItemsImports = 4
+ Client.Shared\Client.Shared.projitems*{e314b453-080d-481c-8fb1-356f78da72fc}*SharedItemsImports = 13
+ Core.Shared\Core.Shared.projitems*{e6678fd3-f321-410a-9858-f542e87c1cf7}*SharedItemsImports = 4
+ Core.Shared\Core.Shared.projitems*{9124efd9-4676-4a79-aff9-265107dc1d64}*SharedItemsImports = 13
+ Server.Shared\Server.Shared.projitems*{d92d7642-43d3-47f9-b5e5-9d8f5944ac84}*SharedItemsImports = 4
+ Core.Shared\Core.Shared.projitems*{d0826e54-0983-48ec-b5d0-f19cfd66fade}*SharedItemsImports = 4
+ Client.Shared\Client.Shared.projitems*{c2dcd7cf-3780-4003-b4be-dba8da5c6178}*SharedItemsImports = 4
+ Server.Shared\Server.Shared.projitems*{bb1f9777-4230-4fe2-8eb0-8bd0a13b4408}*SharedItemsImports = 4
+ EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Ad-Hoc|Any CPU = Ad-Hoc|Any CPU
Ad-Hoc|iPhone = Ad-Hoc|iPhone
@@ -279,54 +304,54 @@ Global
{E1EE11FF-BA01-4919-8984-C61CCF8CAFAB}.Release|iPhone.Build.0 = Release|Any CPU
{E1EE11FF-BA01-4919-8984-C61CCF8CAFAB}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{E1EE11FF-BA01-4919-8984-C61CCF8CAFAB}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhone.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Debug|iPhone.Build.0 = Debug|Any CPU
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|Any CPU.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhone.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhone.Build.0 = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhone.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhoneSimulator.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|Any CPU.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|Any CPU.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhone.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhone.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhoneSimulator.Build.0 = Release|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|Any CPU.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhone.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhone.Build.0 = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178}.Release|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|Any CPU.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|Any CPU.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhone.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhone.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Ad-Hoc|iPhoneSimulator.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|Any CPU.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|Any CPU.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhone.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhone.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.AppStore|iPhoneSimulator.Build.0 = Debug|Any CPU
{E6678FD3-F321-410A-9858-F542E87C1CF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6678FD3-F321-410A-9858-F542E87C1CF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E6678FD3-F321-410A-9858-F542E87C1CF7}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{E6678FD3-F321-410A-9858-F542E87C1CF7}.Debug|iPhone.Build.0 = Debug|Any CPU
{E6678FD3-F321-410A-9858-F542E87C1CF7}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{E6678FD3-F321-410A-9858-F542E87C1CF7}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|Any CPU.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhone.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhone.Build.0 = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
- {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|Any CPU.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhone.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhone.Build.0 = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhoneSimulator.ActiveCfg = Debug|Any CPU
+ {E6678FD3-F321-410A-9858-F542E87C1CF7}.Release|iPhoneSimulator.Build.0 = Debug|Any CPU
{D92D7642-43D3-47F9-B5E5-9D8F5944AC84}.Ad-Hoc|Any CPU.ActiveCfg = Release|Any CPU
{D92D7642-43D3-47F9-B5E5-9D8F5944AC84}.Ad-Hoc|Any CPU.Build.0 = Release|Any CPU
{D92D7642-43D3-47F9-B5E5-9D8F5944AC84}.Ad-Hoc|iPhone.ActiveCfg = Release|Any CPU
@@ -405,5 +430,14 @@ Global
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{E887D106-44B8-46EF-9BCC-FF68AD1A1B71} = {1A5ABB89-2797-4946-8D46-F07144F616F3}
+ {FDA37B7E-32E7-45C8-9D09-7D34DAB2CC28} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {A09B1D2D-2DC3-46BB-8E85-19C1D3FC54E8} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {BB1F9777-4230-4FE2-8EB0-8BD0A13B4408} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {E1EE11FF-BA01-4919-8984-C61CCF8CAFAB} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {C2DCD7CF-3780-4003-B4BE-DBA8DA5C6178} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {E6678FD3-F321-410A-9858-F542E87C1CF7} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {D92D7642-43D3-47F9-B5E5-9D8F5944AC84} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {D0826E54-0983-48EC-B5D0-F19CFD66FADE} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
+ {92A500B2-6AC1-4E57-9028-210A1E1B3BBF} = {59231552-9EA8-48E4-BEBB-A964666F36D0}
EndGlobalSection
EndGlobal
diff --git a/src/Core.Library/Hermes.snk b/src/Hermes.snk
similarity index 100%
rename from src/Core.Library/Hermes.snk
rename to src/Hermes.snk
diff --git a/src/IntegrationTests/IntegrationTests.csproj b/src/IntegrationTests/IntegrationTests.csproj
index f34eab46..87ed7ec9 100644
--- a/src/IntegrationTests/IntegrationTests.csproj
+++ b/src/IntegrationTests/IntegrationTests.csproj
@@ -1,40 +1,14 @@
+
- Debug
- AnyCPU
{1A4E01C2-78A6-4E71-A34A-E911F01CE840}
- Library
- Properties
IntegrationTests
IntegrationTests
v4.5
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
+
+
@@ -116,11 +90,12 @@
-
\ No newline at end of file
diff --git a/src/IntegrationTests/Properties/AssemblyInfo.cs b/src/IntegrationTests/Properties/AssemblyInfo.cs
index 0d7fa94e..d18ef432 100644
--- a/src/IntegrationTests/Properties/AssemblyInfo.cs
+++ b/src/IntegrationTests/Properties/AssemblyInfo.cs
@@ -1,36 +1,3 @@
using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
[assembly: AssemblyTitle("IntegrationTests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("IntegrationTests")]
-[assembly: AssemblyCopyright("Copyright © 2015")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("d71e8488-00fd-4a8a-b55f-62ca8b259931")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/IntegrationTests/packages.config b/src/IntegrationTests/packages.config
index 6acb1ecb..13f52a67 100644
--- a/src/IntegrationTests/packages.config
+++ b/src/IntegrationTests/packages.config
@@ -1,5 +1,6 @@
+
diff --git a/src/NuGet.Restore.targets b/src/NuGet.Restore.targets
new file mode 100644
index 00000000..39970c61
--- /dev/null
+++ b/src/NuGet.Restore.targets
@@ -0,0 +1,93 @@
+
+
+
+
+ $(MSBuildThisFileDirectory).nuget
+ https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
+
+
+
+ $(NuGetPath)\NuGet.exe
+
+
+
+ nuget
+
+
+
+
+
+
+
+
+
+ Restore
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $([System.IO.Path]::GetDirectoryName('$(SolutionPath)'))
+
+
+
+
+ <_NuGet>$(NuGet.Replace('$(RestoreDir)', '').TrimStart('/').TrimStart('\'))
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RestoreSolution Condition=" '$(OS)' != 'Unix' ">$(_RestoreSolution.Replace('$(RestoreDir)', '').TrimStart('/').TrimStart('\'))
+ <_RestoreOutput Condition=" '$(OS)' != 'Unix' And '$(_RestoreOutput)' != ''">$(_RestoreOutput.Replace('$(RestoreDir)', '').TrimStart('/').TrimStart('\'))
+
+ <_RestoreCommand Condition=" '$(_RestoreCommand)' == '' ">Restore
+
+
+
+
+
+
+
+
+
+
+ %WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe
+
+
+
+
+
+
+
+ true
+
+
+
diff --git a/src/Server.Android/Hermes.snk b/src/Server.Android/Hermes.snk
deleted file mode 100644
index e61df779..00000000
Binary files a/src/Server.Android/Hermes.snk and /dev/null differ
diff --git a/src/Server.Android/Resources/AboutResources.txt b/src/Server.Android/Resources/AboutResources.txt
deleted file mode 100644
index c2bca974..00000000
--- a/src/Server.Android/Resources/AboutResources.txt
+++ /dev/null
@@ -1,44 +0,0 @@
-Images, layout descriptions, binary blobs and string dictionaries can be included
-in your application as resource files. Various Android APIs are designed to
-operate on the resource IDs instead of dealing with images, strings or binary blobs
-directly.
-
-For example, a sample Android app that contains a user interface layout (main.axml),
-an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
-would keep its resources in the "Resources" directory of the application:
-
-Resources/
- drawable/
- icon.png
-
- layout/
- main.axml
-
- values/
- strings.xml
-
-In order to get the build system to recognize Android resources, set the build action to
-"AndroidResource". The native Android APIs do not operate directly with filenames, but
-instead operate on resource IDs. When you compile an Android application that uses resources,
-the build system will package the resources for distribution and generate a class called "R"
-(this is an Android convention) that contains the tokens for each one of the resources
-included. For example, for the above Resources layout, this is what the R class would expose:
-
-public class R {
- public class drawable {
- public const int icon = 0x123;
- }
-
- public class layout {
- public const int main = 0x456;
- }
-
- public class strings {
- public const int first_string = 0xabc;
- public const int second_string = 0xbcd;
- }
-}
-
-You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
-to reference the layout/main.axml file, or R.strings.first_string to reference the first
-string in the dictionary file values/strings.xml.
\ No newline at end of file
diff --git a/src/Server.Android/Resources/Resource.Designer.cs b/src/Server.Android/Resources/Resource.Designer.cs
index 79af0fd6..e69de29b 100644
--- a/src/Server.Android/Resources/Resource.Designer.cs
+++ b/src/Server.Android/Resources/Resource.Designer.cs
@@ -1,60 +0,0 @@
-#pragma warning disable 1591
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-// Runtime Version:4.0.30319.42000
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-[assembly: global::Android.Runtime.ResourceDesignerAttribute("System.Net.Mqtt.Server.Resource", IsApplication=false)]
-
-namespace System.Net.Mqtt.Server
-{
-
-
- [System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
- public partial class Resource
- {
-
- static Resource()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- public partial class Attribute
- {
-
- static Attribute()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private Attribute()
- {
- }
- }
-
- public partial class String
- {
-
- // aapt resource value: 0x7f020001
- public static int ApplicationName = 2130837505;
-
- // aapt resource value: 0x7f020000
- public static int Hello = 2130837504;
-
- static String()
- {
- global::Android.Runtime.ResourceIdManager.UpdateIdValues();
- }
-
- private String()
- {
- }
- }
- }
-}
-#pragma warning restore 1591
diff --git a/src/Server.Android/Resources/Values/Strings.xml b/src/Server.Android/Resources/Values/Strings.xml
deleted file mode 100644
index 8fd17630..00000000
--- a/src/Server.Android/Resources/Values/Strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- Hello World, Click Me!
- $projectname$
-
diff --git a/src/Server.Android/Server.Android.csproj b/src/Server.Android/Server.Android.csproj
index cfc6cfcd..35a3ebeb 100644
--- a/src/Server.Android/Server.Android.csproj
+++ b/src/Server.Android/Server.Android.csproj
@@ -1,17 +1,12 @@
+
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
{92A500B2-6AC1-4E57-9028-210A1E1B3BBF}
{EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
System.Net.Mqtt.Server
- System.Net.Mqtt.Server.Android
- 512
+ System.Net.Mqtt.Server
Resources\Resource.Designer.cs
Off
False
@@ -19,32 +14,6 @@
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
-
-
-
-
@@ -70,16 +39,10 @@
-
-
-
-
-
-
@@ -95,19 +58,14 @@
Server
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/src/Server.Android/packages.config b/src/Server.Android/packages.config
index b2057168..5fbc9415 100644
--- a/src/Server.Android/packages.config
+++ b/src/Server.Android/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Server.Library/Hermes.snk b/src/Server.Library/Hermes.snk
deleted file mode 100644
index e61df779..00000000
Binary files a/src/Server.Library/Hermes.snk and /dev/null differ
diff --git a/src/Server.Library/Server.Library.csproj b/src/Server.Library/Server.Library.csproj
index 698a2b2b..eb7f9599 100644
--- a/src/Server.Library/Server.Library.csproj
+++ b/src/Server.Library/Server.Library.csproj
@@ -1,42 +1,14 @@
+
- Debug
- AnyCPU
{BB1F9777-4230-4FE2-8EB0-8BD0A13B4408}
- Library
- Properties
System.Net.Mqtt.Server
- System.Net.Mqtt.Server.Library
+ System.Net.Mqtt.Server
v4.5
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
- true
-
-
- Hermes.snk
@@ -50,7 +22,6 @@
-
@@ -67,22 +38,16 @@
-
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
\ No newline at end of file
diff --git a/src/Server.Library/ServerFactory.cs b/src/Server.Library/ServerFactory.cs
deleted file mode 100644
index d2101416..00000000
--- a/src/Server.Library/ServerFactory.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System.Reactive;
-using System.Net.Mqtt.Flows;
-using System.Net.Mqtt.Storage;
-using System.Net.Mqtt.Diagnostics;
-
-namespace System.Net.Mqtt.Server
-{
- public class ServerFactory : IFactory
- {
- readonly ITracerManager tracerManager;
- readonly ITracer tracer;
- readonly IProtocolBinding binding;
- readonly IAuthenticationProvider authenticationProvider;
-
- public ServerFactory (IProtocolBinding binding, IAuthenticationProvider authenticationProvider = null)
- : this (binding, new DefaultTracerManager (), authenticationProvider)
- {
- this.authenticationProvider = authenticationProvider ?? NullAuthenticationProvider.Instance;
- }
-
- public ServerFactory (IProtocolBinding binding, ITracerManager tracerManager, IAuthenticationProvider authenticationProvider = null)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.binding = binding;
- this.authenticationProvider = authenticationProvider ?? NullAuthenticationProvider.Instance;
- }
-
- /// ServerException
- public Server Create (ProtocolConfiguration configuration)
- {
- try {
- var topicEvaluator = new TopicEvaluator (configuration);
- var channelProvider = binding.GetChannelProvider (tracerManager, configuration);
- var channelFactory = new PacketChannelFactory (topicEvaluator, tracerManager, configuration);
- var repositoryProvider = new InMemoryRepositoryProvider ();
- var connectionProvider = new ConnectionProvider (tracerManager);
- var packetIdProvider = new PacketIdProvider ();
- var eventStream = new EventStream ();
- var flowProvider = new ServerProtocolFlowProvider (authenticationProvider, connectionProvider, topicEvaluator,
- repositoryProvider, packetIdProvider, eventStream, tracerManager, configuration);
-
- return new Server (channelProvider, channelFactory,
- flowProvider, connectionProvider, eventStream, tracerManager, configuration);
- } catch (Exception ex) {
- tracer.Error (ex, Properties.Resources.Server_InitializeError);
-
- throw new ServerException (Properties.Resources.Server_InitializeError, ex);
- }
- }
- }
-}
diff --git a/src/Server.Library/packages.config b/src/Server.Library/packages.config
index 3e137b0f..ae82a624 100644
--- a/src/Server.Library/packages.config
+++ b/src/Server.Library/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/src/Server.Shared/Server.Shared.projitems b/src/Server.Shared/Server.Shared.projitems
new file mode 100644
index 00000000..9234a16e
--- /dev/null
+++ b/src/Server.Shared/Server.Shared.projitems
@@ -0,0 +1,14 @@
+
+
+
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+ true
+ 4e908edc-cc81-4f9e-ba2f-48416c4a8ffb
+
+
+ Server.Shared
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Server.Shared/Server.Shared.shproj b/src/Server.Shared/Server.Shared.shproj
new file mode 100644
index 00000000..e165ad3d
--- /dev/null
+++ b/src/Server.Shared/Server.Shared.shproj
@@ -0,0 +1,13 @@
+
+
+
+ 4e908edc-cc81-4f9e-ba2f-48416c4a8ffb
+ 14.0
+
+
+
+
+
+
+
+
diff --git a/src/Server.Android/ServerFactory.cs b/src/Server.Shared/ServerFactory.cs
similarity index 100%
rename from src/Server.Android/ServerFactory.cs
rename to src/Server.Shared/ServerFactory.cs
diff --git a/src/Server.iOS/Hermes.snk b/src/Server.iOS/Hermes.snk
deleted file mode 100644
index 640ba373..00000000
Binary files a/src/Server.iOS/Hermes.snk and /dev/null differ
diff --git a/src/Server.iOS/Server.iOS.csproj b/src/Server.iOS/Server.iOS.csproj
index d81ff82a..c24151d6 100644
--- a/src/Server.iOS/Server.iOS.csproj
+++ b/src/Server.iOS/Server.iOS.csproj
@@ -1,45 +1,18 @@
+
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
{D92D7642-43D3-47F9-B5E5-9D8F5944AC84}
{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
System.Net.Mqtt.Server
+ Library
+ System.Net.Mqtt.Server
Resources
- System.Net.Mqtt.Server.iOS
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- true
-
-
- Hermes.snk
-
-
@@ -48,12 +21,9 @@
-
-
-
+
-
@@ -71,12 +41,14 @@
Server
+
-
+
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
\ No newline at end of file
diff --git a/src/Server.iOS/ServerFactory.cs b/src/Server.iOS/ServerFactory.cs
deleted file mode 100644
index d2101416..00000000
--- a/src/Server.iOS/ServerFactory.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-using System.Reactive;
-using System.Net.Mqtt.Flows;
-using System.Net.Mqtt.Storage;
-using System.Net.Mqtt.Diagnostics;
-
-namespace System.Net.Mqtt.Server
-{
- public class ServerFactory : IFactory
- {
- readonly ITracerManager tracerManager;
- readonly ITracer tracer;
- readonly IProtocolBinding binding;
- readonly IAuthenticationProvider authenticationProvider;
-
- public ServerFactory (IProtocolBinding binding, IAuthenticationProvider authenticationProvider = null)
- : this (binding, new DefaultTracerManager (), authenticationProvider)
- {
- this.authenticationProvider = authenticationProvider ?? NullAuthenticationProvider.Instance;
- }
-
- public ServerFactory (IProtocolBinding binding, ITracerManager tracerManager, IAuthenticationProvider authenticationProvider = null)
- {
- tracer = tracerManager.Get ();
- this.tracerManager = tracerManager;
- this.binding = binding;
- this.authenticationProvider = authenticationProvider ?? NullAuthenticationProvider.Instance;
- }
-
- /// ServerException
- public Server Create (ProtocolConfiguration configuration)
- {
- try {
- var topicEvaluator = new TopicEvaluator (configuration);
- var channelProvider = binding.GetChannelProvider (tracerManager, configuration);
- var channelFactory = new PacketChannelFactory (topicEvaluator, tracerManager, configuration);
- var repositoryProvider = new InMemoryRepositoryProvider ();
- var connectionProvider = new ConnectionProvider (tracerManager);
- var packetIdProvider = new PacketIdProvider ();
- var eventStream = new EventStream ();
- var flowProvider = new ServerProtocolFlowProvider (authenticationProvider, connectionProvider, topicEvaluator,
- repositoryProvider, packetIdProvider, eventStream, tracerManager, configuration);
-
- return new Server (channelProvider, channelFactory,
- flowProvider, connectionProvider, eventStream, tracerManager, configuration);
- } catch (Exception ex) {
- tracer.Error (ex, Properties.Resources.Server_InitializeError);
-
- throw new ServerException (Properties.Resources.Server_InitializeError, ex);
- }
- }
- }
-}
diff --git a/src/Server.iOS/packages.config b/src/Server.iOS/packages.config
index 56581059..fea636b4 100644
--- a/src/Server.iOS/packages.config
+++ b/src/Server.iOS/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/src/Server/Hermes.snk b/src/Server/Hermes.snk
deleted file mode 100644
index e61df779..00000000
Binary files a/src/Server/Hermes.snk and /dev/null differ
diff --git a/src/Server/Properties/AssemblyInfo.cs b/src/Server/Properties/AssemblyInfo.cs
index b9b11902..8130921f 100644
--- a/src/Server/Properties/AssemblyInfo.cs
+++ b/src/Server/Properties/AssemblyInfo.cs
@@ -1,10 +1,11 @@
-using System.Reflection;
+#pragma warning disable 0436
+using System.Net.Mqtt;
+using System.Reflection;
using System.Runtime.CompilerServices;
[assembly: AssemblyTitle ("System.Net.Mqtt.Server")]
[assembly: AssemblyDescription ("Shared components for Mqtt brokers.")]
-[assembly: InternalsVisibleTo ("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Library,PublicKey=00240000048000009400000006020000002400005253413100040000010001006379aaef112fa0342688938babd601397fb12f83046786c2568e997044049adac4e82d258c4e1edb011d4ebde8dfff5019405b2552fea9bba3ddbfe7df94dbe0e4f8e035c7673c60438aab0874476e73969d198088b9f46714778c2c990207a7a9216e8146cdd7eeaf48019168c20ea743c0cb2d477786dc4ec61cbc6a80b29e")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.iOS,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1b9fe1b28008accb2dde038a3dba64f56d08f2169fb8aa41bfc4dab6ec6bc25ca3162875e4ffb7501c27f7048bae46ac836c323cd2fba90b173dadf8e6d731f88eaf008e6041649aa51023869df68b24b5e72576b2ffd52f875160c300d5c84547364d893ca2923bf0325edccac901b60e14d85de0a0d5d3a20d284fafbdfa0")]
-[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server.Android,PublicKey=00240000048000009400000006020000002400005253413100040000010001006379aaef112fa0342688938babd601397fb12f83046786c2568e997044049adac4e82d258c4e1edb011d4ebde8dfff5019405b2552fea9bba3ddbfe7df94dbe0e4f8e035c7673c60438aab0874476e73969d198088b9f46714778c2c990207a7a9216e8146cdd7eeaf48019168c20ea743c0cb2d477786dc4ec61cbc6a80b29e")]
-[assembly: InternalsVisibleTo ("Tests,PublicKey=0024000004800000940000000602000000240000525341310004000001000100b930098aa349ada91b5b5e04b74afb3b141768bf24cd9cce9625f5ae2ac75c448b0f7881c83d0730f35dfc73b5fccc99e817bdece3953909d9c76ea901aeb99b24771054d1145194e0911753642979ab525f5ca233a292c8ba563d9bbc0f8bfaa4b83bc3ec5865d9f73c17d1c30bc519757a9c9b3061f4d992d496515cabdbd3")]
\ No newline at end of file
+[assembly: InternalsVisibleTo ("System.Net.Mqtt.Server, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo ("Tests, PublicKey=" + ThisAssembly.PublicKey)]
+[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2,PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7")]
+#pragma warning restore 0436
\ No newline at end of file
diff --git a/src/Server/Server.csproj b/src/Server/Server.csproj
index 0f52b3e7..4b43f1be 100644
--- a/src/Server/Server.csproj
+++ b/src/Server/Server.csproj
@@ -3,26 +3,16 @@
- AnyCPU
{1397EC83-6D03-4D81-95D5-5D11C766C43A}
- Library
- Properties
System.Net.Mqtt.Server
System.Net.Mqtt.Server.Portable
v4.5
- 512
{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Profile111
v4.5
-
- true
-
-
- Hermes.snk
-
@@ -46,9 +36,6 @@
-
- Properties\GlobalAssemblyInfo.cs
-
@@ -83,7 +70,6 @@
Hermes.licenseheader
-
@@ -105,11 +91,11 @@
-
+
This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
+
\ No newline at end of file
diff --git a/src/Server/packages.config b/src/Server/packages.config
index 5459062f..c5365509 100644
--- a/src/Server/packages.config
+++ b/src/Server/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Tests/Hermes.snk b/src/Tests/Hermes.snk
deleted file mode 100644
index d22af170..00000000
Binary files a/src/Tests/Hermes.snk and /dev/null differ
diff --git a/src/Tests/Properties/AssemblyInfo.cs b/src/Tests/Properties/AssemblyInfo.cs
index 978f53a2..8ded2c9a 100644
--- a/src/Tests/Properties/AssemblyInfo.cs
+++ b/src/Tests/Properties/AssemblyInfo.cs
@@ -1,22 +1,3 @@
-/*
- Copyright 2014 NETFX
+using System.Reflection;
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-*/
-
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-[assembly: AssemblyTitle("Tests")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Tests")]
-[assembly: AssemblyCopyright("Copyright © 2014")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
\ No newline at end of file
+[assembly: AssemblyTitle("Tests")]
\ No newline at end of file
diff --git a/src/Tests/Tests.csproj b/src/Tests/Tests.csproj
index 5f9a1849..fac7af6d 100644
--- a/src/Tests/Tests.csproj
+++ b/src/Tests/Tests.csproj
@@ -3,21 +3,12 @@
- AnyCPU
{CC70B0BB-EC87-45D0-A4AE-2462F99D7573}
- Library
- Properties
Tests
Tests
v4.5
- 512
-
-
-
- true
-
-
- Hermes.snk
+
+
@@ -120,6 +111,9 @@
Hermes.licenseheader
+
+ Hermes.snk
+
Always
@@ -358,7 +352,6 @@
Always
-
@@ -366,4 +359,11 @@
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
\ No newline at end of file
diff --git a/src/Tests/packages.config b/src/Tests/packages.config
index 1b5dcb9d..9cdbb748 100644
--- a/src/Tests/packages.config
+++ b/src/Tests/packages.config
@@ -9,6 +9,7 @@
http://www.apache.org/licenses/LICENSE-2.0
-->
+
diff --git a/xbuild.proj b/xbuild.proj
deleted file mode 100644
index 9aa67f7b..00000000
--- a/xbuild.proj
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
- Build
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file