@@ -1,5 +1,7 @@ | |||||
## Ignore Visual Studio temporary files, build results, and | ## Ignore Visual Studio temporary files, build results, and | ||||
## files generated by popular Visual Studio add-ons. | ## files generated by popular Visual Studio add-ons. | ||||
## | |||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore | |||||
# User-specific files | # User-specific files | ||||
*.suo | *.suo | ||||
@@ -15,12 +17,12 @@ | |||||
[Dd]ebugPublic/ | [Dd]ebugPublic/ | ||||
[Rr]elease/ | [Rr]elease/ | ||||
[Rr]eleases/ | [Rr]eleases/ | ||||
[Xx]64/ | |||||
[Xx]86/ | |||||
[Bb]uild/ | |||||
x64/ | |||||
x86/ | |||||
bld/ | bld/ | ||||
[Bb]in/ | [Bb]in/ | ||||
[Oo]bj/ | [Oo]bj/ | ||||
[Ll]og/ | |||||
# Visual Studio 2015 cache/options directory | # Visual Studio 2015 cache/options directory | ||||
.vs/ | .vs/ | ||||
@@ -40,9 +42,11 @@ TestResult.xml | |||||
[Rr]eleasePS/ | [Rr]eleasePS/ | ||||
dlldata.c | dlldata.c | ||||
# DNX | |||||
# .NET Core | |||||
project.lock.json | project.lock.json | ||||
project.fragment.lock.json | |||||
artifacts/ | artifacts/ | ||||
**/Properties/launchSettings.json | |||||
*_i.c | *_i.c | ||||
*_p.c | *_p.c | ||||
@@ -81,6 +85,7 @@ ipch/ | |||||
*.sdf | *.sdf | ||||
*.cachefile | *.cachefile | ||||
*.VC.db | *.VC.db | ||||
*.VC.VC.opendb | |||||
# Visual Studio profiler | # Visual Studio profiler | ||||
*.psess | *.psess | ||||
@@ -108,6 +113,10 @@ _TeamCity* | |||||
# DotCover is a Code Coverage Tool | # DotCover is a Code Coverage Tool | ||||
*.dotCover | *.dotCover | ||||
# Visual Studio code coverage results | |||||
*.coverage | |||||
*.coveragexml | |||||
# NCrunch | # NCrunch | ||||
_NCrunch_* | _NCrunch_* | ||||
.*crunch*.local.xml | .*crunch*.local.xml | ||||
@@ -139,13 +148,16 @@ publish/ | |||||
# Publish Web Output | # Publish Web Output | ||||
*.[Pp]ublish.xml | *.[Pp]ublish.xml | ||||
*.azurePubxml | *.azurePubxml | ||||
# TODO: Un-comment the next line if you do not want to checkin | |||||
# your web deploy settings because they may include unencrypted | |||||
# passwords | |||||
#*.pubxml | |||||
# TODO: Comment the next line if you want to checkin your web deploy settings | |||||
# but database connection strings (with potential passwords) will be unencrypted | |||||
*.pubxml | |||||
*.publishproj | *.publishproj | ||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to | |||||
# checkin your Azure Web App publish settings, but sensitive information contained | |||||
# in these scripts will be unencrypted | |||||
PublishScripts/ | |||||
# NuGet Packages | # NuGet Packages | ||||
*.nupkg | *.nupkg | ||||
# The packages folder can be ignored because of Package Restore | # The packages folder can be ignored because of Package Restore | ||||
@@ -154,7 +166,7 @@ publish/ | |||||
!**/packages/build/ | !**/packages/build/ | ||||
# Uncomment if necessary however generally it will be regenerated when needed | # Uncomment if necessary however generally it will be regenerated when needed | ||||
#!**/packages/repositories.config | #!**/packages/repositories.config | ||||
# NuGet v3's project.json files produces more ignoreable files | |||||
# NuGet v3's project.json files produces more ignorable files | |||||
*.nuget.props | *.nuget.props | ||||
*.nuget.targets | *.nuget.targets | ||||
@@ -166,12 +178,11 @@ csx/ | |||||
ecf/ | ecf/ | ||||
rcf/ | rcf/ | ||||
# Microsoft Azure ApplicationInsights config file | |||||
ApplicationInsights.config | |||||
# Windows Store app package directory | |||||
# Windows Store app package directories and files | |||||
AppPackages/ | AppPackages/ | ||||
BundleArtifacts/ | BundleArtifacts/ | ||||
Package.StoreAssociation.xml | |||||
_pkginfo.txt | |||||
# Visual Studio cache files | # Visual Studio cache files | ||||
# files ending in .cache can be ignored | # files ending in .cache can be ignored | ||||
@@ -181,16 +192,19 @@ BundleArtifacts/ | |||||
# Others | # Others | ||||
ClientBin/ | ClientBin/ | ||||
[Ss]tyle[Cc]op.* | |||||
~$* | ~$* | ||||
*~ | *~ | ||||
*.dbmdl | *.dbmdl | ||||
*.dbproj.schemaview | *.dbproj.schemaview | ||||
*.jfm | |||||
*.pfx | *.pfx | ||||
*.publishsettings | *.publishsettings | ||||
node_modules/ | |||||
orleans.codegen.cs | orleans.codegen.cs | ||||
# Since there are multiple workflows, uncomment next line to ignore bower_components | |||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) | |||||
#bower_components/ | |||||
# RIA/Silverlight projects | # RIA/Silverlight projects | ||||
Generated_Code/ | Generated_Code/ | ||||
@@ -205,6 +219,7 @@ UpgradeLog*.htm | |||||
# SQL Server files | # SQL Server files | ||||
*.mdf | *.mdf | ||||
*.ldf | *.ldf | ||||
*.ndf | |||||
# Business Intelligence projects | # Business Intelligence projects | ||||
*.rdl.data | *.rdl.data | ||||
@@ -219,6 +234,10 @@ FakesAssemblies/ | |||||
# Node.js Tools for Visual Studio | # Node.js Tools for Visual Studio | ||||
.ntvs_analysis.dat | .ntvs_analysis.dat | ||||
node_modules/ | |||||
# Typescript v1 declaration files | |||||
typings/ | |||||
# Visual Studio 6 build log | # Visual Studio 6 build log | ||||
*.plg | *.plg | ||||
@@ -226,6 +245,9 @@ FakesAssemblies/ | |||||
# Visual Studio 6 workspace options file | # Visual Studio 6 workspace options file | ||||
*.opt | *.opt | ||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) | |||||
*.vbw | |||||
# Visual Studio LightSwitch build output | # Visual Studio LightSwitch build output | ||||
**/*.HTMLClient/GeneratedArtifacts | **/*.HTMLClient/GeneratedArtifacts | ||||
**/*.DesktopClient/GeneratedArtifacts | **/*.DesktopClient/GeneratedArtifacts | ||||
@@ -234,13 +256,34 @@ FakesAssemblies/ | |||||
**/*.Server/ModelManifest.xml | **/*.Server/ModelManifest.xml | ||||
_Pvt_Extensions | _Pvt_Extensions | ||||
# LightSwitch generated files | |||||
GeneratedArtifacts/ | |||||
ModelManifest.xml | |||||
# Paket dependency manager | # Paket dependency manager | ||||
.paket/paket.exe | .paket/paket.exe | ||||
paket-files/ | |||||
# FAKE - F# Make | # FAKE - F# Make | ||||
.fake/ | .fake/ | ||||
nuget.exe | |||||
# JetBrains Rider | |||||
.idea/ | |||||
*.sln.iml | |||||
# CodeRush | |||||
.cr/ | |||||
# Python Tools for Visual Studio (PTVS) | |||||
__pycache__/ | |||||
*.pyc | |||||
# Cake - Uncomment if you are using it | |||||
# tools/** | |||||
# !tools/packages.config | |||||
# Telerik's JustMock configuration file | |||||
*.jmconfig | |||||
# BizTalk build output | |||||
*.btp.cs | |||||
*.btm.cs | |||||
*.odx.cs | |||||
*.xsd.cs | |||||
Build/nuget.exe |
@@ -0,0 +1,47 @@ | |||||
<?xml version="1.0"?> | |||||
<package > | |||||
<metadata> | |||||
<id>MQTTnet</id> | |||||
<version>2.1.4</version> | |||||
<authors>Christian Kratky</authors> | |||||
<owners>Christian Kratky</owners> | |||||
<licenseUrl>https://github.com/chkr1011/MQTTnet/blob/master/LICENSE</licenseUrl> | |||||
<projectUrl>https://github.com/chkr1011/MQTTnet</projectUrl> | |||||
<iconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</iconUrl> | |||||
<requireLicenseAcceptance>false</requireLicenseAcceptance> | |||||
<description>MQTTnet is a .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker).</description> | |||||
<releaseNotes>* [.NET Standard] Added support for .NET Standard 1.3 (Thanks to 1iveowl) | |||||
* [Server] Added an even which allows processing of all received messages from the clients | |||||
* [Server] Fixed an issue when stopping the server | |||||
</releaseNotes> | |||||
<copyright>Copyright Christian Kratky 2016-2017</copyright> | |||||
<tags>MQTT MQTTClient MQTTServer MQTTBroker Broker</tags> | |||||
<dependencies> | |||||
<group targetFramework="netstandard1.3"> | |||||
<dependency id="NETStandard.Library" version="1.6.1" /> | |||||
<dependency id="System.Net.Security" version="4.3.1" /> | |||||
</group> | |||||
<group targetFramework="uap10.0"> | |||||
<dependency id="Microsoft.NETCore.UniversalWindowsPlatform" version="5.3.3" /> | |||||
</group> | |||||
</dependencies> | |||||
</metadata> | |||||
<files> | |||||
<!-- .NET Standard 1.3 --> | |||||
<file src="..\Frameworks\MQTTnet.Netstandard\bin\Release\netstandard1.3\MQTTnet.Core.*" target="lib\netstandard1.3\"/> | |||||
<file src="..\Frameworks\MQTTnet.Netstandard\bin\Release\netstandard1.3\MQTTnet.*" target="lib\netstandard1.3\"/> | |||||
<!-- Universal Windows --> | |||||
<file src="..\Frameworks\MQTTnet.UniversalWindows\bin\Release\MQTTnet.Core.*" target="lib\uap10.0\"/> | |||||
<file src="..\Frameworks\MQTTnet.UniversalWindows\bin\Release\MQTTnet.*" target="lib\uap10.0\"/> | |||||
<!-- .NET Framework --> | |||||
<file src="..\Frameworks\MQTTnet.NetFramework\bin\Release\MQTTnet.Core.*" target="lib\net45\"/> | |||||
<file src="..\Frameworks\MQTTnet.NetFramework\bin\Release\MQTTnet.*" target="lib\net45\"/> | |||||
</files> | |||||
</package> |
@@ -0,0 +1,12 @@ | |||||
param([string]$version) | |||||
if ([string]::IsNullOrEmpty($version)) {$version = "0.0.1"} | |||||
$msbuild = "MSBuild.exe" | |||||
&$msbuild ..\Frameworks\MQTTnet.NetFramework\MQTTnet.NetFramework.csproj /t:Build /p:Configuration="Release" | |||||
&$msbuild ..\Frameworks\MQTTnet.Netstandard\MQTTnet.Netstandard.csproj /t:Build /p:Configuration="Release" | |||||
&$msbuild ..\Frameworks\MQTTnet.UniversalWindows\MQTTnet.UniversalWindows.csproj /t:Build /p:Configuration="Release" | |||||
Remove-Item .\NuGet -Force -Recurse | |||||
New-Item -ItemType Directory -Force -Path .\NuGet | |||||
.\NuGet.exe pack MQTTnet.nuspec -Verbosity detailed -Symbols -OutputDir "NuGet" -Version $version |
@@ -1,34 +0,0 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>netcoreapp1.1</TargetFramework> | |||||
<Authors>Christian Kratky</Authors> | |||||
<Company>Christian Kratky</Company> | |||||
<Product>MQTTnet</Product> | |||||
<Description>MQTTnet is a .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker).</Description> | |||||
<Copyright>Copyright © Christian Kratky 2016-2017</Copyright> | |||||
<Version>2.1.1.0</Version> | |||||
<AssemblyVersion>2.1.1.0</AssemblyVersion> | |||||
<FileVersion>2.1.1.0</FileVersion> | |||||
<GeneratePackageOnBuild>False</GeneratePackageOnBuild> | |||||
<AssemblyName>MQTTnet</AssemblyName> | |||||
<RootNamespace>MQTTnet</RootNamespace> | |||||
<PackageId>MQTTnet.NetCore</PackageId> | |||||
<PackageProjectUrl>https://github.com/chkr1011/MQTTnet</PackageProjectUrl> | |||||
<RepositoryUrl>https://github.com/chkr1011/MQTTnet</RepositoryUrl> | |||||
<PackageTags>MQTT MQTTClient MQTTServer MQTTBroker Broker</PackageTags> | |||||
<PackageIconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</PackageIconUrl> | |||||
<PackageLicenseUrl>https://github.com/chkr1011/MQTTnet/blob/master/LICENSE</PackageLicenseUrl> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Any CPU|AnyCPU'" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Any CPU|x64'" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Any CPU|x86'" /> | |||||
<ItemGroup> | |||||
<ProjectReference Include="..\..\MQTTnet.Core\MQTTnet.Core.csproj" /> | |||||
</ItemGroup> | |||||
</Project> |
@@ -63,6 +63,7 @@ namespace MQTTnet.Implementations | |||||
{ | { | ||||
_isRunning = false; | _isRunning = false; | ||||
_cancellationTokenSource?.Cancel(false); | |||||
_cancellationTokenSource?.Dispose(); | _cancellationTokenSource?.Dispose(); | ||||
_cancellationTokenSource = null; | _cancellationTokenSource = null; | ||||
@@ -88,7 +89,7 @@ namespace MQTTnet.Implementations | |||||
var clientAdapter = new MqttChannelCommunicationAdapter(new MqttTcpChannel(clientSocket, null), new DefaultMqttV311PacketSerializer()); | var clientAdapter = new MqttChannelCommunicationAdapter(new MqttTcpChannel(clientSocket, null), new DefaultMqttV311PacketSerializer()); | ||||
ClientConnected?.Invoke(this, new MqttClientConnectedEventArgs(clientSocket.RemoteEndPoint.ToString(), clientAdapter)); | ClientConnected?.Invoke(this, new MqttClientConnectedEventArgs(clientSocket.RemoteEndPoint.ToString(), clientAdapter)); | ||||
} | } | ||||
catch (Exception exception) | |||||
catch (Exception exception) when (!(exception is ObjectDisposedException)) | |||||
{ | { | ||||
MqttTrace.Error(nameof(MqttServerAdapter), exception, "Error while acceping connection at default endpoint."); | MqttTrace.Error(nameof(MqttServerAdapter), exception, "Error while acceping connection at default endpoint."); | ||||
} | } | ||||
@@ -11,5 +11,5 @@ using System.Runtime.InteropServices; | |||||
[assembly: AssemblyCulture("")] | [assembly: AssemblyCulture("")] | ||||
[assembly: ComVisible(false)] | [assembly: ComVisible(false)] | ||||
[assembly: Guid("a480ef90-0eaa-4d9a-b271-47a9c47f6f7d")] | [assembly: Guid("a480ef90-0eaa-4d9a-b271-47a9c47f6f7d")] | ||||
[assembly: AssemblyVersion("2.1.1.0")] | |||||
[assembly: AssemblyFileVersion("2.1.1.0")] | |||||
[assembly: AssemblyVersion("2.1.4.0")] | |||||
[assembly: AssemblyFileVersion("2.1.4.0")] |
@@ -61,6 +61,7 @@ namespace MQTTnet.Implementations | |||||
{ | { | ||||
_isRunning = false; | _isRunning = false; | ||||
_cancellationTokenSource?.Cancel(false); | |||||
_cancellationTokenSource?.Dispose(); | _cancellationTokenSource?.Dispose(); | ||||
_cancellationTokenSource = null; | _cancellationTokenSource = null; | ||||
@@ -0,0 +1,29 @@ | |||||
<Project Sdk="Microsoft.NET.Sdk"> | |||||
<PropertyGroup> | |||||
<TargetFramework>netstandard1.3</TargetFramework> | |||||
<AssemblyName>MQTTnet</AssemblyName> | |||||
<RootNamespace>MQTTnet</RootNamespace> | |||||
<AssemblyVersion>2.1.4.0</AssemblyVersion> | |||||
<FileVersion>2.1.4.0</FileVersion> | |||||
<Version>0.0.0.0</Version> | |||||
<Company /> | |||||
<Product /> | |||||
<Description /> | |||||
<Authors /> | |||||
<PackageId /> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x86'" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" /> | |||||
<ItemGroup> | |||||
<ProjectReference Include="..\..\MQTTnet.Core\MQTTnet.Core.csproj" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<PackageReference Include="System.Net.Security" Version="4.3.1" /> | |||||
</ItemGroup> | |||||
</Project> |
@@ -11,11 +11,12 @@ | |||||
<AssemblyName>MQTTnet</AssemblyName> | <AssemblyName>MQTTnet</AssemblyName> | ||||
<DefaultLanguage>en-US</DefaultLanguage> | <DefaultLanguage>en-US</DefaultLanguage> | ||||
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier> | <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier> | ||||
<TargetPlatformVersion>10.0.14393.0</TargetPlatformVersion> | |||||
<TargetPlatformVersion>10.0.15063.0</TargetPlatformVersion> | |||||
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion> | <TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion> | ||||
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion> | <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion> | ||||
<FileAlignment>512</FileAlignment> | <FileAlignment>512</FileAlignment> | ||||
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | ||||
<RuntimeIdentifiers>win10-arm;win10-arm-aot;win10-x86;win10-x86-aot;win10-x64;win10-x64-aot</RuntimeIdentifiers> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | ||||
<PlatformTarget>AnyCPU</PlatformTarget> | <PlatformTarget>AnyCPU</PlatformTarget> | ||||
@@ -108,10 +109,6 @@ | |||||
<GenerateLibraryLayout>false</GenerateLibraryLayout> | <GenerateLibraryLayout>false</GenerateLibraryLayout> | ||||
<DocumentationFile>bin\x64\Release\MQTTnet.XML</DocumentationFile> | <DocumentationFile>bin\x64\Release\MQTTnet.XML</DocumentationFile> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
<ItemGroup> | |||||
<!-- A reference to the entire .Net Framework and Windows SDK are automatically included --> | |||||
<None Include="project.json" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | <ItemGroup> | ||||
<Compile Include="MqttClientFactory.cs" /> | <Compile Include="MqttClientFactory.cs" /> | ||||
<Compile Include="Implementations\MqttServerAdapter.cs" /> | <Compile Include="Implementations\MqttServerAdapter.cs" /> | ||||
@@ -126,6 +123,11 @@ | |||||
<Name>MQTTnet.Core</Name> | <Name>MQTTnet.Core</Name> | ||||
</ProjectReference> | </ProjectReference> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | |||||
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform"> | |||||
<Version>5.3.3</Version> | |||||
</PackageReference> | |||||
</ItemGroup> | |||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' "> | <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' "> | ||||
<VisualStudioVersion>14.0</VisualStudioVersion> | <VisualStudioVersion>14.0</VisualStudioVersion> | ||||
</PropertyGroup> | </PropertyGroup> | ||||
@@ -10,5 +10,5 @@ using System.Runtime.InteropServices; | |||||
[assembly: AssemblyTrademark("")] | [assembly: AssemblyTrademark("")] | ||||
[assembly: AssemblyCulture("")] | [assembly: AssemblyCulture("")] | ||||
[assembly: ComVisible(false)] | [assembly: ComVisible(false)] | ||||
[assembly: AssemblyVersion("2.1.1.0")] | |||||
[assembly: AssemblyFileVersion("2.1.1.0")] | |||||
[assembly: AssemblyVersion("2.1.4.0")] | |||||
[assembly: AssemblyFileVersion("2.1.4.0")] |
@@ -1,17 +0,0 @@ | |||||
{ | |||||
"dependencies": { | |||||
"Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0" | |||||
}, | |||||
"frameworks": { | |||||
"uap10.0": {} | |||||
}, | |||||
"runtimes": { | |||||
"win10": {}, | |||||
"win10-arm": {}, | |||||
"win10-arm-aot": {}, | |||||
"win10-x86": {}, | |||||
"win10-x86-aot": {}, | |||||
"win10-x64": {}, | |||||
"win10-x64-aot": {} | |||||
} | |||||
} |
@@ -1,6 +1,6 @@ | |||||
using System; | using System; | ||||
namespace MQTTnet.Core | |||||
namespace MQTTnet.Core.Client | |||||
{ | { | ||||
public sealed class MqttApplicationMessageReceivedEventArgs : EventArgs | public sealed class MqttApplicationMessageReceivedEventArgs : EventArgs | ||||
{ | { |
@@ -185,7 +185,10 @@ namespace MQTTnet.Core.Client | |||||
} | } | ||||
finally | finally | ||||
{ | { | ||||
_cancellationTokenSource?.Cancel(); | |||||
_cancellationTokenSource?.Cancel(false); | |||||
_cancellationTokenSource?.Dispose(); | |||||
_cancellationTokenSource = null; | |||||
IsConnected = false; | IsConnected = false; | ||||
Disconnected?.Invoke(this, EventArgs.Empty); | Disconnected?.Invoke(this, EventArgs.Empty); | ||||
} | } | ||||
@@ -234,13 +237,7 @@ namespace MQTTnet.Core.Client | |||||
_processedPublishPackets.Add(publishPacket.PacketIdentifier); | _processedPublishPackets.Add(publishPacket.PacketIdentifier); | ||||
} | } | ||||
var applicationMessage = new MqttApplicationMessage( | |||||
publishPacket.Topic, | |||||
publishPacket.Payload, | |||||
publishPacket.QualityOfServiceLevel, | |||||
publishPacket.Retain | |||||
); | |||||
var applicationMessage = publishPacket.ToApplicationMessage(); | |||||
ApplicationMessageReceived?.Invoke(this, new MqttApplicationMessageReceivedEventArgs(applicationMessage)); | ApplicationMessageReceived?.Invoke(this, new MqttApplicationMessageReceivedEventArgs(applicationMessage)); | ||||
} | } | ||||
@@ -4,6 +4,16 @@ namespace MQTTnet.Core.Internal | |||||
{ | { | ||||
internal static class MqttApplicationMessageExtensions | internal static class MqttApplicationMessageExtensions | ||||
{ | { | ||||
public static MqttApplicationMessage ToApplicationMessage(this MqttPublishPacket publishPacket) | |||||
{ | |||||
return new MqttApplicationMessage( | |||||
publishPacket.Topic, | |||||
publishPacket.Payload, | |||||
publishPacket.QualityOfServiceLevel, | |||||
publishPacket.Retain | |||||
); | |||||
} | |||||
public static MqttPublishPacket ToPublishPacket(this MqttApplicationMessage applicationMessage) | public static MqttPublishPacket ToPublishPacket(this MqttApplicationMessage applicationMessage) | ||||
{ | { | ||||
if (applicationMessage == null) | if (applicationMessage == null) | ||||
@@ -5,20 +5,20 @@ | |||||
<AssemblyName>MQTTnet.Core</AssemblyName> | <AssemblyName>MQTTnet.Core</AssemblyName> | ||||
<RootNamespace>MQTTnet.Core</RootNamespace> | <RootNamespace>MQTTnet.Core</RootNamespace> | ||||
<GeneratePackageOnBuild>False</GeneratePackageOnBuild> | <GeneratePackageOnBuild>False</GeneratePackageOnBuild> | ||||
<Description>MQTTnet is a .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker).</Description> | |||||
<Product>MQTTnet</Product> | |||||
<Company>Christian Kratky</Company> | |||||
<Authors>Christian Kratky</Authors> | |||||
<Version>2.1.2.0</Version> | |||||
<PackageId>MQTTnet.Core</PackageId> | |||||
<Copyright>Copyright © Christian Kratky 2016-2017</Copyright> | |||||
<PackageProjectUrl>https://github.com/chkr1011/MQTTnet</PackageProjectUrl> | |||||
<PackageIconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</PackageIconUrl> | |||||
<RepositoryUrl>https://github.com/chkr1011/MQTTnet</RepositoryUrl> | |||||
<PackageTags>MQTT MQTTClient MQTTServer MQTTBroker Broker</PackageTags> | |||||
<FileVersion>2.1.2.0</FileVersion> | |||||
<AssemblyVersion>2.1.2.0</AssemblyVersion> | |||||
<PackageLicenseUrl>https://github.com/chkr1011/MQTTnet/blob/master/LICENSE</PackageLicenseUrl> | |||||
<Description></Description> | |||||
<Product></Product> | |||||
<Company></Company> | |||||
<Authors></Authors> | |||||
<Version>0.0.0.0</Version> | |||||
<PackageId></PackageId> | |||||
<Copyright></Copyright> | |||||
<PackageProjectUrl></PackageProjectUrl> | |||||
<PackageIconUrl></PackageIconUrl> | |||||
<RepositoryUrl></RepositoryUrl> | |||||
<PackageTags></PackageTags> | |||||
<FileVersion>2.1.4.0</FileVersion> | |||||
<AssemblyVersion>2.1.4.0</AssemblyVersion> | |||||
<PackageLicenseUrl></PackageLicenseUrl> | |||||
</PropertyGroup> | </PropertyGroup> | ||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Any CPU|AnyCPU'" /> | <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Any CPU|AnyCPU'" /> | ||||
@@ -0,0 +1,17 @@ | |||||
using System; | |||||
namespace MQTTnet.Core.Server | |||||
{ | |||||
public sealed class MqttApplicationMessageReceivedEventArgs : EventArgs | |||||
{ | |||||
public MqttApplicationMessageReceivedEventArgs(string clientId, MqttApplicationMessage applicationMessage) | |||||
{ | |||||
ClientId = clientId; | |||||
ApplicationMessage = applicationMessage ?? throw new ArgumentNullException(nameof(applicationMessage)); | |||||
} | |||||
public string ClientId { get; } | |||||
public MqttApplicationMessage ApplicationMessage { get; } | |||||
} | |||||
} |
@@ -19,20 +19,23 @@ namespace MQTTnet.Core.Server | |||||
private readonly MqttClientMessageQueue _messageQueue; | private readonly MqttClientMessageQueue _messageQueue; | ||||
private readonly Action<MqttClientSession, MqttPublishPacket> _publishPacketReceivedCallback; | private readonly Action<MqttClientSession, MqttPublishPacket> _publishPacketReceivedCallback; | ||||
private readonly MqttServerOptions _options; | private readonly MqttServerOptions _options; | ||||
private CancellationTokenSource _cancellationTokenSource; | private CancellationTokenSource _cancellationTokenSource; | ||||
private IMqttCommunicationAdapter _adapter; | private IMqttCommunicationAdapter _adapter; | ||||
private string _identifier; | private string _identifier; | ||||
private MqttApplicationMessage _willApplicationMessage; | private MqttApplicationMessage _willApplicationMessage; | ||||
public MqttClientSession(MqttServerOptions options, Action<MqttClientSession, MqttPublishPacket> publishPacketReceivedCallback) | |||||
public MqttClientSession(string clientId, MqttServerOptions options, Action<MqttClientSession, MqttPublishPacket> publishPacketReceivedCallback) | |||||
{ | { | ||||
ClientId = clientId; | |||||
_options = options ?? throw new ArgumentNullException(nameof(options)); | _options = options ?? throw new ArgumentNullException(nameof(options)); | ||||
_publishPacketReceivedCallback = publishPacketReceivedCallback ?? throw new ArgumentNullException(nameof(publishPacketReceivedCallback)); | _publishPacketReceivedCallback = publishPacketReceivedCallback ?? throw new ArgumentNullException(nameof(publishPacketReceivedCallback)); | ||||
_messageQueue = new MqttClientMessageQueue(options); | _messageQueue = new MqttClientMessageQueue(options); | ||||
} | } | ||||
public string ClientId { get; } | |||||
public bool IsConnected => _adapter != null; | public bool IsConnected => _adapter != null; | ||||
public async Task RunAsync(string identifier, MqttApplicationMessage willApplicationMessage, IMqttCommunicationAdapter adapter) | public async Task RunAsync(string identifier, MqttApplicationMessage willApplicationMessage, IMqttCommunicationAdapter adapter) | ||||
@@ -5,6 +5,7 @@ using System.Threading.Tasks; | |||||
using MQTTnet.Core.Adapter; | using MQTTnet.Core.Adapter; | ||||
using MQTTnet.Core.Diagnostics; | using MQTTnet.Core.Diagnostics; | ||||
using MQTTnet.Core.Exceptions; | using MQTTnet.Core.Exceptions; | ||||
using MQTTnet.Core.Internal; | |||||
using MQTTnet.Core.Packets; | using MQTTnet.Core.Packets; | ||||
using MQTTnet.Core.Protocol; | using MQTTnet.Core.Protocol; | ||||
@@ -21,6 +22,8 @@ namespace MQTTnet.Core.Server | |||||
_options = options ?? throw new ArgumentNullException(nameof(options)); | _options = options ?? throw new ArgumentNullException(nameof(options)); | ||||
} | } | ||||
public event EventHandler<MqttApplicationMessageReceivedEventArgs> ApplicationMessageReceived; | |||||
public async Task RunClientSessionAsync(MqttClientConnectedEventArgs eventArgs) | public async Task RunClientSessionAsync(MqttClientConnectedEventArgs eventArgs) | ||||
{ | { | ||||
try | try | ||||
@@ -114,7 +117,7 @@ namespace MQTTnet.Core.Server | |||||
{ | { | ||||
isExistingSession = false; | isExistingSession = false; | ||||
clientSession = new MqttClientSession(_options, DispatchPublishPacket); | |||||
clientSession = new MqttClientSession(connectPacket.ClientId, _options, DispatchPublishPacket); | |||||
_clientSessions[connectPacket.ClientId] = clientSession; | _clientSessions[connectPacket.ClientId] = clientSession; | ||||
MqttTrace.Verbose(nameof(MqttClientSessionsManager), $"Created a new session for client '{connectPacket.ClientId}'."); | MqttTrace.Verbose(nameof(MqttClientSessionsManager), $"Created a new session for client '{connectPacket.ClientId}'."); | ||||
@@ -126,6 +129,9 @@ namespace MQTTnet.Core.Server | |||||
private void DispatchPublishPacket(MqttClientSession senderClientSession, MqttPublishPacket publishPacket) | private void DispatchPublishPacket(MqttClientSession senderClientSession, MqttPublishPacket publishPacket) | ||||
{ | { | ||||
var eventArgs = new MqttApplicationMessageReceivedEventArgs(senderClientSession.ClientId, publishPacket.ToApplicationMessage()); | |||||
ApplicationMessageReceived?.Invoke(this, eventArgs); | |||||
foreach (var clientSession in _clientSessions.Values.ToList()) | foreach (var clientSession in _clientSessions.Values.ToList()) | ||||
{ | { | ||||
clientSession.EnqueuePublishPacket(senderClientSession, publishPacket); | clientSession.EnqueuePublishPacket(senderClientSession, publishPacket); | ||||
@@ -21,6 +21,7 @@ namespace MQTTnet.Core.Server | |||||
_adapters = adapters ?? throw new ArgumentNullException(nameof(adapters)); | _adapters = adapters ?? throw new ArgumentNullException(nameof(adapters)); | ||||
_clientSessionsManager = new MqttClientSessionsManager(options); | _clientSessionsManager = new MqttClientSessionsManager(options); | ||||
_clientSessionsManager.ApplicationMessageReceived += (s, e) => ApplicationMessageReceived?.Invoke(s, e); | |||||
} | } | ||||
public IList<string> GetConnectedClients() | public IList<string> GetConnectedClients() | ||||
@@ -30,6 +31,8 @@ namespace MQTTnet.Core.Server | |||||
public event EventHandler<MqttClientConnectedEventArgs> ClientConnected; | public event EventHandler<MqttClientConnectedEventArgs> ClientConnected; | ||||
public event EventHandler<MqttApplicationMessageReceivedEventArgs> ApplicationMessageReceived; | |||||
public void InjectClient(string identifier, IMqttCommunicationAdapter adapter) | public void InjectClient(string identifier, IMqttCommunicationAdapter adapter) | ||||
{ | { | ||||
if (adapter == null) throw new ArgumentNullException(nameof(adapter)); | if (adapter == null) throw new ArgumentNullException(nameof(adapter)); | ||||
@@ -56,7 +59,8 @@ namespace MQTTnet.Core.Server | |||||
public void Stop() | public void Stop() | ||||
{ | { | ||||
_cancellationTokenSource?.Cancel(); | |||||
_cancellationTokenSource?.Cancel(false); | |||||
_cancellationTokenSource?.Dispose(); | |||||
_cancellationTokenSource = null; | _cancellationTokenSource = null; | ||||
foreach (var adapter in _adapters) | foreach (var adapter in _adapters) | ||||
@@ -1,56 +0,0 @@ | |||||
<?xml version="1.0"?> | |||||
<package > | |||||
<metadata> | |||||
<id>MQTTnet</id> | |||||
<version>2.1.3.0</version> | |||||
<authors>Christian Kratky</authors> | |||||
<owners>Christian Kratky</owners> | |||||
<licenseUrl>https://github.com/chkr1011/MQTTnet/blob/master/LICENSE</licenseUrl> | |||||
<projectUrl>https://github.com/chkr1011/MQTTnet</projectUrl> | |||||
<iconUrl>https://raw.githubusercontent.com/chkr1011/MQTTnet/master/Images/Logo_128x128.png</iconUrl> | |||||
<requireLicenseAcceptance>false</requireLicenseAcceptance> | |||||
<description>MQTTnet is a .NET library for MQTT based communication. It provides a MQTT client and a MQTT server (broker).</description> | |||||
<releaseNotes>* [Core] Any exception while accessing the underlying data source is now rethrown as "MqttCommunicationException". | |||||
* [Core] Extended exception information when an invalid packet type is received. | |||||
* [Server] Added TLS 1.2 support (but not for UWP) (thanks to Zazzmatazz) | |||||
* [Client] Added TLS 1.2 support (thanks to Zazzmatazz) | |||||
* [Core] Optimized async task management | |||||
* [Nuget] Fixed x64 files</releaseNotes> | |||||
<copyright>Copyright Christian Kratky 2016-2017</copyright> | |||||
<tags>MQTT MQTTClient MQTTServer MQTTBroker Broker</tags> | |||||
</metadata> | |||||
<files> | |||||
<!-- Universal Windows --> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\Release\MQTTnet.Core.dll" target="lib\uap10.0"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\Release\MQTTnet.dll" target="lib\uap10.0"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\Release\MQTTnet.pri" target="lib\uap10.0"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\ARM\Release\MQTTnet.Core.dll" target="lib\uap10.0-arm"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\ARM\Release\MQTTnet.dll" target="lib\uap10.0-arm"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\ARM\Release\MQTTnet.pri" target="lib\uap10.0-arm"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\x64\Release\MQTTnet.Core.dll" target="lib\uap10.0-x64"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\x64\Release\MQTTnet.dll" target="lib\uap10.0-x64"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\x64\Release\MQTTnet.pri" target="lib\uap10.0-x64"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\x86\Release\MQTTnet.Core.dll" target="lib\uap10.0-x86"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\x86\Release\MQTTnet.dll" target="lib\uap10.0-x86"/> | |||||
<file src=".\Frameworks\MQTTnet.UniversalWindows\bin\x86\Release\MQTTnet.pri" target="lib\uap10.0-x86"/> | |||||
<!-- .NET Framework --> | |||||
<file src=".\Frameworks\MQTTnet.NetFramework\bin\Release\MQTTnet.Core.dll" target="lib\net45"/> | |||||
<file src=".\Frameworks\MQTTnet.NetFramework\bin\Release\MQTTnet.dll" target="lib\net45"/> | |||||
<file src=".\Frameworks\MQTTnet.NetFramework\bin\x86\Release\MQTTnet.Core.dll" target="lib\net45-x86"/> | |||||
<file src=".\Frameworks\MQTTnet.NetFramework\bin\x86\Release\MQTTnet.dll" target="lib\net45-x86"/> | |||||
<file src=".\Frameworks\MQTTnet.NetFramework\bin\x64\Release\MQTTnet.Core.dll" target="lib\net45-x64"/> | |||||
<file src=".\Frameworks\MQTTnet.NetFramework\bin\x64\Release\MQTTnet.dll" target="lib\net45-x64"/> | |||||
<!-- .NET Core App --> | |||||
<file src=".\Frameworks\MQTTnet.NetCoreApp\bin\Release\netcoreapp1.1\MQTTnet.Core.dll" target="lib\netcoreapp1.1"/> | |||||
<file src=".\Frameworks\MQTTnet.NetCoreApp\bin\Release\netcoreapp1.1\MQTTnet.dll" target="lib\netcoreapp1.1"/> | |||||
</files> | |||||
</package> |
@@ -1,7 +1,7 @@ | |||||
| | ||||
Microsoft Visual Studio Solution File, Format Version 12.00 | Microsoft Visual Studio Solution File, Format Version 12.00 | ||||
# Visual Studio 15 | # Visual Studio 15 | ||||
VisualStudioVersion = 15.0.26430.12 | |||||
VisualStudioVersion = 15.0.26430.15 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | MinimumVisualStudioVersion = 10.0.40219.1 | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.Core.Tests", "Tests\MQTTnet.Core.Tests\MQTTnet.Core.Tests.csproj", "{A7FF0C91-25DE-4BA6-B39E-F54E8DADF1CC}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.Core.Tests", "Tests\MQTTnet.Core.Tests\MQTTnet.Core.Tests.csproj", "{A7FF0C91-25DE-4BA6-B39E-F54E8DADF1CC}" | ||||
EndProject | EndProject | ||||
@@ -13,19 +13,20 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{9248C2E1 | |||||
EndProject | EndProject | ||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Frameworks", "Frameworks", "{32A630A7-2598-41D7-B625-204CD906F5FB}" | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Frameworks", "Frameworks", "{32A630A7-2598-41D7-B625-204CD906F5FB}" | ||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.Core", "MQTTnet.Core\MQTTnet.Core.csproj", "{2ECB99E4-72D0-4C23-99BA-93D511D3967D}" | |||||
EndProject | |||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{002203AF-2565-4C0D-95ED-027FDEFE0C35}" | |||||
ProjectSection(SolutionItems) = preProject | |||||
MQTTnet.nuspec = MQTTnet.nuspec | |||||
EndProjectSection | |||||
EndProject | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MQTTnet.NetCoreApp", "Frameworks\MQTTnet.NetCoreApp\MQTTnet.NetCoreApp.csproj", "{1A1B7F51-5328-4395-9D9C-07D70965825E}" | |||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MQTTnet.Core", "MQTTnet.Core\MQTTnet.Core.csproj", "{2ECB99E4-72D0-4C23-99BA-93D511D3967D}" | |||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.TestApp.NetFramework", "Tests\MQTTnet.TestApp.NetFramework\MQTTnet.TestApp.NetFramework.csproj", "{D9D74F33-6943-49B2-B765-7BD589082098}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.TestApp.NetFramework", "Tests\MQTTnet.TestApp.NetFramework\MQTTnet.TestApp.NetFramework.csproj", "{D9D74F33-6943-49B2-B765-7BD589082098}" | ||||
EndProject | EndProject | ||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.TestApp.UniversalWindows", "Tests\MQTTnet.TestApp.UniversalWindows\MQTTnet.TestApp.UniversalWindows.csproj", "{FF1F72D6-9524-4422-9497-3CC0002216ED}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MQTTnet.TestApp.UniversalWindows", "Tests\MQTTnet.TestApp.UniversalWindows\MQTTnet.TestApp.UniversalWindows.csproj", "{FF1F72D6-9524-4422-9497-3CC0002216ED}" | ||||
EndProject | EndProject | ||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MQTTnet.NetStandard", "Frameworks\MQTTnet.Netstandard\MQTTnet.NetStandard.csproj", "{3587E506-55A2-4EB3-99C7-DC01E42D25D2}" | |||||
EndProject | |||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{67C28AC1-BC3A-420A-BE9C-FA2401431CF9}" | |||||
ProjectSection(SolutionItems) = preProject | |||||
Build\build.ps1 = Build\build.ps1 | |||||
Build\MQTTnet.nuspec = Build\MQTTnet.nuspec | |||||
EndProjectSection | |||||
EndProject | |||||
Global | Global | ||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
Debug|Any CPU = Debug|Any CPU | Debug|Any CPU = Debug|Any CPU | ||||
@@ -71,6 +72,7 @@ Global | |||||
{A480EF90-0EAA-4D9A-B271-47A9C47F6F7D}.Release|x86.ActiveCfg = Release|x86 | {A480EF90-0EAA-4D9A-B271-47A9C47F6F7D}.Release|x86.ActiveCfg = Release|x86 | ||||
{A480EF90-0EAA-4D9A-B271-47A9C47F6F7D}.Release|x86.Build.0 = Release|x86 | {A480EF90-0EAA-4D9A-B271-47A9C47F6F7D}.Release|x86.Build.0 = Release|x86 | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|ARM.ActiveCfg = Debug|ARM | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|ARM.ActiveCfg = Debug|ARM | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|ARM.Build.0 = Debug|ARM | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|ARM.Build.0 = Debug|ARM | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|x64.ActiveCfg = Debug|x64 | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|x64.ActiveCfg = Debug|x64 | ||||
@@ -78,6 +80,7 @@ Global | |||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|x86.ActiveCfg = Debug|x86 | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|x86.ActiveCfg = Debug|x86 | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|x86.Build.0 = Debug|x86 | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Debug|x86.Build.0 = Debug|x86 | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|Any CPU.ActiveCfg = Release|Any CPU | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|ARM.ActiveCfg = Release|ARM | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|ARM.ActiveCfg = Release|ARM | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|ARM.Build.0 = Release|ARM | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|ARM.Build.0 = Release|ARM | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|x64.ActiveCfg = Release|x64 | {BD60C727-D8E8-40C3-B8E3-C95A864AE611}.Release|x64.ActiveCfg = Release|x64 | ||||
@@ -100,22 +103,6 @@ Global | |||||
{2ECB99E4-72D0-4C23-99BA-93D511D3967D}.Release|x64.Build.0 = Release|x64 | {2ECB99E4-72D0-4C23-99BA-93D511D3967D}.Release|x64.Build.0 = Release|x64 | ||||
{2ECB99E4-72D0-4C23-99BA-93D511D3967D}.Release|x86.ActiveCfg = Release|x86 | {2ECB99E4-72D0-4C23-99BA-93D511D3967D}.Release|x86.ActiveCfg = Release|x86 | ||||
{2ECB99E4-72D0-4C23-99BA-93D511D3967D}.Release|x86.Build.0 = Release|x86 | {2ECB99E4-72D0-4C23-99BA-93D511D3967D}.Release|x86.Build.0 = Release|x86 | ||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|x64.ActiveCfg = Debug|x64 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|x64.Build.0 = Debug|x64 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|x86.ActiveCfg = Debug|x86 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Debug|x86.Build.0 = Debug|x86 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|ARM.Build.0 = Release|Any CPU | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|x64.ActiveCfg = Release|x64 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|x64.Build.0 = Release|x64 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|x86.ActiveCfg = Release|x86 | |||||
{1A1B7F51-5328-4395-9D9C-07D70965825E}.Release|x86.Build.0 = Release|x86 | |||||
{D9D74F33-6943-49B2-B765-7BD589082098}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | {D9D74F33-6943-49B2-B765-7BD589082098}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
{D9D74F33-6943-49B2-B765-7BD589082098}.Debug|Any CPU.Build.0 = Debug|Any CPU | {D9D74F33-6943-49B2-B765-7BD589082098}.Debug|Any CPU.Build.0 = Debug|Any CPU | ||||
{D9D74F33-6943-49B2-B765-7BD589082098}.Debug|ARM.ActiveCfg = Debug|Any CPU | {D9D74F33-6943-49B2-B765-7BD589082098}.Debug|ARM.ActiveCfg = Debug|Any CPU | ||||
@@ -133,6 +120,7 @@ Global | |||||
{D9D74F33-6943-49B2-B765-7BD589082098}.Release|x86.ActiveCfg = Release|x86 | {D9D74F33-6943-49B2-B765-7BD589082098}.Release|x86.ActiveCfg = Release|x86 | ||||
{D9D74F33-6943-49B2-B765-7BD589082098}.Release|x86.Build.0 = Release|x86 | {D9D74F33-6943-49B2-B765-7BD589082098}.Release|x86.Build.0 = Release|x86 | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|ARM.ActiveCfg = Debug|ARM | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|ARM.ActiveCfg = Debug|ARM | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|ARM.Build.0 = Debug|ARM | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|ARM.Build.0 = Debug|ARM | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|ARM.Deploy.0 = Debug|ARM | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|ARM.Deploy.0 = Debug|ARM | ||||
@@ -143,6 +131,7 @@ Global | |||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|x86.Build.0 = Debug|x86 | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|x86.Build.0 = Debug|x86 | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|x86.Deploy.0 = Debug|x86 | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Debug|x86.Deploy.0 = Debug|x86 | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|Any CPU.ActiveCfg = Release|Any CPU | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|Any CPU.ActiveCfg = Release|Any CPU | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|ARM.ActiveCfg = Release|ARM | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|ARM.ActiveCfg = Release|ARM | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|ARM.Build.0 = Release|ARM | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|ARM.Build.0 = Release|ARM | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|ARM.Deploy.0 = Release|ARM | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|ARM.Deploy.0 = Release|ARM | ||||
@@ -152,6 +141,22 @@ Global | |||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|x86.ActiveCfg = Release|x86 | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|x86.ActiveCfg = Release|x86 | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|x86.Build.0 = Release|x86 | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|x86.Build.0 = Release|x86 | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|x86.Deploy.0 = Release|x86 | {FF1F72D6-9524-4422-9497-3CC0002216ED}.Release|x86.Deploy.0 = Release|x86 | ||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|ARM.ActiveCfg = Debug|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|ARM.Build.0 = Debug|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|x64.ActiveCfg = Debug|x64 | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|x64.Build.0 = Debug|x64 | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|x86.ActiveCfg = Debug|x86 | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Debug|x86.Build.0 = Debug|x86 | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|Any CPU.Build.0 = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|ARM.ActiveCfg = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|ARM.Build.0 = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|x64.ActiveCfg = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|x64.Build.0 = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|x86.ActiveCfg = Release|Any CPU | |||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2}.Release|x86.Build.0 = Release|Any CPU | |||||
EndGlobalSection | EndGlobalSection | ||||
GlobalSection(SolutionProperties) = preSolution | GlobalSection(SolutionProperties) = preSolution | ||||
HideSolutionNode = FALSE | HideSolutionNode = FALSE | ||||
@@ -160,8 +165,8 @@ Global | |||||
{A7FF0C91-25DE-4BA6-B39E-F54E8DADF1CC} = {9248C2E1-B9D6-40BF-81EC-86004D7765B4} | {A7FF0C91-25DE-4BA6-B39E-F54E8DADF1CC} = {9248C2E1-B9D6-40BF-81EC-86004D7765B4} | ||||
{A480EF90-0EAA-4D9A-B271-47A9C47F6F7D} = {32A630A7-2598-41D7-B625-204CD906F5FB} | {A480EF90-0EAA-4D9A-B271-47A9C47F6F7D} = {32A630A7-2598-41D7-B625-204CD906F5FB} | ||||
{BD60C727-D8E8-40C3-B8E3-C95A864AE611} = {32A630A7-2598-41D7-B625-204CD906F5FB} | {BD60C727-D8E8-40C3-B8E3-C95A864AE611} = {32A630A7-2598-41D7-B625-204CD906F5FB} | ||||
{1A1B7F51-5328-4395-9D9C-07D70965825E} = {32A630A7-2598-41D7-B625-204CD906F5FB} | |||||
{D9D74F33-6943-49B2-B765-7BD589082098} = {9248C2E1-B9D6-40BF-81EC-86004D7765B4} | {D9D74F33-6943-49B2-B765-7BD589082098} = {9248C2E1-B9D6-40BF-81EC-86004D7765B4} | ||||
{FF1F72D6-9524-4422-9497-3CC0002216ED} = {9248C2E1-B9D6-40BF-81EC-86004D7765B4} | {FF1F72D6-9524-4422-9497-3CC0002216ED} = {9248C2E1-B9D6-40BF-81EC-86004D7765B4} | ||||
{3587E506-55A2-4EB3-99C7-DC01E42D25D2} = {32A630A7-2598-41D7-B625-204CD906F5FB} | |||||
EndGlobalSection | EndGlobalSection | ||||
EndGlobal | EndGlobal |
@@ -20,7 +20,7 @@ MQTTnet is a .NET library for MQTT based communication. It provides a MQTT clien | |||||
* Lightweight (only the low level implementation of MQTT, no overhead) | * Lightweight (only the low level implementation of MQTT, no overhead) | ||||
## Supported frameworks | ## Supported frameworks | ||||
* .NET Standard 1.1+ | |||||
* .NET Standard 1.3+ | |||||
* .NET Core 1.1+ | * .NET Core 1.1+ | ||||
* .NET Core App 1.1+ | * .NET Core App 1.1+ | ||||
* .NET Framework 4.5.2+ (x86, x64, AnyCPU) | * .NET Framework 4.5.2+ (x86, x64, AnyCPU) | ||||
@@ -45,7 +45,7 @@ If you use this library and want to see your project here please let me know. | |||||
# MqttClient | # MqttClient | ||||
## Example | ## Example | ||||
```c# | |||||
```csharp | |||||
var options = new MqttClientOptions | var options = new MqttClientOptions | ||||
{ | { | ||||
Server = "localhost" | Server = "localhost" | ||||
@@ -119,7 +119,7 @@ while (true) | |||||
## Example | ## Example | ||||
```c# | |||||
```csharp | |||||
var options = new MqttServerOptions | var options = new MqttServerOptions | ||||
{ | { | ||||
ConnectionValidator = p => | ConnectionValidator = p => | ||||
@@ -8,6 +8,11 @@ namespace MQTTnet.Core.Tests | |||||
{ | { | ||||
public event EventHandler<MqttClientConnectedEventArgs> ClientConnected; | public event EventHandler<MqttClientConnectedEventArgs> ClientConnected; | ||||
public void FireClientConnectedEvent(MqttClientConnectedEventArgs eventArgs) | |||||
{ | |||||
ClientConnected?.Invoke(this, eventArgs); | |||||
} | |||||
public void Start(MqttServerOptions options) | public void Start(MqttServerOptions options) | ||||
{ | { | ||||
} | } | ||||
@@ -11,8 +11,8 @@ | |||||
<AssemblyName>MQTTnet.TestApp.UniversalWindows</AssemblyName> | <AssemblyName>MQTTnet.TestApp.UniversalWindows</AssemblyName> | ||||
<DefaultLanguage>en-US</DefaultLanguage> | <DefaultLanguage>en-US</DefaultLanguage> | ||||
<TargetPlatformIdentifier>UAP</TargetPlatformIdentifier> | <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier> | ||||
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.14393.0</TargetPlatformVersion> | |||||
<TargetPlatformMinVersion>10.0.10240.0</TargetPlatformMinVersion> | |||||
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.15063.0</TargetPlatformVersion> | |||||
<TargetPlatformMinVersion>10.0.15063.0</TargetPlatformMinVersion> | |||||
<MinimumVisualStudioVersion>14</MinimumVisualStudioVersion> | <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion> | ||||
<FileAlignment>512</FileAlignment> | <FileAlignment>512</FileAlignment> | ||||
<ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> | ||||
@@ -137,7 +137,7 @@ | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform"> | <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform"> | ||||
<Version>5.2.3</Version> | |||||
<Version>5.3.3</Version> | |||||
</PackageReference> | </PackageReference> | ||||
</ItemGroup> | </ItemGroup> | ||||
<PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' "> | <PropertyGroup Condition=" '$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' < '14.0' "> | ||||
@@ -150,7 +150,7 @@ | |||||
<NoWarn>;2008</NoWarn> | <NoWarn>;2008</NoWarn> | ||||
<NoStdLib>true</NoStdLib> | <NoStdLib>true</NoStdLib> | ||||
<DebugType>full</DebugType> | <DebugType>full</DebugType> | ||||
<PlatformTarget>AnyCPU</PlatformTarget> | |||||
<PlatformTarget>x86</PlatformTarget> | |||||
<UseVSHostingProcess>false</UseVSHostingProcess> | <UseVSHostingProcess>false</UseVSHostingProcess> | ||||
<ErrorReport>prompt</ErrorReport> | <ErrorReport>prompt</ErrorReport> | ||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> | <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> | ||||