mirror of
https://github.com/ckaczor/WeatherService.git
synced 2026-01-13 17:23:11 -05:00
Initial commit
This commit is contained in:
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
||||||
156
.gitignore
vendored
Normal file
156
.gitignore
vendored
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
|
||||||
|
[Dd]ebug/
|
||||||
|
[Rr]elease/
|
||||||
|
x64/
|
||||||
|
build/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
|
||||||
|
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
|
||||||
|
!packages/*/build/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*.log
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.log
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
*.ncrunch*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
|
||||||
|
# Installshield output folder
|
||||||
|
[Ee]xpress/
|
||||||
|
|
||||||
|
# DocProject is a documentation generator add-in
|
||||||
|
DocProject/buildhelp/
|
||||||
|
DocProject/Help/*.HxT
|
||||||
|
DocProject/Help/*.HxC
|
||||||
|
DocProject/Help/*.hhc
|
||||||
|
DocProject/Help/*.hhk
|
||||||
|
DocProject/Help/*.hhp
|
||||||
|
DocProject/Help/Html2
|
||||||
|
DocProject/Help/html
|
||||||
|
|
||||||
|
# Click-Once directory
|
||||||
|
publish/
|
||||||
|
|
||||||
|
# Publish Web Output
|
||||||
|
*.Publish.xml
|
||||||
|
|
||||||
|
# NuGet Packages Directory
|
||||||
|
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
||||||
|
#packages/
|
||||||
|
|
||||||
|
# Windows Azure Build Output
|
||||||
|
csx
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Windows Store app package directory
|
||||||
|
AppPackages/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
sql/
|
||||||
|
*.Cache
|
||||||
|
ClientBin/
|
||||||
|
[Ss]tyle[Cc]op.*
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.[Pp]ublish.xml
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
|
||||||
|
# RIA/Silverlight projects
|
||||||
|
Generated_Code/
|
||||||
|
|
||||||
|
# Backup & report files from converting an old project file to a newer
|
||||||
|
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||||
|
_UpgradeReport_Files/
|
||||||
|
Backup*/
|
||||||
|
UpgradeLog*.XML
|
||||||
|
UpgradeLog*.htm
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
App_Data/*.mdf
|
||||||
|
App_Data/*.ldf
|
||||||
|
|
||||||
|
|
||||||
|
#LightSwitch generated files
|
||||||
|
GeneratedArtifacts/
|
||||||
|
_Pvt_Extensions/
|
||||||
|
ModelManifest.xml
|
||||||
|
|
||||||
|
# =========================
|
||||||
|
# Windows detritus
|
||||||
|
# =========================
|
||||||
|
|
||||||
|
# Windows image file caches
|
||||||
|
Thumbs.db
|
||||||
|
ehthumbs.db
|
||||||
|
|
||||||
|
# Folder config file
|
||||||
|
Desktop.ini
|
||||||
|
|
||||||
|
# Recycle Bin used on file shares
|
||||||
|
$RECYCLE.BIN/
|
||||||
|
|
||||||
|
# Mac desktop service store files
|
||||||
|
.DS_Store
|
||||||
82
App.config
Normal file
82
App.config
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<configSections>
|
||||||
|
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<section name="WeatherService.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
|
||||||
|
</sectionGroup>
|
||||||
|
</configSections>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
|
||||||
|
</startup>
|
||||||
|
<applicationSettings>
|
||||||
|
<WeatherService.Settings>
|
||||||
|
<setting name="LogDatabase" serializeAs="String">
|
||||||
|
<value>False</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="LcdTemplate" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="PollingInterval" serializeAs="String">
|
||||||
|
<value>00:00:01</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="DatabaseFile" serializeAs="String">
|
||||||
|
<value>C:\WeatherCenter\WeatherCenter.sdf</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="SignalR_ListenUrl" serializeAs="String">
|
||||||
|
<value>http://*:9090</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="SignalR_ConnectUrl" serializeAs="String">
|
||||||
|
<value>http://localhost:9090</value>
|
||||||
|
</setting>
|
||||||
|
</WeatherService.Settings>
|
||||||
|
</applicationSettings>
|
||||||
|
<system.serviceModel>
|
||||||
|
<bindings>
|
||||||
|
<webHttpBinding>
|
||||||
|
<binding name="webHttpBindingWithJson" crossDomainScriptAccessEnabled="true" />
|
||||||
|
</webHttpBinding>
|
||||||
|
</bindings>
|
||||||
|
<services>
|
||||||
|
<service behaviorConfiguration="Default" name="WeatherService.WeatherServiceDuplex">
|
||||||
|
<endpoint address="" binding="netTcpBinding" contract="WeatherService.IWeatherServiceDuplex" />
|
||||||
|
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
|
||||||
|
<host>
|
||||||
|
<baseAddresses>
|
||||||
|
<add baseAddress="net.tcp://server:9001" />
|
||||||
|
</baseAddresses>
|
||||||
|
</host>
|
||||||
|
</service>
|
||||||
|
<service behaviorConfiguration="Default" name="WeatherService.WeatherService">
|
||||||
|
<endpoint address="json" binding="webHttpBinding" bindingConfiguration="webHttpBindingWithJson" contract="WeatherService.IWeatherService" />
|
||||||
|
<host>
|
||||||
|
<baseAddresses>
|
||||||
|
<add baseAddress="http://server:9000" />
|
||||||
|
</baseAddresses>
|
||||||
|
</host>
|
||||||
|
</service>
|
||||||
|
</services>
|
||||||
|
<behaviors>
|
||||||
|
<serviceBehaviors>
|
||||||
|
<behavior name="Default">
|
||||||
|
<serviceMetadata httpGetEnabled="true" />
|
||||||
|
</behavior>
|
||||||
|
</serviceBehaviors>
|
||||||
|
</behaviors>
|
||||||
|
</system.serviceModel>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.AspNet.SignalR.Core" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.0.3.0" newVersion="2.0.3.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
|
</configuration>
|
||||||
134
Conversion.cs
Normal file
134
Conversion.cs
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
#region Enumerations
|
||||||
|
|
||||||
|
public enum TemperatureUnit
|
||||||
|
{
|
||||||
|
Fahrenheit,
|
||||||
|
Celsius
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum LengthUnit
|
||||||
|
{
|
||||||
|
Inches,
|
||||||
|
Millimeters
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum PressureUnit
|
||||||
|
{
|
||||||
|
HectoPascal,
|
||||||
|
MilliBar,
|
||||||
|
InchesMercury,
|
||||||
|
MillimeterMercury
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public static class Conversion
|
||||||
|
{
|
||||||
|
#region Temperature
|
||||||
|
|
||||||
|
public static double ConvertTemperature(double value, TemperatureUnit fromUnit, TemperatureUnit toUnit)
|
||||||
|
{
|
||||||
|
if (fromUnit == TemperatureUnit.Fahrenheit && toUnit == TemperatureUnit.Celsius)
|
||||||
|
{
|
||||||
|
return (value - 32) / 1.8F;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fromUnit == TemperatureUnit.Celsius && toUnit == TemperatureUnit.Fahrenheit)
|
||||||
|
{
|
||||||
|
return value * 1.8F + 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Length
|
||||||
|
|
||||||
|
public static double ConvertLength(double value, LengthUnit fromUnit, LengthUnit toUnit)
|
||||||
|
{
|
||||||
|
double baseValue;
|
||||||
|
|
||||||
|
switch (fromUnit)
|
||||||
|
{
|
||||||
|
case LengthUnit.Millimeters:
|
||||||
|
baseValue = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LengthUnit.Inches:
|
||||||
|
baseValue = value / 0.0393700787F;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
baseValue = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (toUnit)
|
||||||
|
{
|
||||||
|
case LengthUnit.Millimeters:
|
||||||
|
return baseValue;
|
||||||
|
|
||||||
|
case LengthUnit.Inches:
|
||||||
|
return baseValue * 0.0393700787F;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return baseValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Pressure
|
||||||
|
|
||||||
|
public static double ConvertPressure(double value, PressureUnit fromUnit, PressureUnit toUnit)
|
||||||
|
{
|
||||||
|
double baseValue;
|
||||||
|
|
||||||
|
switch (fromUnit)
|
||||||
|
{
|
||||||
|
case PressureUnit.HectoPascal:
|
||||||
|
baseValue = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PressureUnit.MilliBar:
|
||||||
|
baseValue = value;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PressureUnit.InchesMercury:
|
||||||
|
baseValue = value / 0.02952999;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PressureUnit.MillimeterMercury:
|
||||||
|
baseValue = value / 0.7500617;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
baseValue = value;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (toUnit)
|
||||||
|
{
|
||||||
|
case PressureUnit.HectoPascal:
|
||||||
|
return baseValue;
|
||||||
|
|
||||||
|
case PressureUnit.MilliBar:
|
||||||
|
return baseValue;
|
||||||
|
|
||||||
|
case PressureUnit.InchesMercury:
|
||||||
|
return baseValue * 0.02952999;
|
||||||
|
|
||||||
|
case PressureUnit.MillimeterMercury:
|
||||||
|
return baseValue * 0.7500617;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return baseValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
99
Data/Database.cs
Normal file
99
Data/Database.cs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
using Common.Debug;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data.Linq;
|
||||||
|
using System.Data.SqlServerCe;
|
||||||
|
using System.Linq;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Data
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This class manages database connectivity and logging
|
||||||
|
/// </summary>
|
||||||
|
internal static class Database
|
||||||
|
{
|
||||||
|
private static DatabaseContext _databaseContext;
|
||||||
|
private static SqlCeConnection _connection;
|
||||||
|
|
||||||
|
public static void Connect(string databasePath)
|
||||||
|
{
|
||||||
|
_connection = new SqlCeConnection(string.Format("Data Source={0}", databasePath));
|
||||||
|
_connection.Open();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SqlCeConnection Connection
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _connection;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Initialize(string databasePath)
|
||||||
|
{
|
||||||
|
Connect(databasePath);
|
||||||
|
|
||||||
|
// Create a database context
|
||||||
|
_databaseContext = new DatabaseContext(databasePath);
|
||||||
|
|
||||||
|
// Turn on logging if requested
|
||||||
|
if (Settings.Default.LogDatabase)
|
||||||
|
_databaseContext.Log = Tracer.Writer;
|
||||||
|
|
||||||
|
// Create the database engine
|
||||||
|
SqlCeEngine engine = new SqlCeEngine(string.Format("Data Source={0}", databasePath));
|
||||||
|
|
||||||
|
// Check to see if the database exists
|
||||||
|
if (!_databaseContext.DatabaseExists())
|
||||||
|
{
|
||||||
|
// Create the database itself
|
||||||
|
engine.CreateDatabase();
|
||||||
|
|
||||||
|
// Run the creation script
|
||||||
|
// executeScript(Resources.CreateDatabase);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compact the database
|
||||||
|
engine.Shrink();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Table<DeviceData> DeviceTable
|
||||||
|
{
|
||||||
|
get { return _databaseContext.DeviceTable; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Table<ReadingData> ReadingTable
|
||||||
|
{
|
||||||
|
get { return _databaseContext.ReadingTable; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<DeviceData> DeviceList
|
||||||
|
{
|
||||||
|
get { return from device in DeviceTable select device; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<ReadingData> ReadingList(int deviceId)
|
||||||
|
{
|
||||||
|
return from reading in ReadingTable where reading.DeviceId == deviceId select reading;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IEnumerable<ReadingData> ReadingList(int deviceId, WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
return from reading in ReadingTable where reading.DeviceId == deviceId && reading.Type == valueType select reading;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void SaveChanges()
|
||||||
|
{
|
||||||
|
_databaseContext.SubmitChanges(ConflictMode.ContinueOnConflict);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void DiscardChanges()
|
||||||
|
{
|
||||||
|
ChangeSet changeSet = _databaseContext.GetChangeSet();
|
||||||
|
|
||||||
|
_databaseContext.Refresh(RefreshMode.OverwriteCurrentValues, changeSet.Inserts);
|
||||||
|
_databaseContext.Refresh(RefreshMode.OverwriteCurrentValues, changeSet.Deletes);
|
||||||
|
_databaseContext.Refresh(RefreshMode.OverwriteCurrentValues, changeSet.Updates);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Data/DatabaseContext.cs
Normal file
12
Data/DatabaseContext.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using System.Data.Linq;
|
||||||
|
|
||||||
|
namespace WeatherService.Data
|
||||||
|
{
|
||||||
|
public class DatabaseContext : DataContext
|
||||||
|
{
|
||||||
|
public Table<DeviceData> DeviceTable;
|
||||||
|
public Table<ReadingData> ReadingTable;
|
||||||
|
|
||||||
|
public DatabaseContext(string databaseFile) : base(databaseFile) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
28
Data/DeviceData.cs
Normal file
28
Data/DeviceData.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System.Data.Linq.Mapping;
|
||||||
|
|
||||||
|
namespace WeatherService.Data
|
||||||
|
{
|
||||||
|
[Table(Name = "Device")]
|
||||||
|
public class DeviceData
|
||||||
|
{
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never, IsDbGenerated = true, IsPrimaryKey = true)]
|
||||||
|
public int Id;
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public string Address;
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public string Name;
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public int ReadInterval;
|
||||||
|
|
||||||
|
//private readonly EntitySet<Reading> _readingSet = new EntitySet<Reading>();
|
||||||
|
//[Association(Storage = "_readingSet", OtherKey = "DeviceId", ThisKey = "Id")]
|
||||||
|
//public EntitySet<Reading> Readings
|
||||||
|
//{
|
||||||
|
// get { return _readingSet; }
|
||||||
|
// set { _readingSet.Assign(value); }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
60
Data/ReadingData.cs
Normal file
60
Data/ReadingData.cs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
using System;
|
||||||
|
using System.Data.Linq.Mapping;
|
||||||
|
using System.Data.SqlTypes;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Data
|
||||||
|
{
|
||||||
|
[Table(Name = "Reading")]
|
||||||
|
public class ReadingData
|
||||||
|
{
|
||||||
|
public ReadingData()
|
||||||
|
{
|
||||||
|
ReadTime = SqlDateTime.MinValue.Value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never, IsDbGenerated = true, IsPrimaryKey = true)]
|
||||||
|
public int Id
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
internal set;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public int DeviceId
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
internal set;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public WeatherValueType Type
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
internal set;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public double Value
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
internal set;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Column(UpdateCheck = UpdateCheck.Never)]
|
||||||
|
public DateTime ReadTime
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
internal set;
|
||||||
|
}
|
||||||
|
|
||||||
|
//private EntityRef<DeviceData> _device;
|
||||||
|
//[Association(Storage = "_device", ThisKey = "DeviceId", OtherKey = "Id")]
|
||||||
|
//public DeviceData Device
|
||||||
|
//{
|
||||||
|
// get { return _device.Entity; }
|
||||||
|
// set { _device.Entity = value; }
|
||||||
|
//}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
267
Devices/DeviceBase.cs
Normal file
267
Devices/DeviceBase.cs
Normal file
@@ -0,0 +1,267 @@
|
|||||||
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using WeatherService.Data;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
#region Enumerations
|
||||||
|
|
||||||
|
[DataContract]
|
||||||
|
public enum DeviceType
|
||||||
|
{
|
||||||
|
[EnumMember]
|
||||||
|
None,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Temperature,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Pressure,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Humidity,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
WindDirection,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
WindSpeed,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Rain
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
[DataContract]
|
||||||
|
[KnownType(typeof(HumidityDevice))]
|
||||||
|
[KnownType(typeof(PressureDevice))]
|
||||||
|
[KnownType(typeof(RainDevice))]
|
||||||
|
[KnownType(typeof(TemperatureDevice))]
|
||||||
|
[KnownType(typeof(WindDirectionDevice))]
|
||||||
|
[KnownType(typeof(WindSpeedDevice))]
|
||||||
|
public class DeviceBase
|
||||||
|
{
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
protected int _deviceId; // Device ID
|
||||||
|
protected string _deviceAddress; // Device key
|
||||||
|
protected Session _session; // The root session
|
||||||
|
protected owDevice _device; // The one wire device
|
||||||
|
protected DateTime _lastRead = DateTime.MinValue; // When was the last refresh?
|
||||||
|
protected int _refreshFrequency; // How often should we refresh?
|
||||||
|
protected Dictionary<WeatherValueType, Value> _valueList; // List of values
|
||||||
|
protected string _displayName; // Device display name
|
||||||
|
protected DeviceType _deviceType; // Type of device
|
||||||
|
protected long _operationCount; // Number of operations
|
||||||
|
protected long _errorCount; // Number of errors
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public DeviceBase(Session session, owDevice device, DeviceType deviceType)
|
||||||
|
{
|
||||||
|
// Initialize the value list
|
||||||
|
_valueList = new Dictionary<WeatherValueType, Value>();
|
||||||
|
|
||||||
|
// Store properties of the device
|
||||||
|
_deviceAddress = device.ID.Name;
|
||||||
|
_deviceType = deviceType;
|
||||||
|
_session = session;
|
||||||
|
_device = device;
|
||||||
|
|
||||||
|
// Default the display name
|
||||||
|
_displayName = device.ID.Name;
|
||||||
|
|
||||||
|
// Default the read interval
|
||||||
|
if (Type == DeviceType.WindDirection || Type == DeviceType.WindSpeed)
|
||||||
|
_refreshFrequency = 1;
|
||||||
|
else
|
||||||
|
_refreshFrequency = 120;
|
||||||
|
|
||||||
|
// Load device data
|
||||||
|
bool bLoad = Load();
|
||||||
|
|
||||||
|
// If we couldn't load data then save the default data
|
||||||
|
if (!bLoad)
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Save and load
|
||||||
|
|
||||||
|
internal bool Load()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Get the device data from the database
|
||||||
|
DeviceData deviceData = (from device in Database.DeviceTable where device.Address == _deviceAddress select device).First();
|
||||||
|
|
||||||
|
// Load the device data
|
||||||
|
_deviceId = deviceData.Id;
|
||||||
|
_displayName = deviceData.Name;
|
||||||
|
_refreshFrequency = deviceData.ReadInterval;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal bool Save()
|
||||||
|
{
|
||||||
|
// Get the device data from the database
|
||||||
|
DeviceData deviceData = (from device in Database.DeviceTable where device.Address == _deviceAddress select device).First();
|
||||||
|
|
||||||
|
// Save device data
|
||||||
|
deviceData.Name = _displayName;
|
||||||
|
deviceData.ReadInterval = _refreshFrequency;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal cache refresh logic
|
||||||
|
|
||||||
|
internal bool DoCacheRefresh()
|
||||||
|
{
|
||||||
|
switch (_refreshFrequency)
|
||||||
|
{
|
||||||
|
case -1:
|
||||||
|
// Do not refresh this device
|
||||||
|
return false;
|
||||||
|
|
||||||
|
case 0:
|
||||||
|
// Refresh the device whenever possible
|
||||||
|
RefreshCache();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (_lastRead == DateTime.MinValue)
|
||||||
|
{
|
||||||
|
// If we have never refreshed before then do it now
|
||||||
|
RefreshCache();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the time since the last refresh
|
||||||
|
TimeSpan oTimeSpan = DateTime.Now - _lastRead;
|
||||||
|
|
||||||
|
// If it has been long enough then refresh the cache
|
||||||
|
if (oTimeSpan.TotalSeconds >= _refreshFrequency)
|
||||||
|
{
|
||||||
|
RefreshCache();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal virtual void RefreshCache()
|
||||||
|
{
|
||||||
|
// Store the current time
|
||||||
|
_lastRead = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public properties
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public int Id
|
||||||
|
{
|
||||||
|
get { return _deviceId; }
|
||||||
|
set { _deviceId = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public string Address
|
||||||
|
{
|
||||||
|
get { return _deviceAddress; }
|
||||||
|
set { _deviceAddress = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public string DisplayName
|
||||||
|
{
|
||||||
|
get { return _displayName; }
|
||||||
|
set { _displayName = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
internal owDevice OneWireDevice
|
||||||
|
{
|
||||||
|
get { return _device; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public DateTime LastRead
|
||||||
|
{
|
||||||
|
get { return _lastRead; }
|
||||||
|
set { _lastRead = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public long Operations
|
||||||
|
{
|
||||||
|
get { return _operationCount; }
|
||||||
|
set { _operationCount = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public long Errors
|
||||||
|
{
|
||||||
|
get { return _errorCount; }
|
||||||
|
set { _errorCount = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public DeviceType Type
|
||||||
|
{
|
||||||
|
get { return _deviceType; }
|
||||||
|
set { _deviceType = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public int RefreshFrequency
|
||||||
|
{
|
||||||
|
get { return _refreshFrequency; }
|
||||||
|
set { _refreshFrequency = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public Dictionary<WeatherValueType, Value> Values
|
||||||
|
{
|
||||||
|
get { return _valueList; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public List<WeatherValueType> SupportedValues
|
||||||
|
{
|
||||||
|
get { return _valueList.Keys.ToList(); }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public methods
|
||||||
|
|
||||||
|
public Value GetValue(WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
return _valueList[valueType];
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
72
Devices/HumidityDevice.cs
Normal file
72
Devices/HumidityDevice.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class HumidityDevice : DeviceBase
|
||||||
|
{
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly Value _temperatureValue;
|
||||||
|
private readonly Value _humidityValue;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public HumidityDevice(Session session, owDevice device) : base(session, device, DeviceType.Humidity)
|
||||||
|
{
|
||||||
|
_temperatureValue = new Value(WeatherValueType.Temperature, this);
|
||||||
|
_humidityValue = new Value(WeatherValueType.Humidity, this);
|
||||||
|
|
||||||
|
_valueList.Add(WeatherValueType.Temperature, _temperatureValue);
|
||||||
|
_valueList.Add(WeatherValueType.Humidity, _humidityValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal override void RefreshCache()
|
||||||
|
{
|
||||||
|
_temperatureValue.SetValue(ReadTemperature());
|
||||||
|
_humidityValue.SetValue(ReadHumidity());
|
||||||
|
|
||||||
|
base.RefreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadTemperature()
|
||||||
|
{
|
||||||
|
// Cast the device to its specific type
|
||||||
|
owDeviceFamily26 oDevice = (owDeviceFamily26) _device;
|
||||||
|
|
||||||
|
// Return the temperature from the device
|
||||||
|
return oDevice.GetTemperature();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadHumidity()
|
||||||
|
{
|
||||||
|
// Cast the device to its specific type
|
||||||
|
owDeviceFamily26 oDevice = (owDeviceFamily26) _device;
|
||||||
|
|
||||||
|
// Get the supply voltage
|
||||||
|
double dSupplyVoltage = oDevice.GetSupplyVoltage();
|
||||||
|
|
||||||
|
// Get the output voltage
|
||||||
|
double dOutputVoltage = oDevice.GetOutputVoltage();
|
||||||
|
|
||||||
|
// Get the temperature
|
||||||
|
double dTemperature = oDevice.GetTemperature();
|
||||||
|
|
||||||
|
// Calculate the humidity
|
||||||
|
double dHumidity = (((dOutputVoltage / dSupplyVoltage) - 0.16F) / 0.0062F) / (1.0546F - 0.00216F * dTemperature);
|
||||||
|
|
||||||
|
// Return the result
|
||||||
|
return dHumidity;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
510
Devices/PressureDevice.cs
Normal file
510
Devices/PressureDevice.cs
Normal file
@@ -0,0 +1,510 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class PressureDevice : DeviceBase
|
||||||
|
{
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
private readonly byte[] _resetSequence = new byte[] { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0 }; // Binary sequence to reset the device
|
||||||
|
private readonly byte[] _readWord1Sequence = new byte[] { 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0 }; // Binary sequence to read word 1
|
||||||
|
private readonly byte[] _readWord2Sequence = new byte[] { 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0 }; // Binary sequence to read word 2
|
||||||
|
private readonly byte[] _readWord3Sequence = new byte[] { 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0 }; // Binary sequence to read word 3
|
||||||
|
private readonly byte[] _readWord4Sequence = new byte[] { 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0 }; // Binary sequence to read word 4
|
||||||
|
private readonly byte[] _readPressureSequence = new byte[] { 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0 }; // Binary sequence to read pressure
|
||||||
|
private readonly byte[] _readTemperatureSequence = new byte[] { 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0 }; // Binary sequence to read temperature
|
||||||
|
|
||||||
|
private const byte ChannelAccessCommand = 0xF5;
|
||||||
|
private const byte ConfigRead = 0xEC;
|
||||||
|
private const byte ConfigWrite = 0x8C;
|
||||||
|
private const byte ConfigPulseRead = 0xC8;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly owDeviceFamily12 _writeDevice; // Device for writing to the pressure sensor
|
||||||
|
private readonly owDeviceFamily12 _readDevice; // Device for reading from the pressure sensor
|
||||||
|
private readonly Value _temperatureValue; // Last temperature (degrees C)
|
||||||
|
private readonly Value _pressureValue; // Last pressure (mbar)
|
||||||
|
|
||||||
|
private bool _readCalibration; // Have we read the calibration constants?
|
||||||
|
|
||||||
|
private int _calibration1; // Calibration constant
|
||||||
|
private int _calibration2; // Calibration constant
|
||||||
|
private int _calibration3; // Calibration constant
|
||||||
|
private int _calibration4; // Calibration constant
|
||||||
|
private int _calibration5; // Calibration constant
|
||||||
|
private int _calibration6; // Calibration constant
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public PressureDevice(Session session, owDevice firstDevice, owDevice secondDevice) : base(session, firstDevice, DeviceType.Pressure)
|
||||||
|
{
|
||||||
|
// Get both devices
|
||||||
|
owDeviceFamily12 oDevice1 = (owDeviceFamily12) firstDevice;
|
||||||
|
owDeviceFamily12 oDevice2 = (owDeviceFamily12) secondDevice;
|
||||||
|
|
||||||
|
// Get the state of both devices
|
||||||
|
byte[] baState1 = oDevice1.ReadDevice();
|
||||||
|
byte[] baState2 = oDevice2.ReadDevice();
|
||||||
|
|
||||||
|
// If both devices have the same power state then this isn't a proper pressure device
|
||||||
|
if (oDevice1.IsPowered(baState1) == oDevice2.IsPowered(baState2))
|
||||||
|
{
|
||||||
|
// Throw an exception
|
||||||
|
throw new Exception("Invalid TAI8570");
|
||||||
|
}
|
||||||
|
|
||||||
|
// The powered device is the write device - sort this out and remember which is which
|
||||||
|
if (oDevice1.IsPowered(baState1))
|
||||||
|
{
|
||||||
|
_writeDevice = oDevice1;
|
||||||
|
_readDevice = oDevice2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_writeDevice = oDevice2;
|
||||||
|
_readDevice = oDevice1;
|
||||||
|
}
|
||||||
|
|
||||||
|
_temperatureValue = new Value(WeatherValueType.Temperature, this);
|
||||||
|
_pressureValue = new Value(WeatherValueType.Pressure, this);
|
||||||
|
|
||||||
|
_valueList.Add(WeatherValueType.Temperature, _temperatureValue);
|
||||||
|
_valueList.Add(WeatherValueType.Pressure, _pressureValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region PIO methods
|
||||||
|
|
||||||
|
private void PrepPioForWrite()
|
||||||
|
{
|
||||||
|
byte[] baState = _writeDevice.ReadDevice();
|
||||||
|
_writeDevice.SetLatchState(0, true, baState);
|
||||||
|
_writeDevice.SetLatchState(1, false, baState);
|
||||||
|
_writeDevice.WriteDevice(baState);
|
||||||
|
|
||||||
|
baState = _readDevice.ReadDevice();
|
||||||
|
_readDevice.SetLatchState(0, false, baState);
|
||||||
|
_readDevice.SetLatchState(1, false, baState);
|
||||||
|
_readDevice.WriteDevice(baState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void PrepPioForRead()
|
||||||
|
{
|
||||||
|
byte[] baState = _readDevice.ReadDevice();
|
||||||
|
_readDevice.SetLatchState(0, false, baState);
|
||||||
|
_readDevice.SetLatchState(1, false, baState);
|
||||||
|
_readDevice.WriteDevice(baState);
|
||||||
|
|
||||||
|
baState = _writeDevice.ReadDevice();
|
||||||
|
_writeDevice.SetLatchState(0, false, baState);
|
||||||
|
_writeDevice.SetLatchState(1, false, baState);
|
||||||
|
_writeDevice.WriteDevice(baState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool OpenPio(int pio)
|
||||||
|
{
|
||||||
|
byte[] baWriteState = _writeDevice.ReadDevice();
|
||||||
|
byte[] baReadState = _readDevice.ReadDevice();
|
||||||
|
|
||||||
|
_writeDevice.SetLatchState(pio, false, baWriteState);
|
||||||
|
_readDevice.SetLatchState(pio, false, baReadState);
|
||||||
|
|
||||||
|
_writeDevice.WriteDevice(baWriteState);
|
||||||
|
_writeDevice.WriteDevice(baReadState);
|
||||||
|
|
||||||
|
baWriteState = _writeDevice.ReadDevice();
|
||||||
|
baReadState = _readDevice.ReadDevice();
|
||||||
|
|
||||||
|
bool bResult = (_writeDevice.GetLevel(pio, baWriteState) && _readDevice.GetLevel(pio, baReadState));
|
||||||
|
|
||||||
|
return bResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool OpenPioA()
|
||||||
|
{
|
||||||
|
return OpenPio(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool OpenPioB()
|
||||||
|
{
|
||||||
|
return OpenPio(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Private methods
|
||||||
|
|
||||||
|
private bool SetupForWrite()
|
||||||
|
{
|
||||||
|
byte[] data = new byte[3]; // Data buffer to send over the network
|
||||||
|
short dataCount = 0; // How many bytes of data to send
|
||||||
|
|
||||||
|
PrepPioForWrite();
|
||||||
|
|
||||||
|
owAdapter.Select(_writeDevice.ID);
|
||||||
|
|
||||||
|
data[dataCount++] = ChannelAccessCommand;
|
||||||
|
data[dataCount++] = ConfigWrite;
|
||||||
|
data[dataCount++] = 0xFF;
|
||||||
|
|
||||||
|
owAdapter.SendBlock(data, dataCount);
|
||||||
|
|
||||||
|
owAdapter.ReadByte();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool SetupForRead()
|
||||||
|
{
|
||||||
|
byte[] data = new byte[3]; // Data buffer to send over the network
|
||||||
|
short dataCount = 0; // How many bytes of data to send
|
||||||
|
|
||||||
|
PrepPioForRead();
|
||||||
|
|
||||||
|
owAdapter.Select(_readDevice.ID);
|
||||||
|
|
||||||
|
data[dataCount++] = ChannelAccessCommand;
|
||||||
|
data[dataCount++] = ConfigRead;
|
||||||
|
data[dataCount++] = 0xFF;
|
||||||
|
|
||||||
|
owAdapter.SendBlock(data, dataCount);
|
||||||
|
|
||||||
|
owAdapter.ReadByte();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool SetupForPulseRead()
|
||||||
|
{
|
||||||
|
byte[] data = new byte[3]; // Data buffer to send over the network
|
||||||
|
short dataCount = 0; // How many bytes of data to send
|
||||||
|
|
||||||
|
PrepPioForWrite();
|
||||||
|
|
||||||
|
owAdapter.Select(_readDevice.ID);
|
||||||
|
|
||||||
|
data[dataCount++] = ChannelAccessCommand;
|
||||||
|
data[dataCount++] = ConfigPulseRead;
|
||||||
|
data[dataCount++] = 0xFF;
|
||||||
|
|
||||||
|
owAdapter.SendBlock(data, dataCount);
|
||||||
|
|
||||||
|
owAdapter.ReadByte();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool WriteBitSequence(IEnumerable<byte> sequence)
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
|
||||||
|
if (SetupForWrite())
|
||||||
|
{
|
||||||
|
foreach (byte t in sequence)
|
||||||
|
{
|
||||||
|
SendBit(t != 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SendBit(false);
|
||||||
|
|
||||||
|
result = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] ReadBitSequence(IEnumerable<byte> sequence)
|
||||||
|
{
|
||||||
|
byte[] result = new byte[16];
|
||||||
|
|
||||||
|
if (WriteBitSequence(sequence))
|
||||||
|
{
|
||||||
|
result = GetBits(16);
|
||||||
|
OpenPioB();
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SendBit(bool value)
|
||||||
|
{
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
owAdapter.SendBit(1);
|
||||||
|
owAdapter.SendBit(1);
|
||||||
|
owAdapter.SendBit(1);
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
owAdapter.SendBit(1);
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
owAdapter.SendBit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool ReadBit()
|
||||||
|
{
|
||||||
|
owAdapter.ReadBit(); // Read PIO A #1
|
||||||
|
owAdapter.ReadBit(); // Read PIO B #1
|
||||||
|
owAdapter.ReadBit(); // Read PIO A #2
|
||||||
|
owAdapter.ReadBit(); // Read PIO B #2
|
||||||
|
owAdapter.ReadBit(); // Read PIO A #3
|
||||||
|
owAdapter.ReadBit(); // Read PIO B #3
|
||||||
|
owAdapter.ReadBit(); // Read PIO A #4
|
||||||
|
short data = owAdapter.ReadBit();
|
||||||
|
|
||||||
|
bool result = (data == 1);
|
||||||
|
|
||||||
|
owAdapter.SendBit(0); // Write PIO A #1
|
||||||
|
owAdapter.SendBit(1); // Write PIO B #1
|
||||||
|
owAdapter.SendBit(0); // Write PIO A #2
|
||||||
|
owAdapter.SendBit(1); // Write PIO B #2
|
||||||
|
owAdapter.SendBit(1); // Write PIO A #3
|
||||||
|
owAdapter.SendBit(1); // Write PIO B #3
|
||||||
|
owAdapter.SendBit(1); // Write PIO A #4
|
||||||
|
owAdapter.SendBit(1); // Write PIO B #4
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool Reset()
|
||||||
|
{
|
||||||
|
return WriteBitSequence(_resetSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool CheckConversionStatus()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!SetupForPulseRead())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
for (i = 0; i < 100; i++)
|
||||||
|
if (owAdapter.SendBit(0) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
return (i < 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool ReadCalibrationConstants()
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!Reset()) return false;
|
||||||
|
|
||||||
|
byte[] word1 = ReadBitSequence(_readWord1Sequence);
|
||||||
|
|
||||||
|
byte[] word2 = ReadBitSequence(_readWord2Sequence);
|
||||||
|
|
||||||
|
byte[] word3 = ReadBitSequence(_readWord3Sequence);
|
||||||
|
|
||||||
|
byte[] word4 = ReadBitSequence(_readWord4Sequence);
|
||||||
|
|
||||||
|
_calibration1 = _calibration2 = _calibration3 = _calibration4 = _calibration5 = _calibration6 = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < 15; i++)
|
||||||
|
{
|
||||||
|
_calibration1 = (_calibration1 << 1);
|
||||||
|
|
||||||
|
if (word1[i] == 1)
|
||||||
|
_calibration1 = _calibration1 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (word1[15] == 1)
|
||||||
|
_calibration5 = 1;
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
_calibration5 = (_calibration5 << 1);
|
||||||
|
|
||||||
|
if (word2[i] == 1)
|
||||||
|
_calibration5 = _calibration5 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 10; i < 16; i++)
|
||||||
|
{
|
||||||
|
_calibration6 = (_calibration6 << 1);
|
||||||
|
|
||||||
|
if (word2[i] == 1)
|
||||||
|
_calibration6 = _calibration6 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
_calibration4 = (_calibration4 << 1);
|
||||||
|
|
||||||
|
if (word3[i] == 1)
|
||||||
|
_calibration4 = _calibration4 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 10; i < 16; i++)
|
||||||
|
{
|
||||||
|
_calibration2 = (_calibration2 << 1);
|
||||||
|
|
||||||
|
if (word3[i] == 1)
|
||||||
|
_calibration2 = _calibration2 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 10; i < 16; i++)
|
||||||
|
{
|
||||||
|
_calibration2 = (_calibration2 << 1);
|
||||||
|
|
||||||
|
if (word4[i] == 1)
|
||||||
|
_calibration2 = _calibration2 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
_calibration3 = (_calibration3 << 1);
|
||||||
|
|
||||||
|
if (word4[i] == 1)
|
||||||
|
_calibration3 = _calibration3 + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private byte[] GetBits(byte bitCount)
|
||||||
|
{
|
||||||
|
byte[] result = new byte[bitCount];
|
||||||
|
|
||||||
|
if (SetupForRead())
|
||||||
|
{
|
||||||
|
for (int i = 0; i < bitCount; i++)
|
||||||
|
{
|
||||||
|
if (ReadBit())
|
||||||
|
result[i] = 1;
|
||||||
|
else
|
||||||
|
result[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int ReadValue(IEnumerable<byte> sequence)
|
||||||
|
{
|
||||||
|
int result = 0;
|
||||||
|
|
||||||
|
if (!Reset())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!WriteBitSequence(sequence))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!CheckConversionStatus())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (!OpenPioA())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
byte[] data = GetBits(16);
|
||||||
|
|
||||||
|
if (!OpenPioB())
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
result = (result << 1);
|
||||||
|
|
||||||
|
if (data[i] == 1)
|
||||||
|
result = result + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool ReadSensorData()
|
||||||
|
{
|
||||||
|
int pressure = ReadValue(_readPressureSequence);
|
||||||
|
int temperature = ReadValue(_readTemperatureSequence);
|
||||||
|
|
||||||
|
double calibrationTemperature = (8 * _calibration5) + 20224;
|
||||||
|
double temperatureDifference = temperature - calibrationTemperature;
|
||||||
|
_temperatureValue.SetValue(20 + ((temperatureDifference * (_calibration6 + 50)) / 10240));
|
||||||
|
|
||||||
|
double offset = _calibration2 * 4 + (((_calibration4 - 512) * temperatureDifference) / 4096);
|
||||||
|
double sensitivity = _calibration1 + ((_calibration3 * temperatureDifference) / 1024) + 24576;
|
||||||
|
double actualPressure = ((sensitivity * (pressure - 7168)) / 16384) - offset;
|
||||||
|
|
||||||
|
_pressureValue.SetValue((actualPressure / 32) + 250);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ReadDevice()
|
||||||
|
{
|
||||||
|
if (!_readCalibration)
|
||||||
|
{
|
||||||
|
if (!ReadCalibrationConstants())
|
||||||
|
throw new Exception("Error reading calibration constants");
|
||||||
|
|
||||||
|
_readCalibration = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ReadSensorData())
|
||||||
|
throw new Exception("Error reading Pressure and Temperature values");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal override void RefreshCache()
|
||||||
|
{
|
||||||
|
ReadDevice();
|
||||||
|
|
||||||
|
base.RefreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Elevation code (not used yet)
|
||||||
|
|
||||||
|
//private double m_dElevation = 0.0; // Height above sea level (meters)
|
||||||
|
|
||||||
|
//public void set_height_over_sea_level_meter(double height)
|
||||||
|
//{
|
||||||
|
// m_dElevation = height;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public void set_height_over_sea_level_feet(double height)
|
||||||
|
//{
|
||||||
|
// m_dElevation = height * 0.3048;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public double get_height_over_sea_level_meter()
|
||||||
|
//{
|
||||||
|
// return m_dElevation;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public double get_height_over_sea_level_feet()
|
||||||
|
//{
|
||||||
|
// return (3.281 * m_dElevation);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//public double get_calc_height_over_sea_level_meter()
|
||||||
|
//{
|
||||||
|
// return (288.15 / 0.0065) * (1 - Math.Pow((double) (getPressure_Pa() / 101325), (double) (0.0065 * (287.052 / 9.81))));
|
||||||
|
//}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
111
Devices/RainDevice.cs
Normal file
111
Devices/RainDevice.cs
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class RainDevice : DeviceBase
|
||||||
|
{
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly Value _recentValue;
|
||||||
|
|
||||||
|
private readonly uint _clearedCount; // Counter at least clear
|
||||||
|
|
||||||
|
private uint _lastCount; // Counter from last check
|
||||||
|
private uint _startupCount; // Counter at startup
|
||||||
|
private bool _initialized;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public RainDevice(Session session, owDevice device)
|
||||||
|
: base(session, device, DeviceType.Rain)
|
||||||
|
{
|
||||||
|
// TODO - Read the count as of the last counter clearing
|
||||||
|
_clearedCount = 150;
|
||||||
|
|
||||||
|
// Get a reference to the device
|
||||||
|
owDeviceFamily1D counter = (owDeviceFamily1D) _device;
|
||||||
|
|
||||||
|
// Get the current counter
|
||||||
|
_lastCount = counter.GetCounter(15);
|
||||||
|
|
||||||
|
// Setup the rain value
|
||||||
|
_recentValue = new Value(WeatherValueType.Rain, this);
|
||||||
|
_valueList.Add(WeatherValueType.Rain, _recentValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal override void RefreshCache()
|
||||||
|
{
|
||||||
|
double recentRain = ReadRecentRainfall();
|
||||||
|
|
||||||
|
_recentValue.SetValue(recentRain);
|
||||||
|
|
||||||
|
base.RefreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadSessionRainfall()
|
||||||
|
{
|
||||||
|
// Get a reference to the device
|
||||||
|
owDeviceFamily1D counter = (owDeviceFamily1D) _device;
|
||||||
|
|
||||||
|
// If we haven't initialized then do it now
|
||||||
|
if (!_initialized)
|
||||||
|
{
|
||||||
|
// Get the current counter
|
||||||
|
_startupCount = counter.GetCounter(15);
|
||||||
|
|
||||||
|
_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the current counter
|
||||||
|
uint currentCount = counter.GetCounter(15);
|
||||||
|
|
||||||
|
// Get the amount of rain since the last check
|
||||||
|
return (currentCount - _startupCount) * 0.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadRecentRainfall()
|
||||||
|
{
|
||||||
|
// Get a reference to the device
|
||||||
|
owDeviceFamily1D counter = (owDeviceFamily1D) _device;
|
||||||
|
|
||||||
|
// Get the current counter
|
||||||
|
uint currentCount = counter.GetCounter(15);
|
||||||
|
|
||||||
|
// Get the amount of rain since the last check
|
||||||
|
double rainValue = (currentCount - _lastCount) * 0.2;
|
||||||
|
|
||||||
|
// Store the last counter
|
||||||
|
_lastCount = currentCount;
|
||||||
|
|
||||||
|
return rainValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadTotalRainfall()
|
||||||
|
{
|
||||||
|
// Get a reference to the device
|
||||||
|
owDeviceFamily1D counter = (owDeviceFamily1D) _device;
|
||||||
|
|
||||||
|
// Get the current counter
|
||||||
|
uint currentCount = counter.GetCounter(15);
|
||||||
|
|
||||||
|
// Get the amount of rain since the last check
|
||||||
|
double rainValue = (currentCount - _clearedCount) * 0.2F;
|
||||||
|
|
||||||
|
// Store the last counter
|
||||||
|
_lastCount = currentCount;
|
||||||
|
|
||||||
|
return rainValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
49
Devices/TemperatureDevice.cs
Normal file
49
Devices/TemperatureDevice.cs
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class TemperatureDevice : DeviceBase
|
||||||
|
{
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly Value _temperatureValue; // Cached temperature
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public TemperatureDevice(Session session, owDevice device) : base(session, device, DeviceType.Temperature)
|
||||||
|
{
|
||||||
|
// Create the new value object
|
||||||
|
_temperatureValue = new Value(WeatherValueType.Temperature, this);
|
||||||
|
|
||||||
|
_valueList.Add(WeatherValueType.Temperature, _temperatureValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal override void RefreshCache()
|
||||||
|
{
|
||||||
|
// Read the current temperature
|
||||||
|
_temperatureValue.SetValue(ReadTemperature());
|
||||||
|
|
||||||
|
base.RefreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadTemperature()
|
||||||
|
{
|
||||||
|
// Cast the device to its specific type
|
||||||
|
owDeviceFamily10 temperatureDevice = (owDeviceFamily10) _device;
|
||||||
|
|
||||||
|
// Return the temperature from the device
|
||||||
|
return temperatureDevice.GetTemperature();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
161
Devices/WindDirectionDevice.cs
Normal file
161
Devices/WindDirectionDevice.cs
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
#region Enumerations
|
||||||
|
|
||||||
|
[DataContract]
|
||||||
|
public enum WindDirection
|
||||||
|
{
|
||||||
|
[EnumMember]
|
||||||
|
North,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
NorthNorthEast,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
NorthEast,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
EastNorthEast,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
East,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
EastSouthEast,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
SouthEast,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
SouthSouthEast,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
South,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
SouthSouthWest,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
SouthWest,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
WestSouthWest,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
West,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
WestNorthWest,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
NorthWest,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
NorthNorthWest,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Unknown = -1
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
[DataContract]
|
||||||
|
public class WindDirectionDevice : DeviceBase
|
||||||
|
{
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
private const double WindowOffset = 0.7;
|
||||||
|
|
||||||
|
private readonly double[,] _lookupTable = { {4.66, 4.66, 2.38, 4.66}, // 0
|
||||||
|
{4.66, 3.18, 3.20, 4.64}, // 1
|
||||||
|
{4.66, 2.38, 4.66, 4.66}, // 2
|
||||||
|
{3.20, 3.20, 4.66, 4.64}, // 3
|
||||||
|
{2.38, 4.66, 4.66, 4.66}, // 4
|
||||||
|
{2.36, 4.62, 4.60, 0.06}, // 5
|
||||||
|
{4.64, 4.64, 4.64, 0.06}, // 6
|
||||||
|
{4.60, 4.60, 0.06, 0.06}, // 7
|
||||||
|
{4.64, 4.64, 0.06, 4.64}, // 8
|
||||||
|
{4.62, 0.06, 0.06, 4.60}, // 9
|
||||||
|
{4.64, 0.06, 4.64, 4.64}, // 10
|
||||||
|
{0.06, 0.06, 4.60, 4.60}, // 11
|
||||||
|
{0.06, 4.64, 4.64, 4.64}, // 12
|
||||||
|
{0.06, 4.62, 4.62, 2.34}, // 13
|
||||||
|
{4.66, 4.66, 4.66, 2.38}, // 14
|
||||||
|
{4.66, 4.66, 3.18, 3.18} }; // 15
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly Value _directionValue; // Cached direction value
|
||||||
|
|
||||||
|
private bool _initialized; // Has the device been initialized
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public WindDirectionDevice(Session session, owDevice device)
|
||||||
|
: base(session, device, DeviceType.WindDirection)
|
||||||
|
{
|
||||||
|
// Create the value
|
||||||
|
_directionValue = new Value(WeatherValueType.WindDirection, this);
|
||||||
|
|
||||||
|
_valueList.Add(WeatherValueType.WindDirection, _directionValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal override void RefreshCache()
|
||||||
|
{
|
||||||
|
_directionValue.SetValue((double)ReadDirection());
|
||||||
|
|
||||||
|
base.RefreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal WindDirection ReadDirection()
|
||||||
|
{
|
||||||
|
int direction = -1; // Decoded direction
|
||||||
|
|
||||||
|
// Cast the device as the specific device
|
||||||
|
owDeviceFamily20 voltage = (owDeviceFamily20)_device;
|
||||||
|
|
||||||
|
// If we haven't initialized the device we need to do it now
|
||||||
|
if (!_initialized)
|
||||||
|
{
|
||||||
|
// Initialize the device
|
||||||
|
voltage.Initialize();
|
||||||
|
|
||||||
|
// Remember that we've done this
|
||||||
|
_initialized = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the array of voltages from the device
|
||||||
|
double[] voltages = voltage.GetVoltages();
|
||||||
|
|
||||||
|
// Loop over the lookup table to find the direction that maps to the voltages
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
{
|
||||||
|
if (((voltages[0] <= _lookupTable[i, 0] + WindowOffset) && (voltages[0] >= _lookupTable[i, 0] - WindowOffset)) &&
|
||||||
|
((voltages[1] <= _lookupTable[i, 1] + WindowOffset) && (voltages[1] >= _lookupTable[i, 1] - WindowOffset)) &&
|
||||||
|
((voltages[2] <= _lookupTable[i, 2] + WindowOffset) && (voltages[2] >= _lookupTable[i, 2] - WindowOffset)) &&
|
||||||
|
((voltages[3] <= _lookupTable[i, 3] + WindowOffset) && (voltages[3] >= _lookupTable[i, 3] - WindowOffset)))
|
||||||
|
{
|
||||||
|
direction = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the direction
|
||||||
|
return (WindDirection)direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
76
Devices/WindSpeedDevice.cs
Normal file
76
Devices/WindSpeedDevice.cs
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using OneWireAPI;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Devices
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class WindSpeedDevice : DeviceBase
|
||||||
|
{
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly Value _speedValue; // Cached speed value
|
||||||
|
|
||||||
|
private long _lastTicks; // Last time we checked the counter
|
||||||
|
private uint _lastCount; // The count at the last check
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public WindSpeedDevice(Session session, owDevice device) : base(session, device, DeviceType.WindSpeed)
|
||||||
|
{
|
||||||
|
_speedValue = new Value(WeatherValueType.WindSpeed, this);
|
||||||
|
|
||||||
|
_valueList.Add(WeatherValueType.WindSpeed, _speedValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal override void RefreshCache()
|
||||||
|
{
|
||||||
|
_speedValue.SetValue(ReadSpeed());
|
||||||
|
|
||||||
|
base.RefreshCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
internal double ReadSpeed()
|
||||||
|
{
|
||||||
|
// Get a reference to the device
|
||||||
|
owDeviceFamily1D counterDevice = (owDeviceFamily1D) _device;
|
||||||
|
|
||||||
|
// Special case if we have never read before
|
||||||
|
if (_lastTicks == 0)
|
||||||
|
{
|
||||||
|
// Initialize the last data to the data now
|
||||||
|
_lastTicks = Stopwatch.GetTimestamp();
|
||||||
|
_lastCount = counterDevice.GetCounter(15);
|
||||||
|
|
||||||
|
// Wait for a second
|
||||||
|
System.Threading.Thread.Sleep(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the current counter and time
|
||||||
|
uint currentCount = counterDevice.GetCounter(15);
|
||||||
|
long currentTicks = Stopwatch.GetTimestamp();
|
||||||
|
|
||||||
|
// Get the time difference in seconds
|
||||||
|
double timeDifference = (double) (currentTicks - _lastTicks) / Stopwatch.Frequency;
|
||||||
|
|
||||||
|
// Figure out how many revolutions per second in the last interval
|
||||||
|
double revolutionsPerSecond = ((currentCount - _lastCount) / timeDifference) / 2D;
|
||||||
|
|
||||||
|
// Store the current time and counter
|
||||||
|
_lastTicks = currentTicks;
|
||||||
|
_lastCount = currentCount;
|
||||||
|
|
||||||
|
// Convert the revolutions per second to wind speed
|
||||||
|
return (revolutionsPerSecond * 2.453F);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
28
EventArguments.cs
Normal file
28
EventArguments.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
#region DeviceRefreshed
|
||||||
|
|
||||||
|
[Serializable]
|
||||||
|
public class DeviceRefreshedEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
private readonly DeviceBase _device;
|
||||||
|
|
||||||
|
public DeviceRefreshedEventArgs(DeviceBase Device)
|
||||||
|
{
|
||||||
|
_device = Device;
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceBase Device
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _device;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
109
Format.cs
Normal file
109
Format.cs
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
using WeatherService.Devices;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Common.Formatting
|
||||||
|
{
|
||||||
|
public static class Format
|
||||||
|
{
|
||||||
|
#region Value unit conversion
|
||||||
|
|
||||||
|
public static double ConvertValue(ReadingBase reading)
|
||||||
|
{
|
||||||
|
switch (reading.ValueType)
|
||||||
|
{
|
||||||
|
case WeatherValueType.Humidity:
|
||||||
|
return reading.Value;
|
||||||
|
|
||||||
|
case WeatherValueType.Pressure:
|
||||||
|
return reading.Value;
|
||||||
|
|
||||||
|
case WeatherValueType.Rain:
|
||||||
|
return Conversion.ConvertLength(reading.Value, LengthUnit.Millimeters, LengthUnit.Inches);
|
||||||
|
|
||||||
|
case WeatherValueType.Temperature:
|
||||||
|
return Conversion.ConvertTemperature(reading.Value, TemperatureUnit.Celsius, TemperatureUnit.Fahrenheit);
|
||||||
|
|
||||||
|
case WeatherValueType.WindDirection:
|
||||||
|
return reading.Value;
|
||||||
|
|
||||||
|
case WeatherValueType.WindSpeed:
|
||||||
|
return reading.Value;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return reading.Value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Value string formatting
|
||||||
|
|
||||||
|
public static string FormatValue(Value actualValue)
|
||||||
|
{
|
||||||
|
switch (actualValue.ValueType)
|
||||||
|
{
|
||||||
|
case WeatherValueType.Humidity:
|
||||||
|
return string.Format("{0:f2}", actualValue.Current.Value);
|
||||||
|
case WeatherValueType.Pressure:
|
||||||
|
return string.Format("{0:f2}", actualValue.Current.Value);
|
||||||
|
case WeatherValueType.Rain:
|
||||||
|
return string.Format("{0:f2}", Conversion.ConvertLength(actualValue.Total.Value, LengthUnit.Millimeters, LengthUnit.Inches));
|
||||||
|
case WeatherValueType.Temperature:
|
||||||
|
return string.Format("{0:f2}", actualValue.Current.Value * 9 / 5 + 32);
|
||||||
|
case WeatherValueType.WindDirection:
|
||||||
|
return string.Format("{0}", GetShortDirectionString((WindDirection)actualValue.Current.Value));
|
||||||
|
case WeatherValueType.WindSpeed:
|
||||||
|
return string.Format("{0:f2}", actualValue.Current.Value);
|
||||||
|
default:
|
||||||
|
return actualValue.Current.Value.ToString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Wind direction
|
||||||
|
|
||||||
|
public static string GetShortDirectionString(WindDirection actualValue)
|
||||||
|
{
|
||||||
|
switch (actualValue)
|
||||||
|
{
|
||||||
|
case WindDirection.North:
|
||||||
|
return "N";
|
||||||
|
case WindDirection.NorthNorthEast:
|
||||||
|
return "NNE";
|
||||||
|
case WindDirection.NorthEast:
|
||||||
|
return "NE";
|
||||||
|
case WindDirection.EastNorthEast:
|
||||||
|
return "ENE";
|
||||||
|
case WindDirection.East:
|
||||||
|
return "E";
|
||||||
|
case WindDirection.EastSouthEast:
|
||||||
|
return "ESE";
|
||||||
|
case WindDirection.SouthEast:
|
||||||
|
return "SE";
|
||||||
|
case WindDirection.SouthSouthEast:
|
||||||
|
return "SSE";
|
||||||
|
case WindDirection.South:
|
||||||
|
return "S";
|
||||||
|
case WindDirection.SouthSouthWest:
|
||||||
|
return "SSW";
|
||||||
|
case WindDirection.SouthWest:
|
||||||
|
return "SW";
|
||||||
|
case WindDirection.WestSouthWest:
|
||||||
|
return "WSW";
|
||||||
|
case WindDirection.West:
|
||||||
|
return "W";
|
||||||
|
case WindDirection.WestNorthWest:
|
||||||
|
return "WNW";
|
||||||
|
case WindDirection.NorthWest:
|
||||||
|
return "NW";
|
||||||
|
case WindDirection.NorthNorthWest:
|
||||||
|
return "NNW";
|
||||||
|
default:
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
70
Framework/ConsoleHarness.cs
Normal file
70
Framework/ConsoleHarness.cs
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
public static class ConsoleHarness
|
||||||
|
{
|
||||||
|
// Run a service from the console given a service implementation
|
||||||
|
public static void Run(string[] args, IWindowsService service)
|
||||||
|
{
|
||||||
|
bool isRunning = true;
|
||||||
|
|
||||||
|
// simulate starting the windows service
|
||||||
|
service.OnStart(args);
|
||||||
|
|
||||||
|
// let it run as long as Q is not pressed
|
||||||
|
while (isRunning)
|
||||||
|
{
|
||||||
|
WriteToConsole(ConsoleColor.Yellow, "Enter either [Q]uit, [P]ause, [R]esume : ");
|
||||||
|
isRunning = HandleConsoleInput(service, Console.ReadLine());
|
||||||
|
}
|
||||||
|
|
||||||
|
// stop and shutdown
|
||||||
|
service.OnStop();
|
||||||
|
service.OnShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Private input handler for console commands.
|
||||||
|
private static bool HandleConsoleInput(IWindowsService service, string line)
|
||||||
|
{
|
||||||
|
bool canContinue = true;
|
||||||
|
|
||||||
|
// check input
|
||||||
|
if (line != null)
|
||||||
|
{
|
||||||
|
switch (line.ToUpper())
|
||||||
|
{
|
||||||
|
case "Q":
|
||||||
|
canContinue = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "P":
|
||||||
|
service.OnPause();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "R":
|
||||||
|
service.OnContinue();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
WriteToConsole(ConsoleColor.Red, "Did not understand that input, try again.");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return canContinue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Helper method to write a message to the console at the given foreground color.
|
||||||
|
internal static void WriteToConsole(ConsoleColor foregroundColor, string format, params object[] formatArguments)
|
||||||
|
{
|
||||||
|
ConsoleColor originalColor = Console.ForegroundColor;
|
||||||
|
Console.ForegroundColor = foregroundColor;
|
||||||
|
|
||||||
|
Console.WriteLine(format, formatArguments);
|
||||||
|
Console.Out.Flush();
|
||||||
|
|
||||||
|
Console.ForegroundColor = originalColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
Framework/IWindowsService.cs
Normal file
46
Framework/IWindowsService.cs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The interface that any windows service should implement to be used
|
||||||
|
/// with the GenericWindowsService executable.
|
||||||
|
/// </summary>
|
||||||
|
public interface IWindowsService : IDisposable
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// This method is called when the service gets a request to start.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args">Any command line arguments</param>
|
||||||
|
void OnStart(string[] args);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is called when the service gets a request to stop.
|
||||||
|
/// </summary>
|
||||||
|
void OnStop();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is called when a service gets a request to pause,
|
||||||
|
/// but not stop completely.
|
||||||
|
/// </summary>
|
||||||
|
void OnPause();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is called when a service gets a request to resume
|
||||||
|
/// after a pause is issued.
|
||||||
|
/// </summary>
|
||||||
|
void OnContinue();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is called when the machine the service is running on
|
||||||
|
/// is being shutdown.
|
||||||
|
/// </summary>
|
||||||
|
void OnShutdown();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// This method is called when a custom command is issued to the service.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command">The command identifier to execute.</param >
|
||||||
|
void OnCustomCommand(int command);
|
||||||
|
}
|
||||||
|
}
|
||||||
47
Framework/TypeExtensions.cs
Normal file
47
Framework/TypeExtensions.cs
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Extension methods for the Type class
|
||||||
|
/// </summary>
|
||||||
|
public static class TypeExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Loads the configuration from assembly attributes
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type of the custom attribute to find.</typeparam>
|
||||||
|
/// <param name="typeWithAttributes">The calling assembly to search.</param>
|
||||||
|
/// <returns>The custom attribute of type T, if found.</returns>
|
||||||
|
public static T GetAttribute<T>(this Type typeWithAttributes)
|
||||||
|
where T : Attribute
|
||||||
|
{
|
||||||
|
return GetAttributes<T>(typeWithAttributes).FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Loads the configuration from assembly attributes
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T">The type of the custom attribute to find.</typeparam>
|
||||||
|
/// <param name="typeWithAttributes">The calling assembly to search.</param>
|
||||||
|
/// <returns>An enumeration of attributes of type T that were found.</returns>
|
||||||
|
public static IEnumerable<T> GetAttributes<T>(this Type typeWithAttributes)
|
||||||
|
where T : Attribute
|
||||||
|
{
|
||||||
|
// Try to find the configuration attribute for the default logger if it exists
|
||||||
|
object[] configAttributes = Attribute.GetCustomAttributes(typeWithAttributes,
|
||||||
|
typeof(T), false);
|
||||||
|
|
||||||
|
// get just the first one
|
||||||
|
if (configAttributes != null && configAttributes.Length > 0)
|
||||||
|
{
|
||||||
|
foreach (T attribute in configAttributes)
|
||||||
|
{
|
||||||
|
yield return attribute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
90
Framework/WindowsServiceAttribute.cs
Normal file
90
Framework/WindowsServiceAttribute.cs
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
using System;
|
||||||
|
using System.ServiceProcess;
|
||||||
|
|
||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
|
||||||
|
public class WindowsServiceAttribute : Attribute
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// The name of the service.
|
||||||
|
/// </summary>
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The displayable name that shows in service manager (defaults to Name).
|
||||||
|
/// </summary>
|
||||||
|
public string DisplayName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A textural description of the service name (defaults to Name).
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The user to run the service under (defaults to null). A null or empty
|
||||||
|
/// UserName field causes the service to run as ServiceAccount.LocalService.
|
||||||
|
/// </summary>
|
||||||
|
public string UserName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The password to run the service under (defaults to null). Ignored
|
||||||
|
/// if the UserName is empty or null, this property is ignored.
|
||||||
|
/// </summary>
|
||||||
|
public string Password { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Specifies the event log source to set the service's EventLog to. If this is
|
||||||
|
/// empty or null (the default) no event log source is set. If set, will auto-log
|
||||||
|
/// start and stop events.
|
||||||
|
/// </summary>
|
||||||
|
public string EventLogSource { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The method to start the service when the machine reboots (defaults to Manual).
|
||||||
|
/// </summary>
|
||||||
|
public ServiceStartMode StartMode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if service supports pause and continue (defaults to true).
|
||||||
|
/// </summary>
|
||||||
|
public bool CanPauseAndContinue { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if service supports shutdown event (defaults to true).
|
||||||
|
/// </summary>
|
||||||
|
public bool CanShutdown { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// True if service supports stop event (defaults to true).
|
||||||
|
/// </summary>
|
||||||
|
public bool CanStop { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The service account to use if the UserName is not specified.
|
||||||
|
/// </summary>
|
||||||
|
public ServiceAccount ServiceAccount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Marks an IWindowsService with configuration and installation attributes.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="name">The name of the windows service.</param>
|
||||||
|
public WindowsServiceAttribute(string name)
|
||||||
|
{
|
||||||
|
// set name and default description and display name to name.
|
||||||
|
Name = name;
|
||||||
|
Description = name;
|
||||||
|
DisplayName = name;
|
||||||
|
|
||||||
|
// default all other attributes.
|
||||||
|
CanStop = true;
|
||||||
|
CanShutdown = true;
|
||||||
|
CanPauseAndContinue = true;
|
||||||
|
StartMode = ServiceStartMode.Manual;
|
||||||
|
EventLogSource = null;
|
||||||
|
Password = null;
|
||||||
|
UserName = null;
|
||||||
|
ServiceAccount = ServiceAccount.LocalService;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
Framework/WindowsServiceHarness.Designer.cs
generated
Normal file
37
Framework/WindowsServiceHarness.Designer.cs
generated
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
public partial class WindowsServiceHarness
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
components = new System.ComponentModel.Container();
|
||||||
|
this.ServiceName = "UsageService";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
129
Framework/WindowsServiceHarness.cs
Normal file
129
Framework/WindowsServiceHarness.cs
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
using System;
|
||||||
|
using System.ServiceProcess;
|
||||||
|
|
||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A generic Windows Service that can handle any assembly that
|
||||||
|
/// implements IWindowsService (including AbstractWindowsService)
|
||||||
|
/// </summary>
|
||||||
|
public partial class WindowsServiceHarness : ServiceBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Get the class implementing the windows service
|
||||||
|
/// </summary>
|
||||||
|
public IWindowsService ServiceImplementation { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constructor a generic windows service from the given class
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="serviceImplementation">Service implementation.</param>
|
||||||
|
public WindowsServiceHarness(IWindowsService serviceImplementation)
|
||||||
|
{
|
||||||
|
// make sure service passed in is valid
|
||||||
|
if (serviceImplementation == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException("serviceImplementation",
|
||||||
|
"IWindowsService cannot be null in call to GenericWindowsService");
|
||||||
|
}
|
||||||
|
|
||||||
|
// set instance and backward instance
|
||||||
|
ServiceImplementation = serviceImplementation;
|
||||||
|
|
||||||
|
// configure our service
|
||||||
|
ConfigureServiceFromAttributes(serviceImplementation);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Override service control on continue
|
||||||
|
/// </summary>
|
||||||
|
protected override void OnContinue()
|
||||||
|
{
|
||||||
|
// perform class specific behavior
|
||||||
|
ServiceImplementation.OnContinue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when service is paused
|
||||||
|
/// </summary>
|
||||||
|
protected override void OnPause()
|
||||||
|
{
|
||||||
|
// perform class specific behavior
|
||||||
|
ServiceImplementation.OnPause();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when a custom command is requested
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command">Id of custom command</param>
|
||||||
|
protected override void OnCustomCommand(int command)
|
||||||
|
{
|
||||||
|
// perform class specific behavior
|
||||||
|
ServiceImplementation.OnCustomCommand(command);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when the Operating System is shutting down
|
||||||
|
/// </summary>
|
||||||
|
protected override void OnShutdown()
|
||||||
|
{
|
||||||
|
// perform class specific behavior
|
||||||
|
ServiceImplementation.OnShutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when service is requested to start
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="args">The startup arguments array.</param>
|
||||||
|
protected override void OnStart(string[] args)
|
||||||
|
{
|
||||||
|
ServiceImplementation.OnStart(args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when service is requested to stop
|
||||||
|
/// </summary>
|
||||||
|
protected override void OnStop()
|
||||||
|
{
|
||||||
|
ServiceImplementation.OnStop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set configuration data
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="serviceImplementation">The service with configuration settings.</param>
|
||||||
|
private void ConfigureServiceFromAttributes(IWindowsService serviceImplementation)
|
||||||
|
{
|
||||||
|
var attribute = serviceImplementation.GetType().GetAttribute<WindowsServiceAttribute>();
|
||||||
|
|
||||||
|
if (attribute != null)
|
||||||
|
{
|
||||||
|
// wire up the event log source, if provided
|
||||||
|
if (!string.IsNullOrWhiteSpace(attribute.EventLogSource))
|
||||||
|
{
|
||||||
|
// assign to the base service's EventLog property for auto-log events.
|
||||||
|
EventLog.Source = attribute.EventLogSource;
|
||||||
|
}
|
||||||
|
|
||||||
|
CanStop = attribute.CanStop;
|
||||||
|
CanPauseAndContinue = attribute.CanPauseAndContinue;
|
||||||
|
CanShutdown = attribute.CanShutdown;
|
||||||
|
|
||||||
|
// we don't handle: laptop power change event
|
||||||
|
CanHandlePowerEvent = false;
|
||||||
|
|
||||||
|
// we don't handle: Term Services session event
|
||||||
|
CanHandleSessionChangeEvent = false;
|
||||||
|
|
||||||
|
// always auto-event-log
|
||||||
|
AutoLog = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
throw new InvalidOperationException(
|
||||||
|
string.Format("IWindowsService implementer {0} must have a WindowsServiceAttribute.",
|
||||||
|
serviceImplementation.GetType().FullName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Framework/WindowsServiceInstaller.Designer.cs
generated
Normal file
36
Framework/WindowsServiceInstaller.Designer.cs
generated
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
public partial class WindowsServiceInstaller
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
components = new System.ComponentModel.Container();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
212
Framework/WindowsServiceInstaller.cs
Normal file
212
Framework/WindowsServiceInstaller.cs
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Configuration.Install;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.ServiceProcess;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace WeatherService.Framework
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A generic windows service installer
|
||||||
|
/// </summary>
|
||||||
|
[RunInstaller(true)]
|
||||||
|
public partial class WindowsServiceInstaller : Installer
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the type of the windows service to install.
|
||||||
|
/// </summary>
|
||||||
|
public WindowsServiceAttribute Configuration { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a blank windows service installer with configuration in ServiceImplementation
|
||||||
|
/// </summary>
|
||||||
|
public WindowsServiceInstaller() : this (typeof(ServiceImplementation))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a windows service installer using the type specified.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="windowsServiceType">The type of the windows service to install.</param>
|
||||||
|
public WindowsServiceInstaller(Type windowsServiceType)
|
||||||
|
{
|
||||||
|
if (!windowsServiceType.GetInterfaces().Contains(typeof(IWindowsService)))
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Type to install must implement IWindowsService.",
|
||||||
|
"windowsServiceType");
|
||||||
|
}
|
||||||
|
|
||||||
|
var attribute = windowsServiceType.GetAttribute<WindowsServiceAttribute>();
|
||||||
|
|
||||||
|
if (attribute == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Type to install must be marked with a WindowsServiceAttribute.",
|
||||||
|
"windowsServiceType");
|
||||||
|
}
|
||||||
|
|
||||||
|
Configuration = attribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs a transacted installation at run-time of the AutoCounterInstaller and any other listed installers.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="otherInstallers">The other installers to include in the transaction</param>
|
||||||
|
/// <typeparam name="T">The IWindowsService implementer to install.</typeparam>
|
||||||
|
public static void RuntimeInstall<T>()
|
||||||
|
where T : IWindowsService
|
||||||
|
{
|
||||||
|
string path = "/assemblypath=" + Assembly.GetEntryAssembly().Location;
|
||||||
|
|
||||||
|
using (var ti = new TransactedInstaller())
|
||||||
|
{
|
||||||
|
ti.Installers.Add(new WindowsServiceInstaller(typeof (T)));
|
||||||
|
ti.Context = new InstallContext(null, new [] { path });
|
||||||
|
ti.Install(new Hashtable());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs a transacted un-installation at run-time of the AutoCounterInstaller and any other listed installers.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="otherInstallers">The other installers to include in the transaction</param>
|
||||||
|
/// <typeparam name="T">The IWindowsService implementer to install.</typeparam>
|
||||||
|
public static void RuntimeUnInstall<T>(params Installer[] otherInstallers)
|
||||||
|
where T : IWindowsService
|
||||||
|
{
|
||||||
|
string path = "/assemblypath=" + Assembly.GetEntryAssembly().Location;
|
||||||
|
|
||||||
|
using (var ti = new TransactedInstaller())
|
||||||
|
{
|
||||||
|
ti.Installers.Add(new WindowsServiceInstaller(typeof (T)));
|
||||||
|
ti.Context = new InstallContext(null, new [] { path });
|
||||||
|
ti.Uninstall(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Installer class, to use run InstallUtil against this .exe
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="savedState">The saved state for the installation.</param>
|
||||||
|
public override void Install(System.Collections.IDictionary savedState)
|
||||||
|
{
|
||||||
|
ConsoleHarness.WriteToConsole(ConsoleColor.White, "Installing service {0}.", Configuration.Name);
|
||||||
|
|
||||||
|
// install the service
|
||||||
|
ConfigureInstallers();
|
||||||
|
base.Install(savedState);
|
||||||
|
|
||||||
|
// wire up the event log source, if provided
|
||||||
|
if (!string.IsNullOrWhiteSpace(Configuration.EventLogSource))
|
||||||
|
{
|
||||||
|
// create the source if it doesn't exist
|
||||||
|
if (!EventLog.SourceExists(Configuration.EventLogSource))
|
||||||
|
{
|
||||||
|
EventLog.CreateEventSource(Configuration.EventLogSource, "Application");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the counters, then calls the base uninstall.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="savedState">The saved state for the installation.</param>
|
||||||
|
public override void Uninstall(System.Collections.IDictionary savedState)
|
||||||
|
{
|
||||||
|
ConsoleHarness.WriteToConsole(ConsoleColor.White, "Un-Installing service {0}.", Configuration.Name);
|
||||||
|
|
||||||
|
// load the assembly file name and the config
|
||||||
|
ConfigureInstallers();
|
||||||
|
base.Uninstall(savedState);
|
||||||
|
|
||||||
|
// wire up the event log source, if provided
|
||||||
|
if (!string.IsNullOrWhiteSpace(Configuration.EventLogSource))
|
||||||
|
{
|
||||||
|
// create the source if it doesn't exist
|
||||||
|
if (EventLog.SourceExists(Configuration.EventLogSource))
|
||||||
|
{
|
||||||
|
EventLog.DeleteEventSource(Configuration.EventLogSource);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Rolls back to the state of the counter, and performs the normal rollback.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="savedState">The saved state for the installation.</param>
|
||||||
|
public override void Rollback(System.Collections.IDictionary savedState)
|
||||||
|
{
|
||||||
|
ConsoleHarness.WriteToConsole(ConsoleColor.White, "Rolling back service {0}.", Configuration.Name);
|
||||||
|
|
||||||
|
// load the assembly file name and the config
|
||||||
|
ConfigureInstallers();
|
||||||
|
base.Rollback(savedState);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Method to configure the installers
|
||||||
|
/// </summary>
|
||||||
|
private void ConfigureInstallers()
|
||||||
|
{
|
||||||
|
// load the assembly file name and the config
|
||||||
|
Installers.Add(ConfigureProcessInstaller());
|
||||||
|
Installers.Add(ConfigureServiceInstaller());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Helper method to configure a process installer for this windows service
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Process installer for this service</returns>
|
||||||
|
private ServiceProcessInstaller ConfigureProcessInstaller()
|
||||||
|
{
|
||||||
|
var result = new ServiceProcessInstaller();
|
||||||
|
|
||||||
|
// if a user name is not provided, will run under local service acct
|
||||||
|
if (string.IsNullOrEmpty(Configuration.UserName))
|
||||||
|
{
|
||||||
|
result.Account = Configuration.ServiceAccount;
|
||||||
|
result.Username = null;
|
||||||
|
result.Password = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// otherwise, runs under the specified user authority
|
||||||
|
result.Account = ServiceAccount.User;
|
||||||
|
result.Username = Configuration.UserName;
|
||||||
|
result.Password = Configuration.Password;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Helper method to configure a service installer for this windows service
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Process installer for this service</returns>
|
||||||
|
private ServiceInstaller ConfigureServiceInstaller()
|
||||||
|
{
|
||||||
|
// create and config a service installer
|
||||||
|
var result = new ServiceInstaller
|
||||||
|
{
|
||||||
|
ServiceName = Configuration.Name,
|
||||||
|
DisplayName = Configuration.DisplayName,
|
||||||
|
Description = Configuration.Description,
|
||||||
|
StartType = Configuration.StartMode,
|
||||||
|
};
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
61
Program.cs
Normal file
61
Program.cs
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
using Common.Debug;
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
|
using System.ServiceProcess;
|
||||||
|
using WeatherService.Framework;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
public static Session Session { get; set;}
|
||||||
|
|
||||||
|
static void Main(string[] args)
|
||||||
|
{
|
||||||
|
Tracer.Initialize(@"C:\WeatherCenter\Logs", "WeatherService", Process.GetCurrentProcess().Id.ToString(), Environment.UserInteractive);
|
||||||
|
|
||||||
|
if (args.Contains("-install", StringComparer.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
Tracer.WriteLine("Starting install...");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WindowsServiceInstaller.RuntimeInstall<ServiceImplementation>();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Tracer.WriteException("Service install", exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
Tracer.WriteLine("Install complete");
|
||||||
|
}
|
||||||
|
else if (args.Contains("-uninstall", StringComparer.InvariantCultureIgnoreCase))
|
||||||
|
{
|
||||||
|
Tracer.WriteLine("Starting uninstall...");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WindowsServiceInstaller.RuntimeUnInstall<ServiceImplementation>();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Tracer.WriteException("Service uninstall", exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
Tracer.WriteLine("Uninstall complete");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Tracer.WriteLine("Starting service");
|
||||||
|
|
||||||
|
var implementation = new ServiceImplementation();
|
||||||
|
|
||||||
|
if (Environment.UserInteractive)
|
||||||
|
ConsoleHarness.Run(args, implementation);
|
||||||
|
else
|
||||||
|
ServiceBase.Run(new WindowsServiceHarness(implementation));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Properties/AssemblyInfo.cs
Normal file
36
Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
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("WeatherService")]
|
||||||
|
[assembly: AssemblyDescription("")]
|
||||||
|
[assembly: AssemblyConfiguration("")]
|
||||||
|
[assembly: AssemblyCompany("")]
|
||||||
|
[assembly: AssemblyProduct("WeatherService")]
|
||||||
|
[assembly: AssemblyCopyright("Copyright © 2012")]
|
||||||
|
[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("4d795cba-d705-4c00-8306-423403876429")]
|
||||||
|
|
||||||
|
// 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")]
|
||||||
9
Remote/DeviceHistory.cs
Normal file
9
Remote/DeviceHistory.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService.Remote
|
||||||
|
{
|
||||||
|
public class DeviceHistory : Dictionary<WeatherValueType, List<ReadingBase>>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
31
Remote/IWeatherService.cs
Normal file
31
Remote/IWeatherService.cs
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ServiceModel;
|
||||||
|
using System.ServiceModel.Web;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
using WeatherService.Remote;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
[ServiceContract]
|
||||||
|
public interface IWeatherService
|
||||||
|
{
|
||||||
|
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
|
||||||
|
List<DeviceBase> GetDevices();
|
||||||
|
|
||||||
|
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
|
||||||
|
ReadingBase GetLatestReading(string deviceAddress, WeatherValueType valueType);
|
||||||
|
|
||||||
|
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
|
||||||
|
DeviceHistory GetDeviceHistory(string deviceAddress);
|
||||||
|
|
||||||
|
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
|
||||||
|
Dictionary<DeviceBase, List<ReadingBase>> GetDeviceHistoryByValueType(WeatherValueType valueType);
|
||||||
|
|
||||||
|
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
|
||||||
|
Dictionary<string, List<WindSpeedReading>> GetWindSpeedHistory(int groupIntervalMinutes);
|
||||||
|
|
||||||
|
[WebGet(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
|
||||||
|
Dictionary<string, int> GetWindDirectionHistory();
|
||||||
|
}
|
||||||
|
}
|
||||||
11
Remote/IWeatherServiceCallback.cs
Normal file
11
Remote/IWeatherServiceCallback.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using System.ServiceModel;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
public interface IWeatherServiceCallback
|
||||||
|
{
|
||||||
|
[OperationContract(IsOneWay = true)]
|
||||||
|
void OnDeviceUpdate(DeviceBase device);
|
||||||
|
}
|
||||||
|
}
|
||||||
36
Remote/IWeatherServiceDuplex.cs
Normal file
36
Remote/IWeatherServiceDuplex.cs
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ServiceModel;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
using WeatherService.Remote;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
[ServiceContract(CallbackContract = typeof(IWeatherServiceCallback))]
|
||||||
|
public interface IWeatherServiceDuplex
|
||||||
|
{
|
||||||
|
[OperationContract]
|
||||||
|
List<DeviceBase> GetDevices();
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
ReadingBase GetLatestReading(string deviceAddress, WeatherValueType valueType);
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
bool Subscribe();
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
bool Unsubscribe();
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
DeviceHistory GetDeviceHistory(string deviceAddress);
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
Dictionary<DeviceBase, List<ReadingBase>> GetDeviceHistoryByValueType(WeatherValueType valueType);
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
Dictionary<string, List<WindSpeedReading>> GetWindSpeedHistory(int groupIntervalMinutes);
|
||||||
|
|
||||||
|
[OperationContract]
|
||||||
|
Dictionary<string, int> GetWindDirectionHistory();
|
||||||
|
}
|
||||||
|
}
|
||||||
55
Remote/WeatherService.cs
Normal file
55
Remote/WeatherService.cs
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ServiceModel.Activation;
|
||||||
|
using System.ServiceModel.Web;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
using WeatherService.Remote;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
|
||||||
|
public class WeatherService : IWeatherService
|
||||||
|
{
|
||||||
|
public List<DeviceBase> GetDevices()
|
||||||
|
{
|
||||||
|
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
return WeatherServiceCommon.GetDevices();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReadingBase GetLatestReading(string deviceAddress, WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
return WeatherServiceCommon.GetLatestReading(deviceAddress, valueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceHistory GetDeviceHistory(string deviceAddress)
|
||||||
|
{
|
||||||
|
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
return WeatherServiceCommon.GetDeviceHistory(deviceAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<DeviceBase, List<ReadingBase>> GetDeviceHistoryByValueType(WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
return WeatherServiceCommon.GetDeviceHistoryByValueType(valueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, List<WindSpeedReading>> GetWindSpeedHistory(int groupIntervalMinutes)
|
||||||
|
{
|
||||||
|
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
return WeatherServiceCommon.GetWindSpeedHistory(groupIntervalMinutes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, int> GetWindDirectionHistory()
|
||||||
|
{
|
||||||
|
WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
|
||||||
|
|
||||||
|
return WeatherServiceCommon.GetWindDirectionHistory();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
104
Remote/WeatherServiceCommon.cs
Normal file
104
Remote/WeatherServiceCommon.cs
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using WeatherService.Values;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
|
||||||
|
namespace WeatherService.Remote
|
||||||
|
{
|
||||||
|
internal static class WeatherServiceCommon
|
||||||
|
{
|
||||||
|
public static List<DeviceBase> GetDevices()
|
||||||
|
{
|
||||||
|
var deviceList = Program.Session.Devices.ToList();
|
||||||
|
|
||||||
|
return deviceList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ReadingBase GetLatestReading(string deviceAddress, WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
DeviceBase deviceBase = Program.Session.Devices.Where(d => d.Address == deviceAddress).FirstOrDefault();
|
||||||
|
|
||||||
|
if (deviceBase == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
return deviceBase.GetValue(valueType).Current;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DeviceHistory GetDeviceHistory(string deviceAddress)
|
||||||
|
{
|
||||||
|
DeviceBase deviceBase = Program.Session.Devices.Where(d => d.Address == deviceAddress).FirstOrDefault();
|
||||||
|
|
||||||
|
if (deviceBase == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
DeviceHistory deviceHistory = new DeviceHistory();
|
||||||
|
|
||||||
|
foreach (var valueEntry in deviceBase.Values)
|
||||||
|
{
|
||||||
|
deviceHistory[valueEntry.Key] = valueEntry.Value.History;
|
||||||
|
}
|
||||||
|
|
||||||
|
return deviceHistory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<DeviceBase, List<ReadingBase>> GetDeviceHistoryByValueType(WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
var devices = Program.Session.Devices.Where(d => d.SupportedValues.Contains(valueType));
|
||||||
|
|
||||||
|
Dictionary<DeviceBase, List<ReadingBase>> deviceHistoryList = new Dictionary<DeviceBase, List<ReadingBase>>();
|
||||||
|
|
||||||
|
foreach (var device in devices)
|
||||||
|
{
|
||||||
|
deviceHistoryList[device] = device.GetValue(valueType).History;
|
||||||
|
}
|
||||||
|
|
||||||
|
return deviceHistoryList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, List<WindSpeedReading>> GetWindSpeedHistory(int groupIntervalMinutes)
|
||||||
|
{
|
||||||
|
var windSpeedHistory = new Dictionary<string, List<WindSpeedReading>>();
|
||||||
|
|
||||||
|
var device = Program.Session.Devices.Where(d => d.SupportedValues.Contains(WeatherValueType.WindSpeed)).FirstOrDefault();
|
||||||
|
|
||||||
|
if (device == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var values = device.GetValue(WeatherValueType.WindSpeed).History;
|
||||||
|
|
||||||
|
TimeSpan interval = new TimeSpan(0, groupIntervalMinutes, 0);
|
||||||
|
|
||||||
|
var groupList = values.GroupBy(reading => reading.ReadTime.Ticks / interval.Ticks).Select(d => new
|
||||||
|
{
|
||||||
|
ReadTime = new DateTime(d.Key * interval.Ticks),
|
||||||
|
Readings = d.Select(r => r.Value)
|
||||||
|
});
|
||||||
|
|
||||||
|
windSpeedHistory["Average"] = groupList.Select(d => new WindSpeedReading(WeatherValueType.WindSpeed) { ReadTime = d.ReadTime, Value = d.Readings.Average() }).ToList();
|
||||||
|
windSpeedHistory["Minimum"] = groupList.Select(d => new WindSpeedReading(WeatherValueType.WindSpeed) { ReadTime = d.ReadTime, Value = d.Readings.Min() }).ToList();
|
||||||
|
windSpeedHistory["Maximum"] = groupList.Select(d => new WindSpeedReading(WeatherValueType.WindSpeed) { ReadTime = d.ReadTime, Value = d.Readings.Max() }).ToList();
|
||||||
|
|
||||||
|
return windSpeedHistory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Dictionary<string, int> GetWindDirectionHistory()
|
||||||
|
{
|
||||||
|
var device = Program.Session.Devices.Where(d => d.SupportedValues.Contains(WeatherValueType.WindDirection)).FirstOrDefault();
|
||||||
|
|
||||||
|
if (device == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var history = device.GetValue(WeatherValueType.WindDirection).History
|
||||||
|
.Cast<WindDirectionReading>()
|
||||||
|
.Where(r => r.WindDirectionValue != WindDirection.Unknown)
|
||||||
|
.OrderBy(r => r.Value);
|
||||||
|
|
||||||
|
var grouped = history
|
||||||
|
.GroupBy(r => r.WindDirectionString)
|
||||||
|
.ToDictionary(r => r.Key, r => r.Count());
|
||||||
|
|
||||||
|
return grouped;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
111
Remote/WeatherServiceDuplex.cs
Normal file
111
Remote/WeatherServiceDuplex.cs
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ServiceModel;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
using WeatherService.Remote;
|
||||||
|
using WeatherService.Values;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
[CallbackBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
|
||||||
|
public class WeatherServiceDuplex : IWeatherServiceDuplex
|
||||||
|
{
|
||||||
|
private static readonly List<IWeatherServiceCallback> subscribers = new List<IWeatherServiceCallback>();
|
||||||
|
|
||||||
|
public List<DeviceBase> GetDevices()
|
||||||
|
{
|
||||||
|
return WeatherServiceCommon.GetDevices();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ReadingBase GetLatestReading(string deviceAddress, WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
return WeatherServiceCommon.GetLatestReading(deviceAddress, valueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public DeviceHistory GetDeviceHistory(string deviceAddress)
|
||||||
|
{
|
||||||
|
return WeatherServiceCommon.GetDeviceHistory(deviceAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<DeviceBase, List<ReadingBase>> GetDeviceHistoryByValueType(WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
return WeatherServiceCommon.GetDeviceHistoryByValueType(valueType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, List<WindSpeedReading>> GetWindSpeedHistory(int groupIntervalMinutes)
|
||||||
|
{
|
||||||
|
return WeatherServiceCommon.GetWindSpeedHistory(groupIntervalMinutes);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Dictionary<string, int> GetWindDirectionHistory()
|
||||||
|
{
|
||||||
|
return WeatherServiceCommon.GetWindDirectionHistory();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Subscribe()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IWeatherServiceCallback callback = OperationContext.Current.GetCallbackChannel<IWeatherServiceCallback>();
|
||||||
|
|
||||||
|
if (!subscribers.Contains(callback))
|
||||||
|
subscribers.Add(callback);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool Unsubscribe()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IWeatherServiceCallback callback = OperationContext.Current.GetCallbackChannel<IWeatherServiceCallback>();
|
||||||
|
|
||||||
|
if (subscribers.Contains(callback))
|
||||||
|
subscribers.Remove(callback);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static void FireNotification(DeviceBase device)
|
||||||
|
{
|
||||||
|
// Create a list of callbacks that need to be removed
|
||||||
|
var removeList = new List<IWeatherServiceCallback>();
|
||||||
|
|
||||||
|
// Loop over each subscriber
|
||||||
|
foreach (var callback in subscribers)
|
||||||
|
{
|
||||||
|
// If the callback connection isn't open...
|
||||||
|
if ((callback as ICommunicationObject).State != CommunicationState.Opened)
|
||||||
|
{
|
||||||
|
// ...add it to the remove list and continue
|
||||||
|
removeList.Add(callback);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Make the callback
|
||||||
|
callback.OnDeviceUpdate(device);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// The callback failed - add it to the remove list
|
||||||
|
removeList.Add(callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove all callbacks in the remove list
|
||||||
|
removeList.ForEach(o => subscribers.Remove(o));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
77
ServiceImplementation.cs
Normal file
77
ServiceImplementation.cs
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
using Common.Debug;
|
||||||
|
using Microsoft.Owin.Hosting;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using System.ServiceModel.Web;
|
||||||
|
using System.ServiceProcess;
|
||||||
|
using WeatherService.Framework;
|
||||||
|
using WeatherService.SignalR;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
[WindowsService("WeatherService", DisplayName = "Weather Reporting Service", Description = "", StartMode = ServiceStartMode.Automatic, ServiceAccount = ServiceAccount.LocalSystem)]
|
||||||
|
public class ServiceImplementation : IWindowsService
|
||||||
|
{
|
||||||
|
private List<WebServiceHost> _serviceHosts = new List<WebServiceHost>();
|
||||||
|
private IDisposable _signalR;
|
||||||
|
|
||||||
|
public void OnStart(string[] args)
|
||||||
|
{
|
||||||
|
using (new BeginEndTracer(GetType().Name, "OnStart"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_serviceHosts.Add(new WebServiceHost(typeof(WeatherService)));
|
||||||
|
_serviceHosts.Add(new WebServiceHost(typeof(WeatherServiceDuplex)));
|
||||||
|
|
||||||
|
_serviceHosts.ForEach(h => h.Open());
|
||||||
|
|
||||||
|
_signalR = WebApp.Start<Startup>(Settings.Default.SignalR_ListenUrl);
|
||||||
|
Trace.Listeners.Remove("KatanaTraceListener");
|
||||||
|
|
||||||
|
Program.Session = new Session();
|
||||||
|
Program.Session.Initialize();
|
||||||
|
Program.Session.StartRefresh();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Tracer.WriteException("ServiceImplementation.OnStart", exception);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnStop()
|
||||||
|
{
|
||||||
|
using (new BeginEndTracer(GetType().Name, "OnStop"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_signalR.Dispose();
|
||||||
|
|
||||||
|
Program.Session.StopRefresh();
|
||||||
|
Program.Session.Terminate();
|
||||||
|
|
||||||
|
_serviceHosts.ForEach(h => h.Close());
|
||||||
|
_serviceHosts.Clear();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Tracer.WriteException("ServiceImplementation.OnStop", exception);
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void OnPause() { }
|
||||||
|
|
||||||
|
public void OnContinue() { }
|
||||||
|
|
||||||
|
public void OnShutdown() { }
|
||||||
|
|
||||||
|
public void Dispose() { }
|
||||||
|
|
||||||
|
public void OnCustomCommand(int command) { }
|
||||||
|
}
|
||||||
|
}
|
||||||
278
Session.cs
Normal file
278
Session.cs
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
using Common.Debug;
|
||||||
|
using Common.Extensions;
|
||||||
|
using Microsoft.AspNet.SignalR;
|
||||||
|
using OneWireAPI;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using WeatherService.Data;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
using WeatherService.SignalR;
|
||||||
|
|
||||||
|
namespace WeatherService
|
||||||
|
{
|
||||||
|
public class Session
|
||||||
|
{
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private Thread _thread;
|
||||||
|
private IHubContext _hubContext;
|
||||||
|
|
||||||
|
private static volatile bool _terminateThread;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Events
|
||||||
|
|
||||||
|
private void FireDeviceRefreshed(DeviceBase oDevice)
|
||||||
|
{
|
||||||
|
WeatherServiceDuplex.FireNotification(oDevice);
|
||||||
|
|
||||||
|
_hubContext.Clients.All.addMessage(oDevice.ToJson());
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public Session()
|
||||||
|
{
|
||||||
|
// Initialize the database
|
||||||
|
Database.Initialize(Settings.Default.DatabaseFile);
|
||||||
|
|
||||||
|
// Create the list of devices
|
||||||
|
Devices = new List<DeviceBase>();
|
||||||
|
|
||||||
|
// Create a new session
|
||||||
|
OneWireSession = new owSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Private methods
|
||||||
|
|
||||||
|
private void ThreadProcedure()
|
||||||
|
{
|
||||||
|
while (!_terminateThread)
|
||||||
|
{
|
||||||
|
//FireRefreshStarted();
|
||||||
|
|
||||||
|
OneWireSession.Network.Initialize();
|
||||||
|
|
||||||
|
foreach (DeviceBase device in Devices)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
DeviceOperations++;
|
||||||
|
|
||||||
|
// Refresh the cached data for this device
|
||||||
|
bool refreshed = device.DoCacheRefresh();
|
||||||
|
|
||||||
|
// Fire event if device was actually refreshed
|
||||||
|
if (refreshed)
|
||||||
|
{
|
||||||
|
FireDeviceRefreshed(device);
|
||||||
|
device.Operations++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (owException exception)
|
||||||
|
{
|
||||||
|
DeviceErrors++;
|
||||||
|
device.Errors++;
|
||||||
|
|
||||||
|
// TODO - Error event
|
||||||
|
Tracer.WriteLine(String.Format("{0} - Error in device {1}: {2}", DateTime.Now, exception.DeviceID.Name, exception.Message));
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
// TODO - Error event
|
||||||
|
Tracer.WriteLine(String.Format("{0} - Unknown error: {1}", DateTime.Now, exception.Message));
|
||||||
|
|
||||||
|
// Rethrow the exception
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_terminateThread)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fire the refresh completed event
|
||||||
|
//FireRefreshCompleted();
|
||||||
|
|
||||||
|
// Sleep the thread for a second - we don't need a hard loop
|
||||||
|
Thread.Sleep(Settings.Default.PollingInterval);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddWeatherDevice(owDevice device)
|
||||||
|
{
|
||||||
|
// TODO - Handle device mapping for multiple devices that use the same family code
|
||||||
|
|
||||||
|
switch (device.Family)
|
||||||
|
{
|
||||||
|
case 0x12:
|
||||||
|
TMEX.FileEntry fileEntry = new TMEX.FileEntry(); // Entry to describe a file
|
||||||
|
byte[] fileData = new byte[8]; // File data
|
||||||
|
owIdentifier deviceID; // Identifier for the other device
|
||||||
|
|
||||||
|
// Select this device
|
||||||
|
owAdapter.Select(device.ID);
|
||||||
|
|
||||||
|
// Setup to try to open the pressure sensor file
|
||||||
|
fileEntry.Name = System.Text.Encoding.ASCII.GetBytes("8570");
|
||||||
|
fileEntry.Extension = 0;
|
||||||
|
|
||||||
|
// Try to open the file
|
||||||
|
short fileHandle = TMEX.TMOpenFile(OneWireSession.SessionHandle, OneWireSession.StateBuffer, ref fileEntry);
|
||||||
|
|
||||||
|
// If a file was found then try to read it
|
||||||
|
if (fileHandle >= 0)
|
||||||
|
{
|
||||||
|
// Read the file to get the ID of the other device
|
||||||
|
TMEX.TMReadFile(OneWireSession.SessionHandle, OneWireSession.StateBuffer, fileHandle, fileData, (short) fileData.Length);
|
||||||
|
|
||||||
|
// Close the file
|
||||||
|
TMEX.TMCloseFile(OneWireSession.SessionHandle, OneWireSession.StateBuffer, fileHandle);
|
||||||
|
|
||||||
|
// Create an ID so we can get the string name
|
||||||
|
deviceID = new owIdentifier(fileData);
|
||||||
|
|
||||||
|
// Find the other device
|
||||||
|
owDevice otherDevice = (owDevice) OneWireSession.Network.Devices[deviceID.Name];
|
||||||
|
|
||||||
|
// Create a new pressure device and it to the the list
|
||||||
|
Devices.Add(new PressureDevice(this, device, otherDevice));
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x10:
|
||||||
|
// Create a new temperature device and add it to the list
|
||||||
|
Devices.Add(new TemperatureDevice(this, device));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x1D:
|
||||||
|
if (device.ID.Name == "4000000004A4081D")
|
||||||
|
{
|
||||||
|
// Create a new rain device and add it to the list
|
||||||
|
Devices.Add(new RainDevice(this, device));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Create a new wind speed device and add it to the list
|
||||||
|
Devices.Add(new WindSpeedDevice(this, device));
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x20:
|
||||||
|
// Create a new wind direction device and add it to the list
|
||||||
|
Devices.Add(new WindDirectionDevice(this, device));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 0x26:
|
||||||
|
// Create a new humidity device and add it to the list
|
||||||
|
Devices.Add(new HumidityDevice(this, device));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void LoadWeatherDevices()
|
||||||
|
{
|
||||||
|
// Add each 1-wire device as a weather device
|
||||||
|
OneWireSession.Network.Devices.Values.ToList().ForEach(d => AddWeatherDevice(d));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Public methods
|
||||||
|
|
||||||
|
public void Initialize()
|
||||||
|
{
|
||||||
|
// Create the SignalR hub context
|
||||||
|
_hubContext = GlobalHost.ConnectionManager.GetHubContext<WeatherHub>();
|
||||||
|
|
||||||
|
// Try 5 times to aquire a session
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
// Get the session going
|
||||||
|
bool result = OneWireSession.Acquire();
|
||||||
|
|
||||||
|
// If successful then break out
|
||||||
|
if (result)
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Wait for a little bit
|
||||||
|
Thread.Sleep(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hook events for new devices
|
||||||
|
OneWireSession.Network.DeviceAdded += HandleDeviceAdded;
|
||||||
|
|
||||||
|
// Load the list of weather devices
|
||||||
|
LoadWeatherDevices();
|
||||||
|
|
||||||
|
// Fire the initialized event
|
||||||
|
//FireInitialized();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void HandleDeviceAdded(owDevice device)
|
||||||
|
{
|
||||||
|
AddWeatherDevice(device);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Terminate()
|
||||||
|
{
|
||||||
|
// Fire the terminated event
|
||||||
|
//FireTerminated();
|
||||||
|
|
||||||
|
// Make sure the refresh thread has stopped
|
||||||
|
StopRefresh();
|
||||||
|
|
||||||
|
// Release the session
|
||||||
|
if (OneWireSession != null)
|
||||||
|
OneWireSession.Release();
|
||||||
|
|
||||||
|
OneWireSession = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartRefresh()
|
||||||
|
{
|
||||||
|
// Create the cache refresh thread
|
||||||
|
_thread = new Thread(ThreadProcedure);
|
||||||
|
|
||||||
|
// Start the thread
|
||||||
|
_thread.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StopRefresh()
|
||||||
|
{
|
||||||
|
if (_thread == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Terminate the thread on the next check
|
||||||
|
_terminateThread = true;
|
||||||
|
|
||||||
|
// Wait for the thread to terminate
|
||||||
|
_thread.Join();
|
||||||
|
|
||||||
|
_thread = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
public List<DeviceBase> Devices { get; private set; }
|
||||||
|
|
||||||
|
public long DeviceOperations { get; private set; }
|
||||||
|
|
||||||
|
public long DeviceErrors { get; private set; }
|
||||||
|
|
||||||
|
internal owSession OneWireSession { get; private set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
80
Settings.Designer.cs
generated
Normal file
80
Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
// Runtime Version:4.0.30319.18033
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WeatherService {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||||
|
public bool LogDatabase {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["LogDatabase"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string LcdTemplate {
|
||||||
|
get {
|
||||||
|
return ((string)(this["LcdTemplate"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("00:00:01")]
|
||||||
|
public global::System.TimeSpan PollingInterval {
|
||||||
|
get {
|
||||||
|
return ((global::System.TimeSpan)(this["PollingInterval"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("C:\\WeatherCenter\\WeatherCenter.sdf")]
|
||||||
|
public string DatabaseFile {
|
||||||
|
get {
|
||||||
|
return ((string)(this["DatabaseFile"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("http://*:9090")]
|
||||||
|
public string SignalR_ListenUrl {
|
||||||
|
get {
|
||||||
|
return ((string)(this["SignalR_ListenUrl"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.ApplicationScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("http://localhost:9090")]
|
||||||
|
public string SignalR_ConnectUrl {
|
||||||
|
get {
|
||||||
|
return ((string)(this["SignalR_ConnectUrl"]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
24
Settings.settings
Normal file
24
Settings.settings
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version='1.0' encoding='utf-8'?>
|
||||||
|
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="WeatherService" GeneratedClassName="Settings">
|
||||||
|
<Profiles />
|
||||||
|
<Settings>
|
||||||
|
<Setting Name="LogDatabase" Type="System.Boolean" Scope="Application">
|
||||||
|
<Value Profile="(Default)">False</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="LcdTemplate" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="PollingInterval" Type="System.TimeSpan" Scope="Application">
|
||||||
|
<Value Profile="(Default)">00:00:01</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="DatabaseFile" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">C:\WeatherCenter\WeatherCenter.sdf</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="SignalR_ListenUrl" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">http://*:9090</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="SignalR_ConnectUrl" Type="System.String" Scope="Application">
|
||||||
|
<Value Profile="(Default)">http://localhost:9090</Value>
|
||||||
|
</Setting>
|
||||||
|
</Settings>
|
||||||
|
</SettingsFile>
|
||||||
20
SignalR/Startup.cs
Normal file
20
SignalR/Startup.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using Microsoft.AspNet.SignalR;
|
||||||
|
using Microsoft.Owin.Cors;
|
||||||
|
using Owin;
|
||||||
|
|
||||||
|
namespace WeatherService.SignalR
|
||||||
|
{
|
||||||
|
class Startup
|
||||||
|
{
|
||||||
|
public void Configuration(IAppBuilder app)
|
||||||
|
{
|
||||||
|
app.Map("/signalr", map =>
|
||||||
|
{
|
||||||
|
map.UseCors(CorsOptions.AllowAll);
|
||||||
|
|
||||||
|
var hubConfiguration = new HubConfiguration();
|
||||||
|
map.RunSignalR(hubConfiguration);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
13
SignalR/WeatherHub.cs
Normal file
13
SignalR/WeatherHub.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
using Microsoft.AspNet.SignalR;
|
||||||
|
using Microsoft.AspNet.SignalR.Hubs;
|
||||||
|
|
||||||
|
namespace WeatherService.SignalR
|
||||||
|
{
|
||||||
|
public class WeatherHub : Hub
|
||||||
|
{
|
||||||
|
public void Send(string message)
|
||||||
|
{
|
||||||
|
Clients.Others.addMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Values/HumidityReading.cs
Normal file
12
Values/HumidityReading.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class HumidityReading : ReadingBase
|
||||||
|
{
|
||||||
|
public HumidityReading(WeatherValueType valueType) : base(valueType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Values/PressureReading.cs
Normal file
12
Values/PressureReading.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class PressureReading : ReadingBase
|
||||||
|
{
|
||||||
|
public PressureReading(WeatherValueType valueType) : base(valueType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
26
Values/RainReading.cs
Normal file
26
Values/RainReading.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class RainReading : ReadingBase
|
||||||
|
{
|
||||||
|
public RainReading(WeatherValueType valueType) : base(valueType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public double Millimeters
|
||||||
|
{
|
||||||
|
get { return Value; }
|
||||||
|
set { Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public double Inches
|
||||||
|
{
|
||||||
|
get { return Conversion.ConvertLength(Value, LengthUnit.Millimeters, LengthUnit.Inches); }
|
||||||
|
set { Value = Conversion.ConvertLength(value, LengthUnit.Inches, LengthUnit.Millimeters); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
99
Values/ReadingBase.cs
Normal file
99
Values/ReadingBase.cs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
using System;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Stores a single value reading from a device
|
||||||
|
/// </summary>
|
||||||
|
[DataContract]
|
||||||
|
[KnownType(typeof(TemperatureReading))]
|
||||||
|
[KnownType(typeof(WindDirectionReading))]
|
||||||
|
[KnownType(typeof(WindSpeedReading))]
|
||||||
|
[KnownType(typeof(RainReading))]
|
||||||
|
[KnownType(typeof(PressureReading))]
|
||||||
|
[KnownType(typeof(HumidityReading))]
|
||||||
|
public class ReadingBase : IComparable<ReadingBase>
|
||||||
|
{
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public ReadingBase(WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
ValueType = valueType;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal methods
|
||||||
|
|
||||||
|
internal void SetValue(double value)
|
||||||
|
{
|
||||||
|
Value = value;
|
||||||
|
ReadTime = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetValue(double value, DateTime readTime)
|
||||||
|
{
|
||||||
|
Value = value;
|
||||||
|
ReadTime = readTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public WeatherValueType ValueType { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public double Value { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public DateTime ReadTime { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Comparison
|
||||||
|
|
||||||
|
public int CompareTo(ReadingBase other)
|
||||||
|
{
|
||||||
|
double otherValue = other.Value;
|
||||||
|
double thisValue = Value;
|
||||||
|
|
||||||
|
if (otherValue > thisValue)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (otherValue.Equals(thisValue))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Creation
|
||||||
|
|
||||||
|
public static ReadingBase CreateReading(WeatherValueType valueType)
|
||||||
|
{
|
||||||
|
switch (valueType)
|
||||||
|
{
|
||||||
|
case WeatherValueType.Temperature:
|
||||||
|
return new TemperatureReading(valueType);
|
||||||
|
case WeatherValueType.Pressure:
|
||||||
|
return new PressureReading(valueType);
|
||||||
|
case WeatherValueType.Humidity:
|
||||||
|
return new HumidityReading(valueType);
|
||||||
|
case WeatherValueType.WindSpeed:
|
||||||
|
return new WindSpeedReading(valueType);
|
||||||
|
case WeatherValueType.WindDirection:
|
||||||
|
return new WindDirectionReading(valueType);
|
||||||
|
case WeatherValueType.Rain:
|
||||||
|
return new RainReading(valueType);
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException("valueType");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
26
Values/TemperatureReading.cs
Normal file
26
Values/TemperatureReading.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class TemperatureReading : ReadingBase
|
||||||
|
{
|
||||||
|
public TemperatureReading(WeatherValueType valueType) : base(valueType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public double DegreesC
|
||||||
|
{
|
||||||
|
get { return Value; }
|
||||||
|
set { Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public double DegreesF
|
||||||
|
{
|
||||||
|
get { return Conversion.ConvertTemperature(Value, TemperatureUnit.Celsius, TemperatureUnit.Fahrenheit); }
|
||||||
|
set { Value = Conversion.ConvertTemperature(value, TemperatureUnit.Fahrenheit, TemperatureUnit.Celsius); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
282
Values/Value.cs
Normal file
282
Values/Value.cs
Normal file
@@ -0,0 +1,282 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Data.SqlServerCe;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Runtime.Serialization;
|
||||||
|
using WeatherService.Data;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public enum WeatherValueType
|
||||||
|
{
|
||||||
|
[EnumMember]
|
||||||
|
Temperature,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Pressure,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Humidity,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
WindSpeed,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
WindDirection,
|
||||||
|
|
||||||
|
[EnumMember]
|
||||||
|
Rain
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stores information for a particular device value
|
||||||
|
/// </summary>
|
||||||
|
[DataContract]
|
||||||
|
public class Value
|
||||||
|
{
|
||||||
|
#region Constants
|
||||||
|
|
||||||
|
private const int MaximumHours = 24;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Member variables
|
||||||
|
|
||||||
|
private readonly DeviceBase _ownerDevice; // Owner device
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Constructor
|
||||||
|
|
||||||
|
public Value(WeatherValueType valueType, DeviceBase ownerDevice)
|
||||||
|
{
|
||||||
|
MaximumHistoryHours = MaximumHours;
|
||||||
|
|
||||||
|
// Remember information we were given
|
||||||
|
ValueType = valueType;
|
||||||
|
_ownerDevice = ownerDevice;
|
||||||
|
|
||||||
|
// Create the readings
|
||||||
|
Current = ReadingBase.CreateReading(ValueType);
|
||||||
|
Maximum = ReadingBase.CreateReading(ValueType);
|
||||||
|
Minimum = ReadingBase.CreateReading(ValueType);
|
||||||
|
Average = ReadingBase.CreateReading(ValueType);
|
||||||
|
|
||||||
|
Total = valueType == WeatherValueType.Rain ? ReadingBase.CreateReading(ValueType) : new ReadingBase(valueType);
|
||||||
|
|
||||||
|
History = new List<ReadingBase>();
|
||||||
|
|
||||||
|
// Figure out the minimum time we want to load into history
|
||||||
|
DateTime minimumTime = DateTime.Now.AddHours(-MaximumHours);
|
||||||
|
|
||||||
|
// Build a list for this device using the right value type and limit to the maximum number of hours
|
||||||
|
var readingList = from reading in Database.ReadingTable
|
||||||
|
where reading.DeviceId == ownerDevice.Id && reading.Type == valueType && reading.ReadTime >= minimumTime
|
||||||
|
select reading;
|
||||||
|
|
||||||
|
// Loop over all readings and reload them into the history
|
||||||
|
foreach (ReadingData readingData in readingList)
|
||||||
|
{
|
||||||
|
// Get the value from the reading
|
||||||
|
double dValue = readingData.Value;
|
||||||
|
|
||||||
|
// Get the timestamp from the reading
|
||||||
|
DateTime dtTimestamp = readingData.ReadTime;
|
||||||
|
|
||||||
|
// Set the value into the history
|
||||||
|
SetValue(dValue, dtTimestamp, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Private methods
|
||||||
|
|
||||||
|
private void AddHistory(double value, DateTime timeStamp)
|
||||||
|
{
|
||||||
|
// Create the reading
|
||||||
|
ReadingBase readingBase = ReadingBase.CreateReading(ValueType);
|
||||||
|
readingBase.Value = value;
|
||||||
|
readingBase.ReadTime = timeStamp;
|
||||||
|
|
||||||
|
// Add the current value to the history
|
||||||
|
History.Add(readingBase);
|
||||||
|
|
||||||
|
// Get the current head of the history list
|
||||||
|
ReadingBase oHead = History[0];
|
||||||
|
|
||||||
|
// Get the difference in time between the now and the reading time
|
||||||
|
TimeSpan oTimeSpan = DateTime.Now - oHead.ReadTime;
|
||||||
|
|
||||||
|
// If the span is over the maximum time then remove it
|
||||||
|
if (oTimeSpan.TotalHours > MaximumHours)
|
||||||
|
{
|
||||||
|
// Remove this sample
|
||||||
|
Readings--;
|
||||||
|
|
||||||
|
// Remove this value from the total
|
||||||
|
Total.Value -= oHead.Value;
|
||||||
|
|
||||||
|
// Remove the reading
|
||||||
|
History.RemoveAt(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckMinimumValue(double value, DateTime timeStamp)
|
||||||
|
{
|
||||||
|
// Figure out if we want a zero value
|
||||||
|
bool bNoZero = (ValueType == WeatherValueType.WindSpeed || ValueType == WeatherValueType.Rain);
|
||||||
|
|
||||||
|
// Figure out how old the current minimum is
|
||||||
|
TimeSpan oTimeSpan = DateTime.Now - Minimum.ReadTime;
|
||||||
|
|
||||||
|
// If the minimum is too old then we need a new minimum
|
||||||
|
if (oTimeSpan.TotalHours > MaximumHours)
|
||||||
|
{
|
||||||
|
List<ReadingBase> readings = bNoZero ? History.Where(r => r.Value > 0).ToList() : History;
|
||||||
|
|
||||||
|
ReadingBase newMin = readings.Min();
|
||||||
|
|
||||||
|
// If we got a minimum value then set it
|
||||||
|
if (newMin != null)
|
||||||
|
{
|
||||||
|
// Set the data into the value
|
||||||
|
Minimum.SetValue(newMin.Value, newMin.ReadTime);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have no minimum or the value is over the current minimum then reset the minimum
|
||||||
|
if ((Minimum.ReadTime == DateTime.MinValue) || (value < Minimum.Value) || (Minimum.Value.Equals(0) && bNoZero))
|
||||||
|
{
|
||||||
|
bool bSetMinimum; // Is this value the new minimum?
|
||||||
|
|
||||||
|
if (bNoZero)
|
||||||
|
bSetMinimum = (value > 0) || (Minimum.ReadTime == DateTime.MinValue);
|
||||||
|
else
|
||||||
|
bSetMinimum = true;
|
||||||
|
|
||||||
|
if (bSetMinimum)
|
||||||
|
Minimum.SetValue(value, timeStamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckMaximumValue(double value, DateTime timeStamp)
|
||||||
|
{
|
||||||
|
// Figure out how old the current maximum is
|
||||||
|
TimeSpan oTimeSpan = DateTime.Now - Maximum.ReadTime;
|
||||||
|
|
||||||
|
// If the maximum is too old then we need a new maximum
|
||||||
|
if (oTimeSpan.TotalHours > MaximumHours)
|
||||||
|
{
|
||||||
|
// Get the new maximum
|
||||||
|
var newMax = History.Max();
|
||||||
|
|
||||||
|
// Set the maximum
|
||||||
|
Maximum.SetValue(newMax.Value, newMax.ReadTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have no maximum or the value is over the current maximum then reset the maximum
|
||||||
|
if ((Maximum.ReadTime == DateTime.MinValue) || (value >= Maximum.Value))
|
||||||
|
{
|
||||||
|
Maximum.SetValue(value, timeStamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Internal Methods
|
||||||
|
|
||||||
|
internal void SetValue(double value)
|
||||||
|
{
|
||||||
|
// Set the value with the current time as the timestamp
|
||||||
|
SetValue(value, DateTime.Now);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetValue(double value, DateTime timeStamp)
|
||||||
|
{
|
||||||
|
// Set the value with the current time as the timestamp - save the state
|
||||||
|
SetValue(value, DateTime.Now, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void SetValue(double value, DateTime timeStamp, bool save)
|
||||||
|
{
|
||||||
|
// Set the current value
|
||||||
|
Current.SetValue(value, timeStamp);
|
||||||
|
|
||||||
|
// Add another sample
|
||||||
|
Readings++;
|
||||||
|
|
||||||
|
// Add the current value to the total
|
||||||
|
Total.Value += value;
|
||||||
|
|
||||||
|
// Add the value to the history
|
||||||
|
AddHistory(value, timeStamp);
|
||||||
|
|
||||||
|
if (save)
|
||||||
|
{
|
||||||
|
// Save the reading
|
||||||
|
/*
|
||||||
|
ReadingData readingData = new ReadingData
|
||||||
|
{
|
||||||
|
DeviceId = _ownerDevice.Id,
|
||||||
|
Value = value,
|
||||||
|
Type = _valueType,
|
||||||
|
ReadTime = timeStamp
|
||||||
|
};
|
||||||
|
Database.ReadingTable.InsertOnSubmit(readingData);
|
||||||
|
Database.SaveChanges();
|
||||||
|
*/
|
||||||
|
|
||||||
|
string query =
|
||||||
|
string.Format(
|
||||||
|
"INSERT INTO Reading (DeviceID, Type, Value, ReadTime) VALUES ({0}, {1:d}, {2}, '{3}')",
|
||||||
|
_ownerDevice.Id, ValueType, value, timeStamp);
|
||||||
|
SqlCeCommand command = new SqlCeCommand(query, Database.Connection);
|
||||||
|
command.ExecuteScalar();
|
||||||
|
|
||||||
|
// Update the minimum value
|
||||||
|
CheckMinimumValue(value, timeStamp);
|
||||||
|
|
||||||
|
// Update the maximum value
|
||||||
|
CheckMaximumValue(value, timeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculate the new average value
|
||||||
|
Average.SetValue(Total.Value / Readings);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Properties
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public ReadingBase Current { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public ReadingBase Maximum { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public ReadingBase Minimum { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public ReadingBase Average { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public ReadingBase Total { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public long Readings { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public WeatherValueType ValueType { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public int MaximumHistoryHours { get; set; }
|
||||||
|
|
||||||
|
public List<ReadingBase> History { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
28
Values/WindDirectionReading.cs
Normal file
28
Values/WindDirectionReading.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
using WeatherService.Common.Formatting;
|
||||||
|
using WeatherService.Devices;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class WindDirectionReading : ReadingBase
|
||||||
|
{
|
||||||
|
public WindDirectionReading(WeatherValueType valueType) : base(valueType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public WindDirection WindDirectionValue
|
||||||
|
{
|
||||||
|
get { return (WindDirection) Value; }
|
||||||
|
set { Value = (double) value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public string WindDirectionString
|
||||||
|
{
|
||||||
|
get { return Format.GetShortDirectionString(WindDirectionValue); }
|
||||||
|
set { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
Values/WindSpeedReading.cs
Normal file
12
Values/WindSpeedReading.cs
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
using System.Runtime.Serialization;
|
||||||
|
|
||||||
|
namespace WeatherService.Values
|
||||||
|
{
|
||||||
|
[DataContract]
|
||||||
|
public class WindSpeedReading : ReadingBase
|
||||||
|
{
|
||||||
|
public WindSpeedReading(WeatherValueType valueType) : base(valueType)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
214
WeatherService.csproj
Normal file
214
WeatherService.csproj
Normal file
@@ -0,0 +1,214 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<ProjectGuid>{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}</ProjectGuid>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
|
<RootNamespace>WeatherService</RootNamespace>
|
||||||
|
<AssemblyName>WeatherService</AssemblyName>
|
||||||
|
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||||
|
<FileAlignment>512</FileAlignment>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
<DebugType>full</DebugType>
|
||||||
|
<Optimize>false</Optimize>
|
||||||
|
<OutputPath>bin\Debug\</OutputPath>
|
||||||
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
<Prefer32Bit>false</Prefer32Bit>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
<DebugType>pdbonly</DebugType>
|
||||||
|
<Optimize>true</Optimize>
|
||||||
|
<OutputPath>bin\Release\</OutputPath>
|
||||||
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
|
<ErrorReport>prompt</ErrorReport>
|
||||||
|
<WarningLevel>4</WarningLevel>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<StartupObject />
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Reference Include="Microsoft.AspNet.SignalR.Client">
|
||||||
|
<HintPath>packages\Microsoft.AspNet.SignalR.Client.2.0.3\lib\net45\Microsoft.AspNet.SignalR.Client.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.AspNet.SignalR.Core, Version=2.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.AspNet.SignalR.Core.2.0.3\lib\net45\Microsoft.AspNet.SignalR.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.AspNet.SignalR.Owin, Version=1.2.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.AspNet.SignalR.Owin.1.2.1\lib\net45\Microsoft.AspNet.SignalR.Owin.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Owin">
|
||||||
|
<HintPath>packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Owin.Cors">
|
||||||
|
<HintPath>packages\Microsoft.Owin.Cors.2.1.0\lib\net45\Microsoft.Owin.Cors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Owin.Host.HttpListener, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Owin.Host.HttpListener.2.1.0\lib\net45\Microsoft.Owin.Host.HttpListener.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Owin.Hosting, Version=2.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Microsoft.Owin.Hosting.2.1.0\lib\net45\Microsoft.Owin.Hosting.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Owin.Security">
|
||||||
|
<HintPath>packages\Microsoft.Owin.Security.2.0.1\lib\net45\Microsoft.Owin.Security.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Configuration.Install" />
|
||||||
|
<Reference Include="System.Core" />
|
||||||
|
<Reference Include="System.Data.Linq" />
|
||||||
|
<Reference Include="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL" />
|
||||||
|
<Reference Include="System.Runtime.Serialization" />
|
||||||
|
<Reference Include="System.ServiceModel" />
|
||||||
|
<Reference Include="System.ServiceModel.Web" />
|
||||||
|
<Reference Include="System.Web.Cors">
|
||||||
|
<HintPath>packages\Microsoft.AspNet.Cors.5.0.0\lib\net45\System.Web.Cors.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
<Reference Include="Microsoft.CSharp" />
|
||||||
|
<Reference Include="System.Data" />
|
||||||
|
<Reference Include="System.ServiceProcess" />
|
||||||
|
<Reference Include="System.Xml" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="Conversion.cs" />
|
||||||
|
<Compile Include="Data\Database.cs" />
|
||||||
|
<Compile Include="Data\DatabaseContext.cs" />
|
||||||
|
<Compile Include="Data\DeviceData.cs" />
|
||||||
|
<Compile Include="Data\ReadingData.cs" />
|
||||||
|
<Compile Include="Devices\DeviceBase.cs" />
|
||||||
|
<Compile Include="Devices\HumidityDevice.cs" />
|
||||||
|
<Compile Include="Devices\PressureDevice.cs" />
|
||||||
|
<Compile Include="Devices\RainDevice.cs" />
|
||||||
|
<Compile Include="Devices\TemperatureDevice.cs" />
|
||||||
|
<Compile Include="Devices\WindDirectionDevice.cs" />
|
||||||
|
<Compile Include="Devices\WindSpeedDevice.cs" />
|
||||||
|
<Compile Include="EventArguments.cs" />
|
||||||
|
<Compile Include="Format.cs" />
|
||||||
|
<Compile Include="Framework\ConsoleHarness.cs" />
|
||||||
|
<Compile Include="Framework\IWindowsService.cs" />
|
||||||
|
<Compile Include="Framework\TypeExtensions.cs" />
|
||||||
|
<Compile Include="Framework\WindowsServiceAttribute.cs" />
|
||||||
|
<Compile Include="Framework\WindowsServiceHarness.cs">
|
||||||
|
<SubType>Component</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Framework\WindowsServiceHarness.Designer.cs">
|
||||||
|
<DependentUpon>WindowsServiceHarness.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Framework\WindowsServiceInstaller.cs">
|
||||||
|
<SubType>Component</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Framework\WindowsServiceInstaller.Designer.cs">
|
||||||
|
<DependentUpon>WindowsServiceInstaller.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Remote\DeviceHistory.cs" />
|
||||||
|
<Compile Include="Remote\IWeatherService.cs" />
|
||||||
|
<Compile Include="Remote\IWeatherServiceDuplex.cs" />
|
||||||
|
<Compile Include="Remote\IWeatherServiceCallback.cs" />
|
||||||
|
<Compile Include="Program.cs" />
|
||||||
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="Remote\WeatherService.cs" />
|
||||||
|
<Compile Include="Remote\WeatherServiceCommon.cs" />
|
||||||
|
<Compile Include="Remote\WeatherServiceDuplex.cs" />
|
||||||
|
<Compile Include="ServiceImplementation.cs" />
|
||||||
|
<Compile Include="Session.cs" />
|
||||||
|
<Compile Include="Settings.Designer.cs">
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||||
|
<DependentUpon>Settings.settings</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SignalR\Startup.cs" />
|
||||||
|
<Compile Include="SignalR\WeatherHub.cs" />
|
||||||
|
<Compile Include="Values\HumidityReading.cs" />
|
||||||
|
<Compile Include="Values\PressureReading.cs" />
|
||||||
|
<Compile Include="Values\RainReading.cs" />
|
||||||
|
<Compile Include="Values\ReadingBase.cs" />
|
||||||
|
<Compile Include="Values\TemperatureReading.cs" />
|
||||||
|
<Compile Include="Values\Value.cs" />
|
||||||
|
<Compile Include="Values\WindDirectionReading.cs" />
|
||||||
|
<Compile Include="Values\WindSpeedReading.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="App.config" />
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="Settings.settings">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Common\Common.csproj">
|
||||||
|
<Project>{17864d82-457d-4a0a-bc10-1d07f2b3a5d6}</Project>
|
||||||
|
<Name>Common</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
<ProjectReference Include="..\OneWireAPI\OneWireAPI.csproj">
|
||||||
|
<Project>{e89d1170-9261-4523-bb6e-a4d08ef80a36}</Project>
|
||||||
|
<Name>OneWireAPI</Name>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.5 %28x86 and x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
|
<Import Project="packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" />
|
||||||
|
<Target Name="EnsureBclBuildImported" BeforeTargets="BeforeBuild" Condition="'$(BclBuildImported)' == ''">
|
||||||
|
<Error Condition="!Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="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=317567." HelpKeyword="BCLBUILD2001" />
|
||||||
|
<Error Condition="Exists('packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" Text="The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568." HelpKeyword="BCLBUILD2002" />
|
||||||
|
</Target>
|
||||||
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
<Target Name="BeforeBuild">
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
</Target>
|
||||||
|
-->
|
||||||
|
</Project>
|
||||||
54
WeatherService.sln
Normal file
54
WeatherService.sln
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 2013
|
||||||
|
VisualStudioVersion = 12.0.30324.0
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeatherService", "WeatherService.csproj", "{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "..\Common\Common.csproj", "{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OneWireAPI", "..\OneWireAPI\OneWireAPI.csproj", "{E89D1170-9261-4523-BB6E-A4D08EF80A36}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{F46968D8-AD1D-4F8D-9DDE-499CC4FB1D32}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x64.Build.0 = Release|x64
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{17864D82-457D-4A0A-BC10-1D07F2B3A5D6}.Release|x86.Build.0 = Release|x86
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{E89D1170-9261-4523-BB6E-A4D08EF80A36}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
16
packages.config
Normal file
16
packages.config
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Microsoft.AspNet.Cors" version="5.0.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.AspNet.SignalR.Client" version="2.0.3" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.AspNet.SignalR.Core" version="2.0.3" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.AspNet.SignalR.Owin" version="1.2.1" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Bcl" version="1.1.8" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Owin.Cors" version="2.1.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Owin.Host.HttpListener" version="2.1.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Owin.Hosting" version="2.1.0" targetFramework="net45" />
|
||||||
|
<package id="Microsoft.Owin.Security" version="2.0.1" targetFramework="net45" />
|
||||||
|
<package id="Newtonsoft.Json" version="6.0.3" targetFramework="net45" />
|
||||||
|
<package id="Owin" version="1.0" targetFramework="net45" />
|
||||||
|
</packages>
|
||||||
BIN
packages/Microsoft.AspNet.Cors.5.0.0/Microsoft.AspNet.Cors.5.0.0.nupkg
vendored
Normal file
BIN
packages/Microsoft.AspNet.Cors.5.0.0/Microsoft.AspNet.Cors.5.0.0.nupkg
vendored
Normal file
Binary file not shown.
BIN
packages/Microsoft.AspNet.Cors.5.0.0/lib/net45/System.Web.Cors.dll
vendored
Normal file
BIN
packages/Microsoft.AspNet.Cors.5.0.0/lib/net45/System.Web.Cors.dll
vendored
Normal file
Binary file not shown.
BIN
packages/Microsoft.AspNet.SignalR.Client.2.0.3/Microsoft.AspNet.SignalR.Client.2.0.3.nupkg
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Client.2.0.3/Microsoft.AspNet.SignalR.Client.2.0.3.nupkg
vendored
Normal file
Binary file not shown.
943
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net40/Microsoft.AspNet.SignalR.Client.XML
vendored
Normal file
943
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net40/Microsoft.AspNet.SignalR.Client.XML
vendored
Normal file
@@ -0,0 +1,943 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>Microsoft.AspNet.SignalR.Client</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Infrastructure.Disposer">
|
||||||
|
<summary>
|
||||||
|
Helper class to manage disposing a resource at an arbirtary time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Connection">
|
||||||
|
<summary>
|
||||||
|
Provides client connections for SignalR services.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IConnection.Proxy">
|
||||||
|
<summary>
|
||||||
|
Gets of sets proxy information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start(Microsoft.AspNet.SignalR.Client.Http.IHttpClient)">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="httpClient">The http client</param>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start(Microsoft.AspNet.SignalR.Client.Transports.IClientTransport)">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="transport">The transport to use.</param>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Stop">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> and sends an abort message to the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Stop(System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> and sends an abort message to the server.
|
||||||
|
<param name="timeout">The timeout</param>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#Disconnect">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> without sending an abort message to the server.
|
||||||
|
This function is called after we receive a disconnect message from the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Send(System.String)">
|
||||||
|
<summary>
|
||||||
|
Sends data asynchronously over the connection.
|
||||||
|
</summary>
|
||||||
|
<param name="data">The data to send.</param>
|
||||||
|
<returns>A task that represents when the data has been sent.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Send(System.Object)">
|
||||||
|
<summary>
|
||||||
|
Sends an object that will be JSON serialized asynchronously over the connection.
|
||||||
|
</summary>
|
||||||
|
<param name="value">The value to serialize.</param>
|
||||||
|
<returns>A task that represents when the data has been sent.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.AddClientCertificate(System.Security.Cryptography.X509Certificates.X509Certificate)">
|
||||||
|
<summary>
|
||||||
|
Adds a client certificate to the request
|
||||||
|
</summary>
|
||||||
|
<param name="certificate">Client Certificate</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#MarkLastMessage">
|
||||||
|
<summary>
|
||||||
|
Sets LastMessageAt to the current time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#MarkActive">
|
||||||
|
<summary>
|
||||||
|
Sets LastActiveAt to the current time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Dispose">
|
||||||
|
<summary>
|
||||||
|
Stop the connection, equivalent to calling connection.stop
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Dispose(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Stop the connection, equivalent to calling connection.stop
|
||||||
|
</summary>
|
||||||
|
<param name="disposing">Set this to true to perform the dispose, false to do nothing</param>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Received">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> has received data from the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Error">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> has encountered an error.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Closed">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> is stopped.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Reconnecting">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> starts reconnecting after an error.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Reconnected">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> successfully reconnects after a timeout.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.StateChanged">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> state changes.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.ConnectionSlow">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> is about to timeout
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.TransportConnectTimeout">
|
||||||
|
<summary>
|
||||||
|
The amount of time a transport will wait (while connecting) before failing.
|
||||||
|
This value is modified by adding the server's TransportConnectTimeout configuration value.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#TotalTransportConnectTimeout">
|
||||||
|
<summary>
|
||||||
|
The amount of time a transport will wait (while connecting) before failing.
|
||||||
|
This is the total vaue obtained by adding the server's configuration value and the timeout specified by the user
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#ReconnectWindow">
|
||||||
|
<summary>
|
||||||
|
The maximum amount of time a connection will allow to try and reconnect.
|
||||||
|
This value is equivalent to the summation of the servers disconnect and keep alive timeout values.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#KeepAliveData">
|
||||||
|
<summary>
|
||||||
|
Object to store the various keep alive timeout values
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#LastMessageAt">
|
||||||
|
<summary>
|
||||||
|
The timestamp of the last message received by the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.JsonSerializer">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the serializer used by the connection
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.CookieContainer">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the cookies associated with the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Credentials">
|
||||||
|
<summary>
|
||||||
|
Gets or sets authentication information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Headers">
|
||||||
|
<summary>
|
||||||
|
Gets and sets headers for the requests
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Proxy">
|
||||||
|
<summary>
|
||||||
|
Gets of sets proxy information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Url">
|
||||||
|
<summary>
|
||||||
|
Gets the url for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.MessageId">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the last message id for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.ConnectionId">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the connection id for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.ConnectionToken">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the connection token for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.GroupsToken">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the groups token for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Items">
|
||||||
|
<summary>
|
||||||
|
Gets a dictionary for storing state for a the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.QueryString">
|
||||||
|
<summary>
|
||||||
|
Gets the querystring specified in the ctor.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.State">
|
||||||
|
<summary>
|
||||||
|
Gets the current <see cref="T:Microsoft.AspNet.SignalR.Client.ConnectionState"/> of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Connection.DebugTextWriter">
|
||||||
|
<summary>
|
||||||
|
Default text writer
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.#ctor(Microsoft.AspNet.SignalR.Client.IConnection,System.Object,System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the HeartBeatMonitor Class
|
||||||
|
</summary>
|
||||||
|
<param name="connection"></param>
|
||||||
|
<param name="connectionStateLock"></param>
|
||||||
|
<param name="beatInterval">How often to check connection status</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the timer that triggers heartbeats
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Beat">
|
||||||
|
<summary>
|
||||||
|
Callback function for the timer which determines if we need to notify the user or attempt to reconnect
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Beat(System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Logic to determine if we need to notify the user or attempt to reconnect
|
||||||
|
</summary>
|
||||||
|
<param name="timeElapsed"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Dispose">
|
||||||
|
<summary>
|
||||||
|
Dispose off the timer
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Dispose(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Dispose off the timer
|
||||||
|
</summary>
|
||||||
|
<param name="disposing"></param>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient">
|
||||||
|
<summary>
|
||||||
|
The default <see cref="T:Microsoft.AspNet.SignalR.Client.Http.IHttpClient"/> implementation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IHttpClient">
|
||||||
|
<summary>
|
||||||
|
A client that can make http request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Initialize(Microsoft.AspNet.SignalR.Client.IConnection)">
|
||||||
|
<summary>
|
||||||
|
Initializes the Http Clients
|
||||||
|
</summary>
|
||||||
|
<param name="connection">Connection</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Get(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http GET request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether it is a long running request</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Post(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http POST request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="postData">form url encoded data.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether it is a long running request</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Get(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http GET request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Post(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http POST request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="postData">form url encoded data.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.PrepareClientRequest(Microsoft.AspNet.SignalR.Client.Http.HttpWebRequestWrapper)">
|
||||||
|
<summary>
|
||||||
|
Adds certificates, credentials, proxies and cookies to the request
|
||||||
|
</summary>
|
||||||
|
<param name="req">Request object</param>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IRequest">
|
||||||
|
<summary>
|
||||||
|
The http request
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IRequest.Abort">
|
||||||
|
<summary>
|
||||||
|
Aborts the request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IRequest.SetRequestHeaders(System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Set Request Headers
|
||||||
|
</summary>
|
||||||
|
<param name="headers">request headers</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Http.IRequest.UserAgent">
|
||||||
|
<summary>
|
||||||
|
The user agent for this request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Http.IRequest.Accept">
|
||||||
|
<summary>
|
||||||
|
The accept header for this request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IResponse">
|
||||||
|
<summary>
|
||||||
|
The http response.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IResponse.GetStream">
|
||||||
|
<summary>
|
||||||
|
Gets the steam that represents the response body.
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.HubConnection">
|
||||||
|
<summary>
|
||||||
|
A <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> for interacting with Hubs.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.CreateHubProxy(System.String)">
|
||||||
|
<summary>
|
||||||
|
Creates an <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/> for the hub with the specified name.
|
||||||
|
</summary>
|
||||||
|
<param name="hubName">The name of the hub.</param>
|
||||||
|
<returns>A <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.HubProxyExtensions">
|
||||||
|
<summary>
|
||||||
|
Extensions to the <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.GetValue``1(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets the value of a state variable.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of the state variable</typeparam>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="name">The name of the state variable.</param>
|
||||||
|
<returns>The value of the state variable.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action)">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``1(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``2(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``3(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``4(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{System.Object})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``5(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3,``4})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``6(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3,``4,``5})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``7(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3,``4,``5,``6})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.Observe(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String)">
|
||||||
|
<summary>
|
||||||
|
Registers a <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/> event has an <see cref="T:IObservable{T}"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/></param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<returns>An <see cref="T:IObservable{object[]}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.IHubProxy">
|
||||||
|
<summary>
|
||||||
|
A client side proxy for a server side hub.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Invoke(System.String,System.Object[])">
|
||||||
|
<summary>
|
||||||
|
Executes a method on the server side hub asynchronously.
|
||||||
|
</summary>
|
||||||
|
<param name="method">The name of the method.</param>
|
||||||
|
<param name="args">The arguments</param>
|
||||||
|
<returns>A task that represents when invocation returned.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Invoke``1(System.String,System.Object[])">
|
||||||
|
<summary>
|
||||||
|
Executes a method on the server side hub asynchronously.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of result returned from the hub</typeparam>
|
||||||
|
<param name="method">The name of the method.</param>
|
||||||
|
<param name="args">The arguments</param>
|
||||||
|
<returns>A task that represents when invocation returned.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Subscribe(System.String)">
|
||||||
|
<summary>
|
||||||
|
Registers an event for the hub.
|
||||||
|
</summary>
|
||||||
|
<param name="eventName">The name of the event</param>
|
||||||
|
<returns>A <see cref="T:Microsoft.AspNet.SignalR.Client.Hubs.Subscription"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IHubProxy.Item(System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets or sets state on the hub.
|
||||||
|
</summary>
|
||||||
|
<param name="name">The name of the field.</param>
|
||||||
|
<returns>The value of the field</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IHubProxy.JsonSerializer">
|
||||||
|
<summary>
|
||||||
|
Gets the serializer used by the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.HubResult">
|
||||||
|
<summary>
|
||||||
|
Represents the result of a hub invocation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Id">
|
||||||
|
<summary>
|
||||||
|
The callback identifier
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Result">
|
||||||
|
<summary>
|
||||||
|
The return value of the hub
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.IsHubException">
|
||||||
|
<summary>
|
||||||
|
Indicates whether the Error is a <see cref="T:Microsoft.AspNet.SignalR.Client.HubException"/>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Error">
|
||||||
|
<summary>
|
||||||
|
The error message returned from the hub invocation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.ErrorData">
|
||||||
|
<summary>
|
||||||
|
Extra error data
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.State">
|
||||||
|
<summary>
|
||||||
|
The caller state from this hub.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.Hubservable">
|
||||||
|
<summary>
|
||||||
|
<see cref="T:System.IObservable{object[]}"/> implementation of a hub event.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.Subscription">
|
||||||
|
<summary>
|
||||||
|
Represents a subscription to a hub method.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.ErrorExtensions.GetError(System.Exception)">
|
||||||
|
<summary>
|
||||||
|
Simplifies error recognition by unwrapping complex exceptions.
|
||||||
|
</summary>
|
||||||
|
<param name="ex">The thrown exception.</param>
|
||||||
|
<returns>An unwrapped exception in the form of a SignalRError.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.SignalRError">
|
||||||
|
<summary>
|
||||||
|
Represents errors that are thrown by the SignalR client
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.#ctor(System.Exception)">
|
||||||
|
<summary>
|
||||||
|
Create custom SignalR based error.
|
||||||
|
</summary>
|
||||||
|
<param name="exception">The exception to unwrap</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.ToString">
|
||||||
|
<summary>
|
||||||
|
Allow a SignalRError to be directly written to an output stream
|
||||||
|
</summary>
|
||||||
|
<returns>Exception error</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.Dispose">
|
||||||
|
<summary>
|
||||||
|
Dispose of the response
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.StatusCode">
|
||||||
|
<summary>
|
||||||
|
The status code of the error (if it was a WebException)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.ResponseBody">
|
||||||
|
<summary>
|
||||||
|
The response body of the error, if it was a WebException and the response is readable
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.Exception">
|
||||||
|
<summary>
|
||||||
|
The unwrapped underlying exception
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Infrastructure.UrlEncoder">
|
||||||
|
<summary>
|
||||||
|
Helpers for encoding URI query components.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.KeepAliveData">
|
||||||
|
<summary>
|
||||||
|
Class to store all the Keep Alive properties
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Infrastructure.ThreadSafeInvoker">
|
||||||
|
<summary>
|
||||||
|
Allows for thread safe invocation of a delegate.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_CertsCanOnlyBeAddedWhenDisconnected">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Client Certificates cannot be added after the connection has started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ClientCallbackArgumentTypeMismatch">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A client callback for event {0} with {1} argument(s) was found, however an error occurred because {2}.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ClientCallbackInvalidNumberOfArguments">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A client callback for event {0} with {1} argument(s) could not be found.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ConnectionCancelled">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection was stopped before it could be started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ConnectionHasNotBeenEstablished">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection has not been established..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_DataCannotBeSentConnectionDisconnected">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Data cannot be sent because the connection is in the disconnected state. Call start before sending any data..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_DataCannotBeSentDuringWebSocketReconnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Data cannot be sent because the WebSocket connection is reconnecting..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_IncompatibleProtocolVersion">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ProxiesCannotBeAddedConnectionStarted">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A HubProxy cannot be added after the connection has been started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ServerNegotiationFailed">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Server negotiation failed..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TaskCancelledException">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Request failed - task cancelled..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TransportFailedToConnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Transport failed trying to connect..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TransportTimedOutTryingToConnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Transport timed out trying to connect.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_UrlCantContainQueryStringDirectly">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Url cannot contain query string directly. Pass query string values in using available overload..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Message_ConnectionClosed">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Connection was disconnected before invocation result was received..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Message_Reconnecting">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Connection started reconnecting before invocation result was received..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.#ctor(System.IO.Stream)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="stream">The stream to read asynchronously payloads from.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the reader.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Close">
|
||||||
|
<summary>
|
||||||
|
Closes the connection and the underlying stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Opened">
|
||||||
|
<summary>
|
||||||
|
Invoked when the stream is open.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Closed">
|
||||||
|
<summary>
|
||||||
|
Invoked when the reader is closed while in the Processing state.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Data">
|
||||||
|
<summary>
|
||||||
|
Invoked when there's a message if received in the stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the Polling Request Handler.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Stop">
|
||||||
|
<summary>
|
||||||
|
Fully stops the Polling Request Handlers.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Abort">
|
||||||
|
<summary>
|
||||||
|
Aborts the currently active polling request, does not stop the Polling Request Handler.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.ResolveUrl">
|
||||||
|
<summary>
|
||||||
|
Used to generate the Url that is posted to for the poll.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.PrepareRequest">
|
||||||
|
<summary>
|
||||||
|
Allows modification of the IRequest parameter before using it in a poll.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnMessage">
|
||||||
|
<summary>
|
||||||
|
Sends the string based message to the callback.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnError">
|
||||||
|
<summary>
|
||||||
|
If the poll errors OnError gets triggered and passes the exception.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnPolling">
|
||||||
|
<summary>
|
||||||
|
Triggers when the polling request is in flight
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnAfterPoll">
|
||||||
|
<summary>
|
||||||
|
Triggers before a new polling request is attempted.
|
||||||
|
Passes in an exception if the Poll errored, null otherwise.
|
||||||
|
Expects the return as a task in order to allow modification of timing for subsequent polls.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnAbort">
|
||||||
|
<summary>
|
||||||
|
Fired when the current poll request was aborted, passing in the soon to be aborted request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader">
|
||||||
|
<summary>
|
||||||
|
Event source implementation for .NET. This isn't to the spec but it's enough to support SignalR's
|
||||||
|
server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader.#ctor(Microsoft.AspNet.SignalR.Client.IConnection,System.IO.Stream)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="connection">The connection associated with this event source</param>
|
||||||
|
<param name="stream">The stream to read event source payloads from.</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader.Message">
|
||||||
|
<summary>
|
||||||
|
Invoked when there's a message if received in the stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.StateChange">
|
||||||
|
<summary>
|
||||||
|
Represents a change in the connection state.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.StateChange.#ctor(Microsoft.AspNet.SignalR.Client.ConnectionState,Microsoft.AspNet.SignalR.Client.ConnectionState)">
|
||||||
|
<summary>
|
||||||
|
Creates a new stance of <see cref="T:Microsoft.AspNet.SignalR.Client.StateChange"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="oldState">The old state of the connection.</param>
|
||||||
|
<param name="newState">The new state of the connection.</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.StateChange.OldState">
|
||||||
|
<summary>
|
||||||
|
Gets the old state of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.StateChange.NewState">
|
||||||
|
<summary>
|
||||||
|
Gets the new state of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AutoTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the active transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.HttpBasedTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.ErrorDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after an error happens to continue polling.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEventsTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEventsTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
BIN
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net40/Microsoft.AspNet.SignalR.Client.dll
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net40/Microsoft.AspNet.SignalR.Client.dll
vendored
Normal file
Binary file not shown.
965
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Client.XML
vendored
Normal file
965
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Client.XML
vendored
Normal file
@@ -0,0 +1,965 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>Microsoft.AspNet.SignalR.Client</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Connection">
|
||||||
|
<summary>
|
||||||
|
Provides client connections for SignalR services.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IConnection.Proxy">
|
||||||
|
<summary>
|
||||||
|
Gets of sets proxy information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start(Microsoft.AspNet.SignalR.Client.Http.IHttpClient)">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="httpClient">The http client</param>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start(Microsoft.AspNet.SignalR.Client.Transports.IClientTransport)">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="transport">The transport to use.</param>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Stop">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> and sends an abort message to the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Stop(System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> and sends an abort message to the server.
|
||||||
|
<param name="timeout">The timeout</param>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#Disconnect">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> without sending an abort message to the server.
|
||||||
|
This function is called after we receive a disconnect message from the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Send(System.String)">
|
||||||
|
<summary>
|
||||||
|
Sends data asynchronously over the connection.
|
||||||
|
</summary>
|
||||||
|
<param name="data">The data to send.</param>
|
||||||
|
<returns>A task that represents when the data has been sent.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Send(System.Object)">
|
||||||
|
<summary>
|
||||||
|
Sends an object that will be JSON serialized asynchronously over the connection.
|
||||||
|
</summary>
|
||||||
|
<param name="value">The value to serialize.</param>
|
||||||
|
<returns>A task that represents when the data has been sent.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.AddClientCertificate(System.Security.Cryptography.X509Certificates.X509Certificate)">
|
||||||
|
<summary>
|
||||||
|
Adds a client certificate to the request
|
||||||
|
</summary>
|
||||||
|
<param name="certificate">Client Certificate</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#MarkLastMessage">
|
||||||
|
<summary>
|
||||||
|
Sets LastMessageAt to the current time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#MarkActive">
|
||||||
|
<summary>
|
||||||
|
Sets LastActiveAt to the current time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Dispose">
|
||||||
|
<summary>
|
||||||
|
Stop the connection, equivalent to calling connection.stop
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Dispose(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Stop the connection, equivalent to calling connection.stop
|
||||||
|
</summary>
|
||||||
|
<param name="disposing">Set this to true to perform the dispose, false to do nothing</param>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Received">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> has received data from the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Error">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> has encountered an error.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Closed">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> is stopped.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Reconnecting">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> starts reconnecting after an error.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Reconnected">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> successfully reconnects after a timeout.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.StateChanged">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> state changes.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.ConnectionSlow">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> is about to timeout
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.TransportConnectTimeout">
|
||||||
|
<summary>
|
||||||
|
The amount of time a transport will wait (while connecting) before failing.
|
||||||
|
This value is modified by adding the server's TransportConnectTimeout configuration value.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#TotalTransportConnectTimeout">
|
||||||
|
<summary>
|
||||||
|
The amount of time a transport will wait (while connecting) before failing.
|
||||||
|
This is the total vaue obtained by adding the server's configuration value and the timeout specified by the user
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#ReconnectWindow">
|
||||||
|
<summary>
|
||||||
|
The maximum amount of time a connection will allow to try and reconnect.
|
||||||
|
This value is equivalent to the summation of the servers disconnect and keep alive timeout values.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#KeepAliveData">
|
||||||
|
<summary>
|
||||||
|
Object to store the various keep alive timeout values
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#LastMessageAt">
|
||||||
|
<summary>
|
||||||
|
The timestamp of the last message received by the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.JsonSerializer">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the serializer used by the connection
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.CookieContainer">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the cookies associated with the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Credentials">
|
||||||
|
<summary>
|
||||||
|
Gets or sets authentication information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Headers">
|
||||||
|
<summary>
|
||||||
|
Gets and sets headers for the requests
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Proxy">
|
||||||
|
<summary>
|
||||||
|
Gets of sets proxy information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Url">
|
||||||
|
<summary>
|
||||||
|
Gets the url for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.MessageId">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the last message id for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.ConnectionId">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the connection id for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.ConnectionToken">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the connection token for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.GroupsToken">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the groups token for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Items">
|
||||||
|
<summary>
|
||||||
|
Gets a dictionary for storing state for a the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.QueryString">
|
||||||
|
<summary>
|
||||||
|
Gets the querystring specified in the ctor.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.State">
|
||||||
|
<summary>
|
||||||
|
Gets the current <see cref="T:Microsoft.AspNet.SignalR.Client.ConnectionState"/> of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Connection.DebugTextWriter">
|
||||||
|
<summary>
|
||||||
|
Default text writer
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.#ctor(Microsoft.AspNet.SignalR.Client.IConnection,System.Object,System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the HeartBeatMonitor Class
|
||||||
|
</summary>
|
||||||
|
<param name="connection"></param>
|
||||||
|
<param name="connectionStateLock"></param>
|
||||||
|
<param name="beatInterval">How often to check connection status</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the timer that triggers heartbeats
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Beat">
|
||||||
|
<summary>
|
||||||
|
Callback function for the timer which determines if we need to notify the user or attempt to reconnect
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Beat(System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Logic to determine if we need to notify the user or attempt to reconnect
|
||||||
|
</summary>
|
||||||
|
<param name="timeElapsed"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Dispose">
|
||||||
|
<summary>
|
||||||
|
Dispose off the timer
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Dispose(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Dispose off the timer
|
||||||
|
</summary>
|
||||||
|
<param name="disposing"></param>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IHttpClient">
|
||||||
|
<summary>
|
||||||
|
A client that can make http request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Initialize(Microsoft.AspNet.SignalR.Client.IConnection)">
|
||||||
|
<summary>
|
||||||
|
Initializes the Http Clients
|
||||||
|
</summary>
|
||||||
|
<param name="connection">Connection</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Get(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http GET request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether it is a long running request</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Post(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http POST request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="postData">form url encoded data.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether it is a long running request</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IRequest">
|
||||||
|
<summary>
|
||||||
|
The http request
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IRequest.Abort">
|
||||||
|
<summary>
|
||||||
|
Aborts the request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IRequest.SetRequestHeaders(System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Set Request Headers
|
||||||
|
</summary>
|
||||||
|
<param name="headers">request headers</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Http.IRequest.UserAgent">
|
||||||
|
<summary>
|
||||||
|
The user agent for this request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Http.IRequest.Accept">
|
||||||
|
<summary>
|
||||||
|
The accept header for this request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IResponse">
|
||||||
|
<summary>
|
||||||
|
The http response.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IResponse.GetStream">
|
||||||
|
<summary>
|
||||||
|
Gets the steam that represents the response body.
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.HubConnection">
|
||||||
|
<summary>
|
||||||
|
A <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> for interacting with Hubs.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.CreateHubProxy(System.String)">
|
||||||
|
<summary>
|
||||||
|
Creates an <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/> for the hub with the specified name.
|
||||||
|
</summary>
|
||||||
|
<param name="hubName">The name of the hub.</param>
|
||||||
|
<returns>A <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.HubProxyExtensions">
|
||||||
|
<summary>
|
||||||
|
Extensions to the <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.GetValue``1(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets the value of a state variable.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of the state variable</typeparam>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="name">The name of the state variable.</param>
|
||||||
|
<returns>The value of the state variable.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action)">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``1(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``2(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``3(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``4(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{System.Object})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``5(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3,``4})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``6(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3,``4,``5})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``7(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3,``4,``5,``6})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.Observe(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String)">
|
||||||
|
<summary>
|
||||||
|
Registers a <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/> event has an <see cref="T:IObservable{T}"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/></param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<returns>An <see cref="T:IObservable{object[]}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.IHubProxy">
|
||||||
|
<summary>
|
||||||
|
A client side proxy for a server side hub.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Invoke(System.String,System.Object[])">
|
||||||
|
<summary>
|
||||||
|
Executes a method on the server side hub asynchronously.
|
||||||
|
</summary>
|
||||||
|
<param name="method">The name of the method.</param>
|
||||||
|
<param name="args">The arguments</param>
|
||||||
|
<returns>A task that represents when invocation returned.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Invoke``1(System.String,System.Object[])">
|
||||||
|
<summary>
|
||||||
|
Executes a method on the server side hub asynchronously.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of result returned from the hub</typeparam>
|
||||||
|
<param name="method">The name of the method.</param>
|
||||||
|
<param name="args">The arguments</param>
|
||||||
|
<returns>A task that represents when invocation returned.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Subscribe(System.String)">
|
||||||
|
<summary>
|
||||||
|
Registers an event for the hub.
|
||||||
|
</summary>
|
||||||
|
<param name="eventName">The name of the event</param>
|
||||||
|
<returns>A <see cref="T:Microsoft.AspNet.SignalR.Client.Hubs.Subscription"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IHubProxy.Item(System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets or sets state on the hub.
|
||||||
|
</summary>
|
||||||
|
<param name="name">The name of the field.</param>
|
||||||
|
<returns>The value of the field</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IHubProxy.JsonSerializer">
|
||||||
|
<summary>
|
||||||
|
Gets the serializer used by the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.HubResult">
|
||||||
|
<summary>
|
||||||
|
Represents the result of a hub invocation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Id">
|
||||||
|
<summary>
|
||||||
|
The callback identifier
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Result">
|
||||||
|
<summary>
|
||||||
|
The return value of the hub
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.IsHubException">
|
||||||
|
<summary>
|
||||||
|
Indicates whether the Error is a <see cref="T:Microsoft.AspNet.SignalR.Client.HubException"/>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Error">
|
||||||
|
<summary>
|
||||||
|
The error message returned from the hub invocation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.ErrorData">
|
||||||
|
<summary>
|
||||||
|
Extra error data
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.State">
|
||||||
|
<summary>
|
||||||
|
The caller state from this hub.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.Hubservable">
|
||||||
|
<summary>
|
||||||
|
<see cref="T:System.IObservable{object[]}"/> implementation of a hub event.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.Subscription">
|
||||||
|
<summary>
|
||||||
|
Represents a subscription to a hub method.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.ErrorExtensions.GetError(System.Exception)">
|
||||||
|
<summary>
|
||||||
|
Simplifies error recognition by unwrapping complex exceptions.
|
||||||
|
</summary>
|
||||||
|
<param name="ex">The thrown exception.</param>
|
||||||
|
<returns>An unwrapped exception in the form of a SignalRError.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.SignalRError">
|
||||||
|
<summary>
|
||||||
|
Represents errors that are thrown by the SignalR client
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.#ctor(System.Exception)">
|
||||||
|
<summary>
|
||||||
|
Create custom SignalR based error.
|
||||||
|
</summary>
|
||||||
|
<param name="exception">The exception to unwrap</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.ToString">
|
||||||
|
<summary>
|
||||||
|
Allow a SignalRError to be directly written to an output stream
|
||||||
|
</summary>
|
||||||
|
<returns>Exception error</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.Dispose">
|
||||||
|
<summary>
|
||||||
|
Dispose of the response
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.StatusCode">
|
||||||
|
<summary>
|
||||||
|
The status code of the error (if it was a WebException)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.ResponseBody">
|
||||||
|
<summary>
|
||||||
|
The response body of the error, if it was a WebException and the response is readable
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.Exception">
|
||||||
|
<summary>
|
||||||
|
The unwrapped underlying exception
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.KeepAliveData">
|
||||||
|
<summary>
|
||||||
|
Class to store all the Keep Alive properties
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.#ctor(System.IO.Stream)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="stream">The stream to read asynchronously payloads from.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the reader.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Close">
|
||||||
|
<summary>
|
||||||
|
Closes the connection and the underlying stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Opened">
|
||||||
|
<summary>
|
||||||
|
Invoked when the stream is open.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Closed">
|
||||||
|
<summary>
|
||||||
|
Invoked when the reader is closed while in the Processing state.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Data">
|
||||||
|
<summary>
|
||||||
|
Invoked when there's a message if received in the stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the Polling Request Handler.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Stop">
|
||||||
|
<summary>
|
||||||
|
Fully stops the Polling Request Handlers.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Abort">
|
||||||
|
<summary>
|
||||||
|
Aborts the currently active polling request, does not stop the Polling Request Handler.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.ResolveUrl">
|
||||||
|
<summary>
|
||||||
|
Used to generate the Url that is posted to for the poll.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.PrepareRequest">
|
||||||
|
<summary>
|
||||||
|
Allows modification of the IRequest parameter before using it in a poll.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnMessage">
|
||||||
|
<summary>
|
||||||
|
Sends the string based message to the callback.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnError">
|
||||||
|
<summary>
|
||||||
|
If the poll errors OnError gets triggered and passes the exception.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnPolling">
|
||||||
|
<summary>
|
||||||
|
Triggers when the polling request is in flight
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnAfterPoll">
|
||||||
|
<summary>
|
||||||
|
Triggers before a new polling request is attempted.
|
||||||
|
Passes in an exception if the Poll errored, null otherwise.
|
||||||
|
Expects the return as a task in order to allow modification of timing for subsequent polls.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnAbort">
|
||||||
|
<summary>
|
||||||
|
Fired when the current poll request was aborted, passing in the soon to be aborted request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Infrastructure.Disposer">
|
||||||
|
<summary>
|
||||||
|
Helper class to manage disposing a resource at an arbirtary time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Infrastructure.ThreadSafeInvoker">
|
||||||
|
<summary>
|
||||||
|
Allows for thread safe invocation of a delegate.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_CertsCanOnlyBeAddedWhenDisconnected">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Client Certificates cannot be added after the connection has started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ClientCallbackArgumentTypeMismatch">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A client callback for event {0} with {1} argument(s) was found, however an error occurred because {2}.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ClientCallbackInvalidNumberOfArguments">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A client callback for event {0} with {1} argument(s) could not be found.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ConnectionCancelled">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection was stopped before it could be started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ConnectionHasNotBeenEstablished">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection has not been established..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_DataCannotBeSentConnectionDisconnected">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Data cannot be sent because the connection is in the disconnected state. Call start before sending any data..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_DataCannotBeSentDuringWebSocketReconnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Data cannot be sent because the WebSocket connection is reconnecting..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_IncompatibleProtocolVersion">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ProxiesCannotBeAddedConnectionStarted">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A HubProxy cannot be added after the connection has been started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ServerNegotiationFailed">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Server negotiation failed..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TaskCancelledException">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Request failed - task cancelled..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TransportFailedToConnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Transport failed trying to connect..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TransportTimedOutTryingToConnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Transport timed out trying to connect.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_UrlCantContainQueryStringDirectly">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Url cannot contain query string directly. Pass query string values in using available overload..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Message_ConnectionClosed">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Connection was disconnected before invocation result was received..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Message_Reconnecting">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Connection started reconnecting before invocation result was received..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.StateChange">
|
||||||
|
<summary>
|
||||||
|
Represents a change in the connection state.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.StateChange.#ctor(Microsoft.AspNet.SignalR.Client.ConnectionState,Microsoft.AspNet.SignalR.Client.ConnectionState)">
|
||||||
|
<summary>
|
||||||
|
Creates a new stance of <see cref="T:Microsoft.AspNet.SignalR.Client.StateChange"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="oldState">The old state of the connection.</param>
|
||||||
|
<param name="newState">The new state of the connection.</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.StateChange.OldState">
|
||||||
|
<summary>
|
||||||
|
Gets the old state of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.StateChange.NewState">
|
||||||
|
<summary>
|
||||||
|
Gets the new state of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AutoTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the active transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.HttpBasedTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.ErrorDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after an error happens to continue polling.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEventsTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEventsTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader">
|
||||||
|
<summary>
|
||||||
|
Event source implementation for .NET. This isn't to the spec but it's enough to support SignalR's
|
||||||
|
server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader.#ctor(Microsoft.AspNet.SignalR.Client.IConnection,System.IO.Stream)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="connection">The connection associated with this event source</param>
|
||||||
|
<param name="stream">The stream to read event source payloads from.</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader.Message">
|
||||||
|
<summary>
|
||||||
|
Invoked when there's a message if received in the stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient">
|
||||||
|
<summary>
|
||||||
|
The default <see cref="T:Microsoft.AspNet.SignalR.Client.Http.IHttpClient"/> implementation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Initialize(Microsoft.AspNet.SignalR.Client.IConnection)">
|
||||||
|
<summary>
|
||||||
|
Initialize the Http Clients
|
||||||
|
</summary>
|
||||||
|
<param name="connection">Connection</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Get(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http GET request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Post(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http POST request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="postData">form url encoded data.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.GetHttpClient(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Returns the appropriate client based on whether it is a long running request
|
||||||
|
</summary>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.WebSocketWrapperRequest.PrepareRequest">
|
||||||
|
<summary>
|
||||||
|
Adds certificates, credentials, proxies and cookies to the request
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.WebSocketTransport.Name">
|
||||||
|
<summary>
|
||||||
|
The name of the transport.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
BIN
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Client.dll
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Client.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Client.dll
vendored
Normal file
Binary file not shown.
@@ -0,0 +1,880 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>Microsoft.AspNet.SignalR.Client</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient">
|
||||||
|
<summary>
|
||||||
|
The default <see cref="T:Microsoft.AspNet.SignalR.Client.Http.IHttpClient"/> implementation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IHttpClient">
|
||||||
|
<summary>
|
||||||
|
A client that can make http request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Initialize(Microsoft.AspNet.SignalR.Client.IConnection)">
|
||||||
|
<summary>
|
||||||
|
Initializes the Http Clients
|
||||||
|
</summary>
|
||||||
|
<param name="connection">Connection</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Get(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http GET request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether it is a long running request</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IHttpClient.Post(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http POST request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="postData">form url encoded data.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether it is a long running request</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Initialize(Microsoft.AspNet.SignalR.Client.IConnection)">
|
||||||
|
<summary>
|
||||||
|
Initialize the Http Clients
|
||||||
|
</summary>
|
||||||
|
<param name="connection">Connection</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Get(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http GET request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.Post(System.String,System.Action{Microsoft.AspNet.SignalR.Client.Http.IRequest},System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Makes an asynchronous http POST request to the specified url.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to send the request to.</param>
|
||||||
|
<param name="prepareRequest">A callback that initializes the request with default values.</param>
|
||||||
|
<param name="postData">form url encoded data.</param>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns>A <see cref="T:Task{IResponse}"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.DefaultHttpClient.GetHttpClient(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Returns the appropriate client based on whether it is a long running request
|
||||||
|
</summary>
|
||||||
|
<param name="isLongRunning">Indicates whether the request is long running</param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IRequest">
|
||||||
|
<summary>
|
||||||
|
The http request
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IRequest.Abort">
|
||||||
|
<summary>
|
||||||
|
Aborts the request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IRequest.SetRequestHeaders(System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Set Request Headers
|
||||||
|
</summary>
|
||||||
|
<param name="headers">request headers</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Http.IRequest.UserAgent">
|
||||||
|
<summary>
|
||||||
|
The user agent for this request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Http.IRequest.Accept">
|
||||||
|
<summary>
|
||||||
|
The accept header for this request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Http.IResponse">
|
||||||
|
<summary>
|
||||||
|
The http response.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Http.IResponse.GetStream">
|
||||||
|
<summary>
|
||||||
|
Gets the steam that represents the response body.
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Connection">
|
||||||
|
<summary>
|
||||||
|
Provides client connections for SignalR services.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start(Microsoft.AspNet.SignalR.Client.Http.IHttpClient)">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="httpClient">The http client</param>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Start(Microsoft.AspNet.SignalR.Client.Transports.IClientTransport)">
|
||||||
|
<summary>
|
||||||
|
Starts the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="transport">The transport to use.</param>
|
||||||
|
<returns>A task that represents when the connection has started.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Stop">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> and sends an abort message to the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Stop(System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> and sends an abort message to the server.
|
||||||
|
<param name="timeout">The timeout</param>
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#Disconnect">
|
||||||
|
<summary>
|
||||||
|
Stops the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> without sending an abort message to the server.
|
||||||
|
This function is called after we receive a disconnect message from the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Send(System.String)">
|
||||||
|
<summary>
|
||||||
|
Sends data asynchronously over the connection.
|
||||||
|
</summary>
|
||||||
|
<param name="data">The data to send.</param>
|
||||||
|
<returns>A task that represents when the data has been sent.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Send(System.Object)">
|
||||||
|
<summary>
|
||||||
|
Sends an object that will be JSON serialized asynchronously over the connection.
|
||||||
|
</summary>
|
||||||
|
<param name="value">The value to serialize.</param>
|
||||||
|
<returns>A task that represents when the data has been sent.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#MarkLastMessage">
|
||||||
|
<summary>
|
||||||
|
Sets LastMessageAt to the current time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#MarkActive">
|
||||||
|
<summary>
|
||||||
|
Sets LastActiveAt to the current time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Dispose">
|
||||||
|
<summary>
|
||||||
|
Stop the connection, equivalent to calling connection.stop
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Connection.Dispose(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Stop the connection, equivalent to calling connection.stop
|
||||||
|
</summary>
|
||||||
|
<param name="disposing">Set this to true to perform the dispose, false to do nothing</param>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Received">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> has received data from the server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Error">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> has encountered an error.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Closed">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> is stopped.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Reconnecting">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> starts reconnecting after an error.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.Reconnected">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> successfully reconnects after a timeout.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.StateChanged">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> state changes.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Connection.ConnectionSlow">
|
||||||
|
<summary>
|
||||||
|
Occurs when the <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> is about to timeout
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.TransportConnectTimeout">
|
||||||
|
<summary>
|
||||||
|
The amount of time a transport will wait (while connecting) before failing.
|
||||||
|
This value is modified by adding the server's TransportConnectTimeout configuration value.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#TotalTransportConnectTimeout">
|
||||||
|
<summary>
|
||||||
|
The amount of time a transport will wait (while connecting) before failing.
|
||||||
|
This is the total vaue obtained by adding the server's configuration value and the timeout specified by the user
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#ReconnectWindow">
|
||||||
|
<summary>
|
||||||
|
The maximum amount of time a connection will allow to try and reconnect.
|
||||||
|
This value is equivalent to the summation of the servers disconnect and keep alive timeout values.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#KeepAliveData">
|
||||||
|
<summary>
|
||||||
|
Object to store the various keep alive timeout values
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Microsoft#AspNet#SignalR#Client#IConnection#LastMessageAt">
|
||||||
|
<summary>
|
||||||
|
The timestamp of the last message received by the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.JsonSerializer">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the serializer used by the connection
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.CookieContainer">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the cookies associated with the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Credentials">
|
||||||
|
<summary>
|
||||||
|
Gets or sets authentication information for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Headers">
|
||||||
|
<summary>
|
||||||
|
Gets and sets headers for the requests
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Url">
|
||||||
|
<summary>
|
||||||
|
Gets the url for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.MessageId">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the last message id for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.ConnectionId">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the connection id for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.ConnectionToken">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the connection token for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.GroupsToken">
|
||||||
|
<summary>
|
||||||
|
Gets or sets the groups token for the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.Items">
|
||||||
|
<summary>
|
||||||
|
Gets a dictionary for storing state for a the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.QueryString">
|
||||||
|
<summary>
|
||||||
|
Gets the querystring specified in the ctor.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Connection.State">
|
||||||
|
<summary>
|
||||||
|
Gets the current <see cref="T:Microsoft.AspNet.SignalR.Client.ConnectionState"/> of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Connection.DebugTextWriter">
|
||||||
|
<summary>
|
||||||
|
Default text writer
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.#ctor(Microsoft.AspNet.SignalR.Client.IConnection,System.Object,System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the HeartBeatMonitor Class
|
||||||
|
</summary>
|
||||||
|
<param name="connection"></param>
|
||||||
|
<param name="connectionStateLock"></param>
|
||||||
|
<param name="beatInterval">How often to check connection status</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the timer that triggers heartbeats
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Beat">
|
||||||
|
<summary>
|
||||||
|
Callback function for the timer which determines if we need to notify the user or attempt to reconnect
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Beat(System.TimeSpan)">
|
||||||
|
<summary>
|
||||||
|
Logic to determine if we need to notify the user or attempt to reconnect
|
||||||
|
</summary>
|
||||||
|
<param name="timeElapsed"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Dispose">
|
||||||
|
<summary>
|
||||||
|
Dispose off the timer
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HeartbeatMonitor.Dispose(System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Dispose off the timer
|
||||||
|
</summary>
|
||||||
|
<param name="disposing"></param>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.HubConnection">
|
||||||
|
<summary>
|
||||||
|
A <see cref="T:Microsoft.AspNet.SignalR.Client.Connection"/> for interacting with Hubs.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String})">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.#ctor(System.String,System.Collections.Generic.IDictionary{System.String,System.String},System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.HubConnection"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="url">The url to connect to.</param>
|
||||||
|
<param name="queryString">The query string data to pass to the server.</param>
|
||||||
|
<param name="useDefaultUrl">Determines if the default "/signalr" path should be appended to the specified url.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubConnection.CreateHubProxy(System.String)">
|
||||||
|
<summary>
|
||||||
|
Creates an <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/> for the hub with the specified name.
|
||||||
|
</summary>
|
||||||
|
<param name="hubName">The name of the hub.</param>
|
||||||
|
<returns>A <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/></returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.HubProxyExtensions">
|
||||||
|
<summary>
|
||||||
|
Extensions to the <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.GetValue``1(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets the value of a state variable.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of the state variable</typeparam>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="name">The name of the state variable.</param>
|
||||||
|
<returns>The value of the state variable.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action)">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``1(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``2(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``3(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.HubProxyExtensions.On``4(Microsoft.AspNet.SignalR.Client.IHubProxy,System.String,System.Action{``0,``1,``2,``3})">
|
||||||
|
<summary>
|
||||||
|
Registers for an event with the specified name and callback
|
||||||
|
</summary>
|
||||||
|
<param name="proxy">The <see cref="T:Microsoft.AspNet.SignalR.Client.IHubProxy"/>.</param>
|
||||||
|
<param name="eventName">The name of the event.</param>
|
||||||
|
<param name="onData">The callback</param>
|
||||||
|
<returns>An <see cref="T:System.IDisposable"/> that represents this subscription.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.IHubProxy">
|
||||||
|
<summary>
|
||||||
|
A client side proxy for a server side hub.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Invoke(System.String,System.Object[])">
|
||||||
|
<summary>
|
||||||
|
Executes a method on the server side hub asynchronously.
|
||||||
|
</summary>
|
||||||
|
<param name="method">The name of the method.</param>
|
||||||
|
<param name="args">The arguments</param>
|
||||||
|
<returns>A task that represents when invocation returned.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Invoke``1(System.String,System.Object[])">
|
||||||
|
<summary>
|
||||||
|
Executes a method on the server side hub asynchronously.
|
||||||
|
</summary>
|
||||||
|
<typeparam name="T">The type of result returned from the hub</typeparam>
|
||||||
|
<param name="method">The name of the method.</param>
|
||||||
|
<param name="args">The arguments</param>
|
||||||
|
<returns>A task that represents when invocation returned.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.IHubProxy.Subscribe(System.String)">
|
||||||
|
<summary>
|
||||||
|
Registers an event for the hub.
|
||||||
|
</summary>
|
||||||
|
<param name="eventName">The name of the event</param>
|
||||||
|
<returns>A <see cref="T:Microsoft.AspNet.SignalR.Client.Hubs.Subscription"/>.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IHubProxy.Item(System.String)">
|
||||||
|
<summary>
|
||||||
|
Gets or sets state on the hub.
|
||||||
|
</summary>
|
||||||
|
<param name="name">The name of the field.</param>
|
||||||
|
<returns>The value of the field</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.IHubProxy.JsonSerializer">
|
||||||
|
<summary>
|
||||||
|
Gets the serializer used by the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.HubResult">
|
||||||
|
<summary>
|
||||||
|
Represents the result of a hub invocation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Id">
|
||||||
|
<summary>
|
||||||
|
The callback identifier
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Result">
|
||||||
|
<summary>
|
||||||
|
The return value of the hub
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.IsHubException">
|
||||||
|
<summary>
|
||||||
|
Indicates whether the Error is a <see cref="T:Microsoft.AspNet.SignalR.Client.HubException"/>.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.Error">
|
||||||
|
<summary>
|
||||||
|
The error message returned from the hub invocation.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.ErrorData">
|
||||||
|
<summary>
|
||||||
|
Extra error data
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Hubs.HubResult.State">
|
||||||
|
<summary>
|
||||||
|
The caller state from this hub.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Hubs.Subscription">
|
||||||
|
<summary>
|
||||||
|
Represents a subscription to a hub method.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.ErrorExtensions.GetError(System.Exception)">
|
||||||
|
<summary>
|
||||||
|
Simplifies error recognition by unwrapping complex exceptions.
|
||||||
|
</summary>
|
||||||
|
<param name="ex">The thrown exception.</param>
|
||||||
|
<returns>An unwrapped exception in the form of a SignalRError.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.SignalRError">
|
||||||
|
<summary>
|
||||||
|
Represents errors that are thrown by the SignalR client
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.#ctor(System.Exception)">
|
||||||
|
<summary>
|
||||||
|
Create custom SignalR based error.
|
||||||
|
</summary>
|
||||||
|
<param name="exception">The exception to unwrap</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.ToString">
|
||||||
|
<summary>
|
||||||
|
Allow a SignalRError to be directly written to an output stream
|
||||||
|
</summary>
|
||||||
|
<returns>Exception error</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.SignalRError.Dispose">
|
||||||
|
<summary>
|
||||||
|
Dispose of the response
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.StatusCode">
|
||||||
|
<summary>
|
||||||
|
The status code of the error (if it was a WebException)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.ResponseBody">
|
||||||
|
<summary>
|
||||||
|
The response body of the error, if it was a WebException and the response is readable
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.SignalRError.Exception">
|
||||||
|
<summary>
|
||||||
|
The unwrapped underlying exception
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Infrastructure.ThreadSafeInvoker">
|
||||||
|
<summary>
|
||||||
|
Allows for thread safe invocation of a delegate.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.KeepAliveData">
|
||||||
|
<summary>
|
||||||
|
Class to store all the Keep Alive properties
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Resources">
|
||||||
|
<summary>
|
||||||
|
A strongly-typed resource class, for looking up localized strings, etc.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.ResourceManager">
|
||||||
|
<summary>
|
||||||
|
Returns the cached ResourceManager instance used by this class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Culture">
|
||||||
|
<summary>
|
||||||
|
Overrides the current thread's CurrentUICulture property for all
|
||||||
|
resource lookups using this strongly typed resource class.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_CertsCanOnlyBeAddedWhenDisconnected">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Client Certificates cannot be added after the connection has started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ClientCallbackArgumentTypeMismatch">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A client callback for event {0} with {1} argument(s) was found, however an error occurred because {2}.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ClientCallbackInvalidNumberOfArguments">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A client callback for event {0} with {1} argument(s) could not be found.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ConnectionCancelled">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection was stopped before it could be started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ConnectionHasNotBeenEstablished">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to The connection has not been established..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_DataCannotBeSentConnectionDisconnected">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Data cannot be sent because the connection is in the disconnected state. Call start before sending any data..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_DataCannotBeSentDuringWebSocketReconnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Data cannot be sent because the WebSocket connection is reconnecting..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_IncompatibleProtocolVersion">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to You are using a version of the client that isn't compatible with the server. Client version {0}, server version {1}..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ProxiesCannotBeAddedConnectionStarted">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to A HubProxy cannot be added after the connection has been started..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_ServerNegotiationFailed">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Server negotiation failed..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TaskCancelledException">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Request failed - task cancelled..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TransportFailedToConnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Transport failed trying to connect..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_TransportTimedOutTryingToConnect">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Transport timed out trying to connect.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Error_UrlCantContainQueryStringDirectly">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Url cannot contain query string directly. Pass query string values in using available overload..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Message_ConnectionClosed">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Connection was disconnected before invocation result was received..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Resources.Message_Reconnecting">
|
||||||
|
<summary>
|
||||||
|
Looks up a localized string similar to Connection started reconnecting before invocation result was received..
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.StateChange">
|
||||||
|
<summary>
|
||||||
|
Represents a change in the connection state.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.StateChange.#ctor(Microsoft.AspNet.SignalR.Client.ConnectionState,Microsoft.AspNet.SignalR.Client.ConnectionState)">
|
||||||
|
<summary>
|
||||||
|
Creates a new stance of <see cref="T:Microsoft.AspNet.SignalR.Client.StateChange"/>.
|
||||||
|
</summary>
|
||||||
|
<param name="oldState">The old state of the connection.</param>
|
||||||
|
<param name="newState">The new state of the connection.</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.StateChange.OldState">
|
||||||
|
<summary>
|
||||||
|
Gets the old state of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.StateChange.NewState">
|
||||||
|
<summary>
|
||||||
|
Gets the new state of the connection.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.#ctor(System.IO.Stream)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="stream">The stream to read asynchronously payloads from.</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the reader.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Close">
|
||||||
|
<summary>
|
||||||
|
Closes the connection and the underlying stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Opened">
|
||||||
|
<summary>
|
||||||
|
Invoked when the stream is open.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Closed">
|
||||||
|
<summary>
|
||||||
|
Invoked when the reader is closed while in the Processing state.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AsyncStreamReader.Data">
|
||||||
|
<summary>
|
||||||
|
Invoked when there's a message if received in the stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.AutoTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the active transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.HttpBasedTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.ErrorDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after an error happens to continue polling.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.LongPollingTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Start">
|
||||||
|
<summary>
|
||||||
|
Starts the Polling Request Handler.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Stop">
|
||||||
|
<summary>
|
||||||
|
Fully stops the Polling Request Handlers.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.Abort">
|
||||||
|
<summary>
|
||||||
|
Aborts the currently active polling request, does not stop the Polling Request Handler.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.ResolveUrl">
|
||||||
|
<summary>
|
||||||
|
Used to generate the Url that is posted to for the poll.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.PrepareRequest">
|
||||||
|
<summary>
|
||||||
|
Allows modification of the IRequest parameter before using it in a poll.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnMessage">
|
||||||
|
<summary>
|
||||||
|
Sends the string based message to the callback.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnError">
|
||||||
|
<summary>
|
||||||
|
If the poll errors OnError gets triggered and passes the exception.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnPolling">
|
||||||
|
<summary>
|
||||||
|
Triggers when the polling request is in flight
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnAfterPoll">
|
||||||
|
<summary>
|
||||||
|
Triggers before a new polling request is attempted.
|
||||||
|
Passes in an exception if the Poll errored, null otherwise.
|
||||||
|
Expects the return as a task in order to allow modification of timing for subsequent polls.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="E:Microsoft.AspNet.SignalR.Client.Transports.PollingRequestHandler.OnAbort">
|
||||||
|
<summary>
|
||||||
|
Fired when the current poll request was aborted, passing in the soon to be aborted request.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEventsTransport.SupportsKeepAlive">
|
||||||
|
<summary>
|
||||||
|
Indicates whether or not the transport supports keep alive
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEventsTransport.ReconnectDelay">
|
||||||
|
<summary>
|
||||||
|
The time to wait after a connection drops to try reconnecting.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader">
|
||||||
|
<summary>
|
||||||
|
Event source implementation for .NET. This isn't to the spec but it's enough to support SignalR's
|
||||||
|
server.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader.#ctor(Microsoft.AspNet.SignalR.Client.IConnection,System.IO.Stream)">
|
||||||
|
<summary>
|
||||||
|
Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader"/> class.
|
||||||
|
</summary>
|
||||||
|
<param name="connection">The connection associated with this event source</param>
|
||||||
|
<param name="stream">The stream to read event source payloads from.</param>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Client.Transports.ServerSentEvents.EventSourceStreamReader.Message">
|
||||||
|
<summary>
|
||||||
|
Invoked when there's a message if received in the stream.
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Infrastructure.Disposer">
|
||||||
|
<summary>
|
||||||
|
Helper class to manage disposing a resource at an arbirtary time
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
Binary file not shown.
BIN
packages/Microsoft.AspNet.SignalR.Core.2.0.3/Microsoft.AspNet.SignalR.Core.2.0.3.nupkg
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Core.2.0.3/Microsoft.AspNet.SignalR.Core.2.0.3.nupkg
vendored
Normal file
Binary file not shown.
BIN
packages/Microsoft.AspNet.SignalR.Core.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Core.dll
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Core.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Core.dll
vendored
Normal file
Binary file not shown.
3152
packages/Microsoft.AspNet.SignalR.Core.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Core.xml
vendored
Normal file
3152
packages/Microsoft.AspNet.SignalR.Core.2.0.3/lib/net45/Microsoft.AspNet.SignalR.Core.xml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
BIN
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/Microsoft.AspNet.SignalR.Owin.1.2.1.nupkg
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/Microsoft.AspNet.SignalR.Owin.1.2.1.nupkg
vendored
Normal file
Binary file not shown.
BIN
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net40/Microsoft.AspNet.SignalR.Owin.dll
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net40/Microsoft.AspNet.SignalR.Owin.dll
vendored
Normal file
Binary file not shown.
99
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net40/Microsoft.AspNet.SignalR.Owin.xml
vendored
Normal file
99
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net40/Microsoft.AspNet.SignalR.Owin.xml
vendored
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>Microsoft.AspNet.SignalR.Owin</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.RequestExtensions.GetOwinVariable``1(Microsoft.AspNet.SignalR.IRequest,System.String)">
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.CallHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.CallHandler.#ctor(Microsoft.AspNet.SignalR.ConnectionConfiguration,Microsoft.AspNet.SignalR.PersistentConnection)"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.CallHandler.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})">
|
||||||
|
<returns>Returns <see cref="T:System.Threading.Tasks.Task" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.ServerRequest"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerRequest.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Cookies">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Generic.IDictionary`2" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.DisableRequestCompression"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Form">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Specialized.NameValueCollection" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Headers">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Specialized.NameValueCollection" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Items">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Generic.IDictionary`2" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="F:Microsoft.AspNet.SignalR.Owin.ServerRequest.OwinEnvironmentKey"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.QueryString">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Specialized.NameValueCollection" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.RequestHeaders">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Generic.IDictionary`2" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Url">
|
||||||
|
<returns>Returns <see cref="T:System.Uri" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.User">
|
||||||
|
<returns>Returns <see cref="T:System.Security.Principal.IPrincipal" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.ServerResponse"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.CancellationToken">
|
||||||
|
<returns>Returns <see cref="T:System.Threading.CancellationToken" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.ContentType">
|
||||||
|
<returns>Returns <see cref="T:System.String" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.DisableResponseBuffering">
|
||||||
|
<returns>Returns <see cref="T:System.Action" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.End">
|
||||||
|
<returns>Returns <see cref="T:System.Threading.Tasks.Task" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.Flush">
|
||||||
|
<returns>Returns <see cref="T:System.Threading.Tasks.Task" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.ResponseBody">
|
||||||
|
<returns>Returns <see cref="T:System.IO.Stream" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.ResponseHeaders">
|
||||||
|
<returns>Returns <see cref="T:System.Collections.Generic.IDictionary`2" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.Write(System.ArraySegment{System.Byte})"></member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.String,Microsoft.AspNet.SignalR.HubConfiguration)"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})">
|
||||||
|
<returns>Returns <see cref="T:System.Threading.Tasks.Task" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})">
|
||||||
|
<returns>Returns <see cref="T:System.Threading.Tasks.Task" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="T:Owin.OwinExtensions"></member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapConnection``1(Owin.IAppBuilder,System.String)">
|
||||||
|
<returns>Returns <see cref="T:Owin.IAppBuilder" />.</returns>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapConnection``1(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.ConnectionConfiguration)">
|
||||||
|
<returns>Returns <see cref="T:Owin.IAppBuilder" />.</returns>
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapConnection(Owin.IAppBuilder,System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)">
|
||||||
|
<returns>Returns <see cref="T:Owin.IAppBuilder" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapHubs(Owin.IAppBuilder)">
|
||||||
|
<returns>Returns <see cref="T:Owin.IAppBuilder" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapHubs(Owin.IAppBuilder,Microsoft.AspNet.SignalR.HubConfiguration)">
|
||||||
|
<returns>Returns <see cref="T:Owin.IAppBuilder" />.</returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapHubs(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.HubConfiguration)">
|
||||||
|
<returns>Returns <see cref="T:Owin.IAppBuilder" />.</returns>
|
||||||
|
</member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
BIN
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net45/Microsoft.AspNet.SignalR.Owin.dll
vendored
Normal file
BIN
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net45/Microsoft.AspNet.SignalR.Owin.dll
vendored
Normal file
Binary file not shown.
79
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net45/Microsoft.AspNet.SignalR.Owin.xml
vendored
Normal file
79
packages/Microsoft.AspNet.SignalR.Owin.1.2.1/lib/net45/Microsoft.AspNet.SignalR.Owin.xml
vendored
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<doc>
|
||||||
|
<assembly>
|
||||||
|
<name>Microsoft.AspNet.SignalR.Owin</name>
|
||||||
|
</assembly>
|
||||||
|
<members>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.RequestExtensions.GetOwinVariable``1(Microsoft.AspNet.SignalR.IRequest,System.String)">
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.CallHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.CallHandler.#ctor(Microsoft.AspNet.SignalR.ConnectionConfiguration,Microsoft.AspNet.SignalR.PersistentConnection)">
|
||||||
|
<summary>Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Owin.CallHandler" /> class.</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.CallHandler.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"></member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.ServerRequest"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerRequest.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})">
|
||||||
|
<summary>Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Owin.ServerRequest" /> class.</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Cookies"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.DisableRequestCompression"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Form"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Headers"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Items"></member>
|
||||||
|
<member name="F:Microsoft.AspNet.SignalR.Owin.ServerRequest.OwinEnvironmentKey"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.QueryString"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.RequestHeaders"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.Url"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerRequest.User"></member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.ServerResponse"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.#ctor(System.Collections.Generic.IDictionary{System.String,System.Object})">
|
||||||
|
<summary>Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Owin.ServerResponse" /> class.</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.CancellationToken"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.ContentType"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.DisableResponseBuffering"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.End"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.Flush"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.ResponseBody"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.Owin.ServerResponse.ResponseHeaders"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerResponse.Write(System.ArraySegment{System.Byte})"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.ServerRequest.AcceptWebSocketRequest(System.Func{Microsoft.AspNet.SignalR.Hosting.IWebSocket,System.Threading.Tasks.Task})"></member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.String,Microsoft.AspNet.SignalR.HubConfiguration)">
|
||||||
|
<summary>Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler" /> class.</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.HubDispatcherHandler.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"></member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler.#ctor(System.Func{System.Collections.Generic.IDictionary{System.String,System.Object},System.Threading.Tasks.Task},System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)">
|
||||||
|
<summary>Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler" /> class.</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.Owin.Handlers.PersistentConnectionHandler.Invoke(System.Collections.Generic.IDictionary{System.String,System.Object})"></member>
|
||||||
|
<member name="T:Owin.OwinExtensions"></member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapConnection``1(Owin.IAppBuilder,System.String)">
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapConnection``1(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.ConnectionConfiguration)">
|
||||||
|
<typeparam name="T"></typeparam>
|
||||||
|
</member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapConnection(Owin.IAppBuilder,System.String,System.Type,Microsoft.AspNet.SignalR.ConnectionConfiguration)"></member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapHubs(Owin.IAppBuilder)"></member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapHubs(Owin.IAppBuilder,Microsoft.AspNet.SignalR.HubConfiguration)"></member>
|
||||||
|
<member name="M:Owin.OwinExtensions.MapHubs(Owin.IAppBuilder,System.String,Microsoft.AspNet.SignalR.HubConfiguration)"></member>
|
||||||
|
<member name="T:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.#ctor">
|
||||||
|
<summary>Initializes a new instance of the <see cref="T:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler" /> class.</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.Close"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.Error"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.MaxIncomingMessageSize"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.OnClose(System.Boolean)"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.OnError"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.OnMessage(System.Byte[])"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.OnMessage(System.String)"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.OnOpen"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.ProcessWebSocketRequestAsync(System.Net.WebSockets.WebSocket,System.Threading.CancellationToken)"></member>
|
||||||
|
<member name="M:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.Send(System.String)"></member>
|
||||||
|
<member name="P:Microsoft.AspNet.SignalR.WebSockets.WebSocketHandler.WebSocket"></member>
|
||||||
|
</members>
|
||||||
|
</doc>
|
||||||
118
packages/Microsoft.Bcl.1.1.8/License-Stable.rtf
vendored
Normal file
118
packages/Microsoft.Bcl.1.1.8/License-Stable.rtf
vendored
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Tahoma;}{\f1\froman\fprq2\fcharset0 Times New Roman;}{\f2\fswiss\fprq2\fcharset0 Calibri;}{\f3\fnil\fcharset0 Calibri;}{\f4\fnil\fcharset2 Symbol;}}
|
||||||
|
{\colortbl ;\red31\green73\blue125;\red0\green0\blue255;}
|
||||||
|
{\*\listtable
|
||||||
|
{\list\listhybrid
|
||||||
|
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx360}
|
||||||
|
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx363}
|
||||||
|
{\listlevel\levelnfc2\leveljc0\levelstartat1{\leveltext\'02\'02.;}{\levelnumbers\'01;}\jclisttab\tx720}\listid1 }
|
||||||
|
{\list\listhybrid
|
||||||
|
{\listlevel\levelnfc0\leveljc0\levelstartat1{\leveltext\'02\'00.;}{\levelnumbers\'01;}\jclisttab\tx363}
|
||||||
|
{\listlevel\levelnfc4\leveljc0\levelstartat1{\leveltext\'02\'01.;}{\levelnumbers\'01;}\jclisttab\tx363}\listid2 }}
|
||||||
|
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
|
||||||
|
{\stylesheet{ Normal;}{\s1 heading 1;}{\s2 heading 2;}{\s3 heading 3;}}
|
||||||
|
{\*\generator Riched20 6.2.9200}\viewkind4\uc1
|
||||||
|
\pard\nowidctlpar\sb120\sa120\b\f0\fs24 MICROSOFT SOFTWARE LICENSE TERMS\par
|
||||||
|
|
||||||
|
\pard\brdrb\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 MICROSOFT .NET LIBRARY \par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\sb120\sa120\fs19 These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. Please read them. They apply to the software named above, which includes the media on which you received it, if any. The terms also apply to any Microsoft\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120\b0 updates,\par
|
||||||
|
{\pntext\f4\'B7\tab}supplements,\par
|
||||||
|
{\pntext\f4\'B7\tab}Internet-based services, and\par
|
||||||
|
{\pntext\f4\'B7\tab}support services\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\sb120\sa120\b for this software, unless other terms accompany those items. If so, those terms apply.\par
|
||||||
|
BY USING THE SOFTWARE, YOU ACCEPT THESE TERMS. IF YOU DO NOT ACCEPT THEM, DO NOT USE THE SOFTWARE.\par
|
||||||
|
|
||||||
|
\pard\brdrt\brdrs\brdrw10\brsp20 \nowidctlpar\sb120\sa120 IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE PERPETUAL RIGHTS BELOW.\par
|
||||||
|
|
||||||
|
\pard
|
||||||
|
{\listtext\f0 1.\tab}\jclisttab\tx360\ls1\nowidctlpar\s1\fi-357\li357\sb120\sa120 INSTALLATION AND USE RIGHTS. \par
|
||||||
|
|
||||||
|
\pard
|
||||||
|
{\listtext\f0 a.\tab}\jclisttab\tx363\ls1\ilvl1\nowidctlpar\s2\fi-363\li720\sb120\sa120 Installation and Use.\b0\fs20 You may install and use any number of copies of the software to design, develop and test your programs.\par
|
||||||
|
{\listtext\f0 b.\tab}\b\fs19 Third Party Programs.\b0\fs20 The software may include third party programs that Microsoft, not the third party, licenses to you under this agreement. Notices, if any, for the third party program are included for your information only.\b\fs19\par
|
||||||
|
|
||||||
|
\pard
|
||||||
|
{\listtext\f0 2.\tab}\jclisttab\tx360\ls1\nowidctlpar\s1\fi-357\li357\sb120\sa120\fs20 ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS.\par
|
||||||
|
|
||||||
|
\pard
|
||||||
|
{\listtext\f0 a.\tab}\jclisttab\tx363\ls1\ilvl1\nowidctlpar\s2\fi-363\li720\sb120\sa120 DISTRIBUTABLE CODE.\~ \b0 The software is comprised of Distributable Code. \f1\ldblquote\f0 Distributable Code\f1\rdblquote\f0 is code that you are permitted to distribute in programs you develop if you comply with the terms below.\b\par
|
||||||
|
|
||||||
|
\pard
|
||||||
|
{\listtext\f0 i.\tab}\jclisttab\tx720\ls1\ilvl2\nowidctlpar\s3\fi-357\li1077\sb120\sa120\tx1077 Right to Use and Distribute. \par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-357\li1434\sb120\sa120\b0 You may copy and distribute the object code form of the software.\par
|
||||||
|
{\pntext\f4\'B7\tab}Third Party Distribution. You may permit distributors of your programs to copy and distribute the Distributable Code as part of those programs.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s3\fi-357\li1077\sb120\sa120\tx1077\b ii.\tab Distribution Requirements.\b0 \b For any Distributable Code you distribute, you must\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-357\li1434\sb120\sa120\b0 add significant primary functionality to it in your programs;\par
|
||||||
|
{\pntext\f4\'B7\tab}require distributors and external end users to agree to terms that protect it at least as much as this agreement;\par
|
||||||
|
{\pntext\f4\'B7\tab}display your valid copyright notice on your programs; and\par
|
||||||
|
{\pntext\f4\'B7\tab}indemnify, defend, and hold harmless Microsoft from any claims, including attorneys\rquote fees, related to the distribution or use of your programs.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s3\fi-357\li1077\sb120\sa120\tx1077\b iii.\tab Distribution Restrictions.\b0 \b You may not\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-357\li1434\sb120\sa120\b0 alter any copyright, trademark or patent notice in the Distributable Code;\par
|
||||||
|
{\pntext\f4\'B7\tab}use Microsoft\rquote s trademarks in your programs\rquote names or in a way that suggests your programs come from or are endorsed by Microsoft;\par
|
||||||
|
{\pntext\f4\'B7\tab}include Distributable Code in malicious, deceptive or unlawful programs; or\par
|
||||||
|
{\pntext\f4\'B7\tab}modify or distribute the source code of any Distributable Code so that any part of it becomes subject to an Excluded License. An Excluded License is one that requires, as a condition of use, modification or distribution, that\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent360{\pntxtb\'B7}}\nowidctlpar\fi-358\li1792\sb120\sa120 the code be disclosed or distributed in source code form; or\cf1\f2\par
|
||||||
|
{\pntext\f4\'B7\tab}\cf0\f0 others have the right to modify it.\cf1\f2\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\cf0\b\f0 3.\tab\fs19 SCOPE OF LICENSE. \b0 The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120 work around any technical limitations in the software;\par
|
||||||
|
{\pntext\f4\'B7\tab}reverse engineer, decompile or disassemble the software, except and only to the extent that applicable law expressly permits, despite this limitation;\par
|
||||||
|
{\pntext\f4\'B7\tab}publish the software for others to copy;\par
|
||||||
|
{\pntext\f4\'B7\tab}rent, lease or lend the software;\par
|
||||||
|
{\pntext\f4\'B7\tab}transfer the software or this agreement to any third party; or\par
|
||||||
|
{\pntext\f4\'B7\tab}use the software for commercial software hosting services.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\b\fs20 4.\tab\fs19 BACKUP COPY. \b0 You may make one backup copy of the software. You may use it only to reinstall the software.\par
|
||||||
|
\b\fs20 5.\tab\fs19 DOCUMENTATION. \b0 Any person that has valid access to your computer or internal network may copy and use the documentation for your internal, reference purposes.\par
|
||||||
|
\b\fs20 6.\tab\fs19 EXPORT RESTRICTIONS. \b0 The software is subject to United States export laws and regulations. You must comply with all domestic and international export laws and regulations that apply to the software. These laws include restrictions on destinations, end users and end use. For additional information, see {\cf2\ul\fs20{\field{\*\fldinst{HYPERLINK www.microsoft.com/exporting }}{\fldrslt{www.microsoft.com/exporting}}}}\f0\fs19 .\cf2\ul\fs20\par
|
||||||
|
\cf0\ulnone\b 7.\tab\fs19 SUPPORT SERVICES. \b0 Because this software is \ldblquote as is,\rdblquote we may not provide support services for it.\par
|
||||||
|
\b\fs20 8.\tab\fs19 ENTIRE AGREEMENT. \b0 This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services.\par
|
||||||
|
\b\fs20 9.\tab\fs19 APPLICABLE LAW.\par
|
||||||
|
|
||||||
|
\pard
|
||||||
|
{\listtext\f0 a.\tab}\jclisttab\tx363\ls2\ilvl1\nowidctlpar\s2\fi-363\li720\sb120\sa120 United States. \b0 If you acquired the software in the United States, Washington state law governs the interpretation of this agreement and applies to claims for breach of it, regardless of conflict of laws principles. The laws of the state where you live govern all other claims, including claims under state consumer protection laws, unfair competition laws, and in tort.\par
|
||||||
|
{\listtext\f0 b.\tab}\b Outside the United States. If you acquired the software in any other country, the laws of that country apply.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\fs20 10.\tab\fs19 LEGAL EFFECT. \b0 This agreement describes certain legal rights. You may have other rights under the laws of your country. You may also have rights with respect to the party from whom you acquired the software. This agreement does not change your rights under the laws of your country if the laws of your country do not permit it to do so.\par
|
||||||
|
\b\fs20 11.\tab\fs19 DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED \ldblquote AS-IS.\rdblquote YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS OR STATUTORY GUARANTEES UNDER YOUR LOCAL LAWS WHICH THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\li357\sb120\sa120 FOR AUSTRALIA \endash YOU HAVE STATUTORY GUARANTEES UNDER THE AUSTRALIAN CONSUMER LAW AND NOTHING IN THESE TERMS IS INTENDED TO AFFECT THOSE RIGHTS.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s1\fi-357\li357\sb120\sa120\fs20 12.\tab\fs19 LIMITATION ON AND EXCLUSION OF REMEDIES AND DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\li357\sb120\sa120\b0 This limitation applies to\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent363{\pntxtb\'B7}}\nowidctlpar\fi-363\li720\sb120\sa120 anything related to the software, services, content (including code) on third party Internet sites, or third party programs; and\par
|
||||||
|
{\pntext\f4\'B7\tab}claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\sb120\sa120 It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages.\par
|
||||||
|
\lang9 Please note: As this software is distributed in Quebec, Canada, some of the clauses in this agreement are provided below in French.\par
|
||||||
|
Remarque : Ce logiciel \'e9tant distribu\'e9 au Qu\'e9bec, Canada, certaines des clauses dans ce contrat sont fournies ci-dessous en fran\'e7ais.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s1\sb120\sa120\b\lang1033 EXON\'c9RATION DE GARANTIE. \b0 Le logiciel vis\'e9 par une licence est offert \'ab tel quel \'bb. Toute utilisation de ce logiciel est \'e0 votre seule risque et p\'e9ril. Microsoft n\rquote accorde aucune autre garantie expresse. Vous pouvez b\'e9n\'e9ficier de droits additionnels en vertu du droit local sur la protection des consommateurs, que ce contrat ne peut modifier. La ou elles sont permises par le droit locale, les garanties implicites de qualit\'e9 marchande, d\rquote ad\'e9quation \'e0 un usage particulier et d\rquote absence de contrefa\'e7on sont exclues.\par
|
||||||
|
\b LIMITATION DES DOMMAGES-INT\'c9R\'caTS ET EXCLUSION DE RESPONSABILIT\'c9 POUR LES DOMMAGES. \b0 Vous pouvez obtenir de Microsoft et de ses fournisseurs une indemnisation en cas de dommages directs uniquement \'e0 hauteur de 5,00 $ US. Vous ne pouvez pr\'e9tendre \'e0 aucune indemnisation pour les autres dommages, y compris les dommages sp\'e9ciaux, indirects ou accessoires et pertes de b\'e9n\'e9fices.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\sb120\sa120\lang9 Cette limitation concerne :\par
|
||||||
|
|
||||||
|
\pard{\pntext\f4\'B7\tab}{\*\pn\pnlvlblt\pnf4\pnindent360{\pntxtb\'B7}}\nowidctlpar\li720\sb120\sa120 tout ce qui est reli\'e9 au logiciel, aux services ou au contenu (y compris le code) figurant sur des sites Internet tiers ou dans des programmes tiers ; et\par
|
||||||
|
{\pntext\f4\'B7\tab}les r\'e9clamations au titre de violation de contrat ou de garantie, ou au titre de responsabilit\'e9 stricte, de n\'e9gligence ou d\rquote une autre faute dans la limite autoris\'e9e par la loi en vigueur.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\sb120\sa120 Elle s\rquote applique \'e9galement, m\'eame si Microsoft connaissait ou devrait conna\'eetre l\rquote\'e9ventualit\'e9 d\rquote un tel dommage. Si votre pays n\rquote autorise pas l\rquote exclusion ou la limitation de responsabilit\'e9 pour les dommages indirects, accessoires ou de quelque nature que ce soit, il se peut que la limitation ou l\rquote exclusion ci-dessus ne s\rquote appliquera pas \'e0 votre \'e9gard.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\s1\sb120\sa120\b\lang1033 EFFET JURIDIQUE. \b0 Le pr\'e9sent contrat d\'e9crit certains droits juridiques. Vous pourriez avoir d\rquote autres droits pr\'e9vus par les lois de votre pays. Le pr\'e9sent contrat ne modifie pas les droits que vous conf\'e8rent les lois de votre pays si celles-ci ne le permettent pas.\par
|
||||||
|
|
||||||
|
\pard\nowidctlpar\sb120\sa120\b\fs20\lang1036\par
|
||||||
|
|
||||||
|
\pard\sa200\sl276\slmult1\b0\f3\fs22\lang9\par
|
||||||
|
}
|
||||||
|
| ||||||