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