Initial commit

This commit is contained in:
2014-05-01 16:41:24 -04:00
commit e566c6ebef
247 changed files with 133367 additions and 0 deletions

63
.gitattributes vendored Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
}
}

View 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
}
}

View 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
}
}

View 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
View 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
View 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
}
}

View 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;
}
}
}

View 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);
}
}

View 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;
}
}
}
}
}

View 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;
}
}
}

View 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
}
}

View 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));
}
}
}
}

View 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
}
}

View 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
View 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));
}
}
}
}

View 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
View 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
View 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();
}
}

View File

@@ -0,0 +1,11 @@
using System.ServiceModel;
using WeatherService.Devices;
namespace WeatherService
{
public interface IWeatherServiceCallback
{
[OperationContract(IsOneWay = true)]
void OnDeviceUpdate(DeviceBase device);
}
}

View 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
View 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();
}
}
}

View 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;
}
}
}

View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
}
}

View 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
View 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
}
}

View 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 { }
}
}
}

View 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
View 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
View 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
View 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>

Binary file not shown.

View 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&apos;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>

View 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&apos;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>

View File

@@ -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&apos;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>

File diff suppressed because it is too large Load Diff

View 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>

View 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>

View 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
}

Binary file not shown.

View File

View File

View File

View File

View File

View File

Binary file not shown.

View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
</members>
</doc>

Binary file not shown.

View File

@@ -0,0 +1,56 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>

Binary file not shown.

View File

@@ -0,0 +1,475 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Threading.Tasks</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderCore">
<summary>Holds state related to the builder's IAsyncStateMachine.</summary>
<remarks>This is a mutable struct. Be very delicate with it.</remarks>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.m_stateMachine">
<summary>A reference to the heap-allocated state machine object associated with this builder.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start``1(``0@)">
<summary>Initiates the builder's execution with the associated state machine.</summary>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument is null (Nothing in Visual Basic).</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<summary>Associates the builder with the state machine it represents.</summary>
<param name="stateMachine">The heap-allocated state machine object.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.GetCompletionAction``2(``0@,``1@)">
<summary>
Gets the Action to use with an awaiter's OnCompleted or UnsafeOnCompleted method.
On first invocation, the supplied state machine will be boxed.
</summary>
<typeparam name="TMethodBuilder">Specifies the type of the method builder used.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine used.</typeparam>
<param name="builder">The builder.</param>
<param name="stateMachine">The state machine.</param>
<returns>An Action to provide to the awaiter.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner">
<summary>Provides the ability to invoke a state machine's MoveNext method under a supplied ExecutionContext.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.m_context">
<summary>The context with which to run MoveNext.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.m_stateMachine">
<summary>The state machine whose MoveNext method should be invoked.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.#ctor(System.ExecutionContextLightup)">
<summary>Initializes the runner.</summary>
<param name="context">The context with which to run MoveNext.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run">
<summary>Invokes MoveNext under the provided context.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.s_invokeMoveNext">
<summary>Cached delegate used with ExecutionContext.Run.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(System.Object)">
<summary>Invokes the MoveNext method on the supplied IAsyncStateMachine.</summary>
<param name="stateMachine">The IAsyncStateMachine machine instance.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodTaskCache`1">
<summary>Provides a base class used to cache tasks of a specific return type.</summary>
<typeparam name="TResult">Specifies the type of results the cached tasks return.</typeparam>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.Singleton">
<summary>
A singleton cache for this result type.
This may be null if there are no cached tasks for this TResult.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.CreateCompleted(`0)">
<summary>Creates a non-disposable task.</summary>
<param name="result">The result for the task.</param>
<returns>The cacheable task.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.CreateCache">
<summary>Creates a cache.</summary>
<returns>A task cache for this result type.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.FromResult(`0)">
<summary>Gets a cached task if one exists.</summary>
<param name="result">The result for which we want a cached task.</param>
<returns>A cached task if one exists; otherwise, null.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache">
<summary>Provides a cache for Boolean tasks.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache.m_true">
<summary>A true task.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache.m_false">
<summary>A false task.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodBooleanTaskCache.FromResult(System.Boolean)">
<summary>Gets a cached task for the Boolean result.</summary>
<param name="result">true or false</param>
<returns>A cached task for the Boolean result.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache">
<summary>Provides a cache for zero Int32 tasks.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.INCLUSIVE_INT32_MIN">
<summary>The minimum value, inclusive, for which we want a cached task.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.EXCLUSIVE_INT32_MAX">
<summary>The maximum value, exclusive, for which we want a cached task.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.Int32Tasks">
<summary>The cache of Task{Int32}.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.CreateInt32Tasks">
<summary>Creates an array of cached tasks for the values in the range [INCLUSIVE_MIN,EXCLUSIVE_MAX).</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodTaskCache`1.AsyncMethodInt32TaskCache.FromResult(System.Int32)">
<summary>Gets a cached task for the zero Int32 result.</summary>
<param name="result">The integer value</param>
<returns>A cached task for the Int32 result or null if not cached.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncServices.ThrowAsync(System.Exception,System.Threading.SynchronizationContext)">
<summary>Throws the exception on the ThreadPool.</summary>
<param name="exception">The exception to propagate.</param>
<param name="targetContext">The target context on which to propagate the exception. Null to use the ThreadPool.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncServices.PrepareExceptionForRethrow(System.Exception)">
<summary>Copies the exception's stack trace so its stack trace isn't overwritten.</summary>
<param name="exc">The exception to prepare.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder">
<summary>
Provides a builder for asynchronous methods that return <see cref="T:System.Threading.Tasks.Task"/>.
This type is intended for compiler use only.
</summary>
<remarks>
AsyncTaskMethodBuilder is a value type, and thus it is copied by value.
Prior to being copied, one of its Task, SetResult, or SetException members must be accessed,
or else the copies may end up building distinct Task instances.
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.IAsyncMethodBuilder">
<summary>Represents an asynchronous method builder.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.s_cachedCompleted">
<summary>A cached VoidTaskResult task used for builders that complete synchronously.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.m_builder">
<summary>The generic builder object to which this non-generic instance delegates.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Create">
<summary>Initializes a new <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</summary>
<returns>The initialized <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start``1(``0@)">
<summary>Initiates the builder's execution with the associated state machine.</summary>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<summary>Associates the builder with the state machine it represents.</summary>
<param name="stateMachine">The heap-allocated state machine object.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.System#Runtime#CompilerServices#IAsyncMethodBuilder#PreBoxInitialization">
<summary>Perform any initialization necessary prior to lifting the builder to the heap.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
<summary>
Schedules the specified state machine to be pushed forward when the specified awaiter completes.
</summary>
<typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>
Schedules the specified state machine to be pushed forward when the specified awaiter completes.
</summary>
<typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult">
<summary>
Completes the <see cref="T:System.Threading.Tasks.Task"/> in the
<see cref="T:System.Threading.Tasks.TaskStatus">RanToCompletion</see> state.
</summary>
<exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
<exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetException(System.Exception)">
<summary>
Completes the <see cref="T:System.Threading.Tasks.Task"/> in the
<see cref="T:System.Threading.Tasks.TaskStatus">Faulted</see> state with the specified exception.
</summary>
<param name="exception">The <see cref="T:System.Exception"/> to use to fault the task.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="exception"/> argument is null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
<exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetNotificationForWaitCompletion(System.Boolean)">
<summary>
Called by the debugger to request notification when the first wait operation
(await, Wait, Result, etc.) on this builder's task completes.
</summary>
<param name="enabled">
true to enable notification; false to disable a previously set notification.
</param>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Task">
<summary>Gets the <see cref="T:System.Threading.Tasks.Task"/> for this builder.</summary>
<returns>The <see cref="T:System.Threading.Tasks.Task"/> representing the builder's asynchronous operation.</returns>
<exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder.ObjectIdForDebugger">
<summary>
Gets an object that may be used to uniquely identify this builder to the debugger.
</summary>
<remarks>
This property lazily instantiates the ID in a non-thread-safe manner.
It must only be used by the debugger, and only in a single-threaded manner
when no other threads are in the middle of accessing this property or this.Task.
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1">
<summary>
Provides a builder for asynchronous methods that return <see cref="T:System.Threading.Tasks.Task`1"/>.
This type is intended for compiler use only.
</summary>
<remarks>
AsyncTaskMethodBuilder{TResult} is a value type, and thus it is copied by value.
Prior to being copied, one of its Task, SetResult, or SetException members must be accessed,
or else the copies may end up building distinct Task instances.
</remarks>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.s_defaultResultTask">
<summary>A cached task for default(TResult).</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.m_coreState">
<summary>State related to the IAsyncStateMachine.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.m_task">
<summary>The lazily-initialized task.</summary>
<remarks>Must be named m_task for debugger step-over to work correctly.</remarks>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.m_taskCompletionSource">
<summary>The lazily-initialized task completion source.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.#cctor">
<summary>Temporary support for disabling crashing if tasks go unobserved.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Create">
<summary>Initializes a new <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</summary>
<returns>The initialized <see cref="T:System.Runtime.CompilerServices.AsyncTaskMethodBuilder"/>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start``1(``0@)">
<summary>Initiates the builder's execution with the associated state machine.</summary>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<summary>Associates the builder with the state machine it represents.</summary>
<param name="stateMachine">The heap-allocated state machine object.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.System#Runtime#CompilerServices#IAsyncMethodBuilder#PreBoxInitialization">
<summary>Perform any initialization necessary prior to lifting the builder to the heap.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitOnCompleted``2(``0@,``1@)">
<summary>
Schedules the specified state machine to be pushed forward when the specified awaiter completes.
</summary>
<typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>
Schedules the specified state machine to be pushed forward when the specified awaiter completes.
</summary>
<typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(`0)">
<summary>
Completes the <see cref="T:System.Threading.Tasks.Task`1"/> in the
<see cref="T:System.Threading.Tasks.TaskStatus">RanToCompletion</see> state with the specified result.
</summary>
<param name="result">The result to use to complete the task.</param>
<exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetResult(System.Threading.Tasks.TaskCompletionSource{`0})">
<summary>
Completes the builder by using either the supplied completed task, or by completing
the builder's previously accessed task using default(TResult).
</summary>
<param name="completedTask">A task already completed with the value default(TResult).</param>
<exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetException(System.Exception)">
<summary>
Completes the <see cref="T:System.Threading.Tasks.Task`1"/> in the
<see cref="T:System.Threading.Tasks.TaskStatus">Faulted</see> state with the specified exception.
</summary>
<param name="exception">The <see cref="T:System.Exception"/> to use to fault the task.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="exception"/> argument is null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The task has already completed.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.SetNotificationForWaitCompletion(System.Boolean)">
<summary>
Called by the debugger to request notification when the first wait operation
(await, Wait, Result, etc.) on this builder's task completes.
</summary>
<param name="enabled">
true to enable notification; false to disable a previously set notification.
</param>
<remarks>
This should only be invoked from within an asynchronous method,
and only by the debugger.
</remarks>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.GetTaskForResult(`0)">
<summary>
Gets a task for the specified result. This will either
be a cached or new task, never null.
</summary>
<param name="result">The result for which we need a task.</param>
<returns>The completed task containing the result.</returns>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.CompletionSource">
<summary>Gets the lazily-initialized TaskCompletionSource.</summary>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Task">
<summary>Gets the <see cref="T:System.Threading.Tasks.Task`1"/> for this builder.</summary>
<returns>The <see cref="T:System.Threading.Tasks.Task`1"/> representing the builder's asynchronous operation.</returns>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.ObjectIdForDebugger">
<summary>
Gets an object that may be used to uniquely identify this builder to the debugger.
</summary>
<remarks>
This property lazily instantiates the ID in a non-thread-safe manner.
It must only be used by the debugger, and only in a single-threaded manner
when no other threads are in the middle of accessing this property or this.Task.
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder">
<summary>
Provides a builder for asynchronous methods that return void.
This type is intended for compiler use only.
</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.m_synchronizationContext">
<summary>The synchronization context associated with this operation.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.m_coreState">
<summary>State related to the IAsyncStateMachine.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.m_objectIdForDebugger">
<summary>An object used by the debugger to uniquely identify this builder. Lazily initialized.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.#cctor">
<summary>Temporary support for disabling crashing if tasks go unobserved.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.PreventUnobservedTaskExceptions">
<summary>Registers with UnobservedTaskException to suppress exception crashing.</summary>
</member>
<member name="F:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.s_preventUnobservedTaskExceptionsInvoked">
<summary>Non-zero if PreventUnobservedTaskExceptions has already been invoked.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Create">
<summary>Initializes a new <see cref="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder"/>.</summary>
<returns>The initialized <see cref="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder"/>.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.#ctor(System.Threading.SynchronizationContext)">
<summary>Initializes the <see cref="T:System.Runtime.CompilerServices.AsyncVoidMethodBuilder"/>.</summary>
<param name="synchronizationContext">The synchronizationContext associated with this operation. This may be null.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start``1(``0@)">
<summary>Initiates the builder's execution with the associated state machine.</summary>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="stateMachine">The state machine instance, passed by reference.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<summary>Associates the builder with the state machine it represents.</summary>
<param name="stateMachine">The heap-allocated state machine object.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="stateMachine"/> argument was null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The builder is incorrectly initialized.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.System#Runtime#CompilerServices#IAsyncMethodBuilder#PreBoxInitialization">
<summary>Perform any initialization necessary prior to lifting the builder to the heap.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitOnCompleted``2(``0@,``1@)">
<summary>
Schedules the specified state machine to be pushed forward when the specified awaiter completes.
</summary>
<typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<summary>
Schedules the specified state machine to be pushed forward when the specified awaiter completes.
</summary>
<typeparam name="TAwaiter">Specifies the type of the awaiter.</typeparam>
<typeparam name="TStateMachine">Specifies the type of the state machine.</typeparam>
<param name="awaiter">The awaiter.</param>
<param name="stateMachine">The state machine.</param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetResult">
<summary>Completes the method builder successfully.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.SetException(System.Exception)">
<summary>Faults the method builder with an exception.</summary>
<param name="exception">The exception that is the cause of this fault.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="exception"/> argument is null (Nothing in Visual Basic).</exception>
<exception cref="T:System.InvalidOperationException">The builder is not initialized.</exception>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.NotifySynchronizationContextOfCompletion">
<summary>Notifies the current synchronization context that the operation completed.</summary>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncVoidMethodBuilder.ObjectIdForDebugger">
<summary>
Gets an object that may be used to uniquely identify this builder to the debugger.
</summary>
<remarks>
This property lazily instantiates the ID in a non-thread-safe manner.
It must only be used by the debugger and only in a single-threaded manner.
</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.IAsyncStateMachine">
<summary>
Represents state machines generated for asynchronous methods.
This type is intended for compiler use only.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IAsyncStateMachine.MoveNext">
<summary>Moves the state machine to its next state.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IAsyncStateMachine.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<summary>Configures the state machine with a heap-allocated replica.</summary>
<param name="stateMachine">The heap-allocated replica.</param>
</member>
<member name="T:System.Runtime.CompilerServices.ICriticalNotifyCompletion">
<summary>
Represents an awaiter used to schedule continuations when an await operation completes.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.INotifyCompletion">
<summary>
Represents an operation that will schedule continuations when the operation completes.
</summary>
</member>
<member name="M:System.Runtime.CompilerServices.INotifyCompletion.OnCompleted(System.Action)">
<summary>Schedules the continuation action to be invoked when the instance completes.</summary>
<param name="continuation">The action to invoke when the operation completes.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="continuation"/> argument is null (Nothing in Visual Basic).</exception>
</member>
<member name="M:System.Runtime.CompilerServices.ICriticalNotifyCompletion.UnsafeOnCompleted(System.Action)">
<summary>Schedules the continuation action to be invoked when the instance completes.</summary>
<param name="continuation">The action to invoke when the operation completes.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="continuation"/> argument is null (Nothing in Visual Basic).</exception>
<remarks>Unlike OnCompleted, UnsafeOnCompleted need not propagate ExecutionContext information.</remarks>
</member>
<member name="T:System.Runtime.CompilerServices.VoidTaskResult">
<summary>Used with Task(of void)</summary>
</member>
</members>
</doc>

View File

View File

@@ -0,0 +1,51 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>

View File

@@ -0,0 +1,860 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.ArgumentException_TupleIncorrectType">
<summary>
Looks up a localized string similar to Argument must be of type {0}..
</summary>
</member>
<member name="P:System.Strings.ArgumentException_TupleLastArgumentNotATuple">
<summary>
Looks up a localized string similar to The last element of an eight element tuple must be a Tuple..
</summary>
</member>
<member name="T:System.Collections.IStructuralEquatable">
<summary>
Defines methods to support the comparison of objects for structural equality.
</summary>
</member>
<member name="M:System.Collections.IStructuralEquatable.Equals(System.Object,System.Collections.IEqualityComparer)">
<summary>
Determines whether an object is structurally equal to the current instance.
</summary>
<param name="other">The object to compare with the current instance.</param>
<param name="comparer">An object that determines whether the current instance and other are equal. </param>
<returns>true if the two objects are equal; otherwise, false.</returns>
</member>
<member name="M:System.Collections.IStructuralEquatable.GetHashCode(System.Collections.IEqualityComparer)">
<summary>
Returns a hash code for the current instance.
</summary>
<param name="comparer">An object that computes the hash code of the current object.</param>
<returns>The hash code for the current instance.</returns>
</member>
<member name="T:System.Collections.IStructuralComparable">
<summary>
Supports the structural comparison of collection objects.
</summary>
</member>
<member name="M:System.Collections.IStructuralComparable.CompareTo(System.Object,System.Collections.IComparer)">
<summary>
Determines whether the current collection object precedes, occurs in the same position as, or follows another object in the sort order.
</summary>
<param name="other">The object to compare with the current instance.</param>
<param name="comparer">An object that compares members of the current collection object with the corresponding members of other.</param>
<returns>An integer that indicates the relationship of the current collection object to other.</returns>
<exception cref="T:System.ArgumentException">
This instance and other are not the same type.
</exception>
</member>
<member name="T:System.Func`6">
<summary>
Encapsulates a method that has five parameters and returns a value of the type specified by the TResult parameter.
</summary>
<typeparam name="T1">The type of the first parameter of the method that this delegate encapsulates.</typeparam>
<typeparam name="T2">The type of the second parameter of the method that this delegate encapsulates.</typeparam>
<typeparam name="T3">The type of the third parameter of the method that this delegate encapsulates.</typeparam>
<typeparam name="T4">The type of the fourth parameter of the method that this delegate encapsulates.</typeparam>
<typeparam name="T5">The type of the fifth parameter of the method that this delegate encapsulates.</typeparam>
<typeparam name="TResult">The type of the return value of the method that this delegate encapsulates.</typeparam>
<param name="arg1">The first parameter of the method that this delegate encapsulates.</param>
<param name="arg2">The second parameter of the method that this delegate encapsulates.</param>
<param name="arg3">The third parameter of the method that this delegate encapsulates.</param>
<param name="arg4">The fourth parameter of the method that this delegate encapsulates.</param>
<param name="arg5">The fifth parameter of the method that this delegate encapsulates.</param>
<returns>The return value of the method that this delegate encapsulates.</returns>
</member>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.ITuple">
<summary>
Helper so we can call some tuple methods recursively without knowing the underlying types.
</summary>
</member>
<member name="T:System.Tuple">
<summary>
Provides static methods for creating tuple objects.
</summary>
</member>
<member name="M:System.Tuple.Create``1(``0)">
<summary>
Creates a new 1-tuple, or singleton.
</summary>
<typeparam name="T1">The type of the only component of the tuple.</typeparam>
<param name="item1">The value of the only component of the tuple.</param>
<returns>A tuple whose value is (item1).</returns>
</member>
<member name="M:System.Tuple.Create``2(``0,``1)">
<summary>
Creates a new 3-tuple, or pair.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<returns>An 2-tuple (pair) whose value is (item1, item2).</returns>
</member>
<member name="M:System.Tuple.Create``3(``0,``1,``2)">
<summary>
Creates a new 3-tuple, or triple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<returns>An 3-tuple (triple) whose value is (item1, item2, item3).</returns>
</member>
<member name="M:System.Tuple.Create``4(``0,``1,``2,``3)">
<summary>
Creates a new 4-tuple, or quadruple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<returns>An 4-tuple (quadruple) whose value is (item1, item2, item3, item4).</returns>
</member>
<member name="M:System.Tuple.Create``5(``0,``1,``2,``3,``4)">
<summary>
Creates a new 5-tuple, or quintuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<returns>An 5-tuple (quintuple) whose value is (item1, item2, item3, item4, item5).</returns>
</member>
<member name="M:System.Tuple.Create``6(``0,``1,``2,``3,``4,``5)">
<summary>
Creates a new 6-tuple, or sextuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<typeparam name="T6">The type of the sixth component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<param name="item6">The value of the sixth component of the tuple.</param>
<returns>An 6-tuple (sextuple) whose value is (item1, item2, item3, item4, item5, item6).</returns>
</member>
<member name="M:System.Tuple.Create``7(``0,``1,``2,``3,``4,``5,``6)">
<summary>
Creates a new 7-tuple, or septuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<typeparam name="T6">The type of the sixth component of the tuple.</typeparam>
<typeparam name="T7">The type of the seventh component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<param name="item6">The value of the sixth component of the tuple.</param>
<param name="item7">The value of the seventh component of the tuple.</param>
<returns>An 7-tuple (septuple) whose value is (item1, item2, item3, item4, item5, item6, item7).</returns>
</member>
<member name="M:System.Tuple.Create``8(``0,``1,``2,``3,``4,``5,``6,``7)">
<summary>
Creates a new 8-tuple, or octuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<typeparam name="T6">The type of the sixth component of the tuple.</typeparam>
<typeparam name="T7">The type of the seventh component of the tuple.</typeparam>
<typeparam name="T8">The type of the eighth component of the tuple.</typeparam>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<param name="item6">The value of the sixth component of the tuple.</param>
<param name="item7">The value of the seventh component of the tuple.</param>
<param name="item8">The value of the eighth component of the tuple.</param>
<returns>An 8-tuple (octuple) whose value is (item1, item2, item3, item4, item5, item6, item7, item8).</returns>
</member>
<member name="T:System.Tuple`1">
<summary>
Represents a 1-tuple, or singleton.
</summary>
<typeparam name="T1">The type of the tuple's only component.</typeparam>
</member>
<member name="M:System.Tuple`1.#ctor(`0)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`1"/> class.
</summary>
<param name="item1">The value of the current tuple object's single component.</param>
</member>
<member name="M:System.Tuple`1.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`1.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`1.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`1.Item1">
<summary>
Gets the value of the tuple object's single component.
</summary>
<value>
The value of the current tuple object's single component.
</value>
</member>
<member name="T:System.Tuple`2">
<summary>
Represents an 2-tuple, or pair.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
</member>
<member name="M:System.Tuple`2.#ctor(`0,`1)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`2"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
</member>
<member name="M:System.Tuple`2.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`2.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`2.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`2.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`2.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="T:System.Tuple`3">
<summary>
Represents an 3-tuple, or triple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
</member>
<member name="M:System.Tuple`3.#ctor(`0,`1,`2)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`3"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
</member>
<member name="M:System.Tuple`3.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`3.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`3.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`3.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`3.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="P:System.Tuple`3.Item3">
<summary>
Gets the value of the current tuple object's third component.
</summary>
<value>
The value of the current tuple object's third component.
</value>
</member>
<member name="T:System.Tuple`4">
<summary>
Represents an 4-tuple, or quadruple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
</member>
<member name="M:System.Tuple`4.#ctor(`0,`1,`2,`3)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`4"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
</member>
<member name="M:System.Tuple`4.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`4.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`4.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`4.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`4.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="P:System.Tuple`4.Item3">
<summary>
Gets the value of the current tuple object's third component.
</summary>
<value>
The value of the current tuple object's third component.
</value>
</member>
<member name="P:System.Tuple`4.Item4">
<summary>
Gets the value of the current tuple object's fourth component.
</summary>
<value>
The value of the current tuple object's fourth component.
</value>
</member>
<member name="T:System.Tuple`5">
<summary>
Represents an 5-tuple, or quintuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
</member>
<member name="M:System.Tuple`5.#ctor(`0,`1,`2,`3,`4)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`5"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
</member>
<member name="M:System.Tuple`5.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`5.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`5.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`5.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`5.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="P:System.Tuple`5.Item3">
<summary>
Gets the value of the current tuple object's third component.
</summary>
<value>
The value of the current tuple object's third component.
</value>
</member>
<member name="P:System.Tuple`5.Item4">
<summary>
Gets the value of the current tuple object's fourth component.
</summary>
<value>
The value of the current tuple object's fourth component.
</value>
</member>
<member name="P:System.Tuple`5.Item5">
<summary>
Gets the value of the current tuple object's fifth component.
</summary>
<value>
The value of the current tuple object's fifth component.
</value>
</member>
<member name="T:System.Tuple`6">
<summary>
Represents an 6-tuple, or sextuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<typeparam name="T6">The type of the sixth component of the tuple.</typeparam>
</member>
<member name="M:System.Tuple`6.#ctor(`0,`1,`2,`3,`4,`5)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`6"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<param name="item6">The value of the sixth component of the tuple.</param>
</member>
<member name="M:System.Tuple`6.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`6.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`6.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`6.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`6.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="P:System.Tuple`6.Item3">
<summary>
Gets the value of the current tuple object's third component.
</summary>
<value>
The value of the current tuple object's third component.
</value>
</member>
<member name="P:System.Tuple`6.Item4">
<summary>
Gets the value of the current tuple object's fourth component.
</summary>
<value>
The value of the current tuple object's fourth component.
</value>
</member>
<member name="P:System.Tuple`6.Item5">
<summary>
Gets the value of the current tuple object's fifth component.
</summary>
<value>
The value of the current tuple object's fifth component.
</value>
</member>
<member name="P:System.Tuple`6.Item6">
<summary>
Gets the value of the current tuple object's sixth component.
</summary>
<value>
The value of the current tuple object's sixth component.
</value>
</member>
<member name="T:System.Tuple`7">
<summary>
Represents an 7-tuple, or septuple.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<typeparam name="T6">The type of the sixth component of the tuple.</typeparam>
<typeparam name="T7">The type of the seventh component of the tuple.</typeparam>
</member>
<member name="M:System.Tuple`7.#ctor(`0,`1,`2,`3,`4,`5,`6)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`7"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<param name="item6">The value of the sixth component of the tuple.</param>
<param name="item7">The value of the seventh component of the tuple.</param>
</member>
<member name="M:System.Tuple`7.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`7.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`7.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`7.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`7.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="P:System.Tuple`7.Item3">
<summary>
Gets the value of the current tuple object's third component.
</summary>
<value>
The value of the current tuple object's third component.
</value>
</member>
<member name="P:System.Tuple`7.Item4">
<summary>
Gets the value of the current tuple object's fourth component.
</summary>
<value>
The value of the current tuple object's fourth component.
</value>
</member>
<member name="P:System.Tuple`7.Item5">
<summary>
Gets the value of the current tuple object's fifth component.
</summary>
<value>
The value of the current tuple object's fifth component.
</value>
</member>
<member name="P:System.Tuple`7.Item6">
<summary>
Gets the value of the current tuple object's sixth component.
</summary>
<value>
The value of the current tuple object's sixth component.
</value>
</member>
<member name="P:System.Tuple`7.Item7">
<summary>
Gets the value of the current tuple object's seventh component.
</summary>
<value>
The value of the current tuple object's seventh component.
</value>
</member>
<member name="T:System.Tuple`8">
<summary>
Represents an n-tuple, where n is 8 or greater.
</summary>
<typeparam name="T1">The type of the first component of the tuple.</typeparam>
<typeparam name="T2">The type of the second component of the tuple.</typeparam>
<typeparam name="T3">The type of the third component of the tuple.</typeparam>
<typeparam name="T4">The type of the fourth component of the tuple.</typeparam>
<typeparam name="T5">The type of the fifth component of the tuple.</typeparam>
<typeparam name="T6">The type of the sixth component of the tuple.</typeparam>
<typeparam name="T7">The type of the seventh component of the tuple.</typeparam>
<typeparam name="TRest">Any generic Tuple object that defines the types of the tuple's remaining components.</typeparam>
</member>
<member name="M:System.Tuple`8.#ctor(`0,`1,`2,`3,`4,`5,`6,`7)">
<summary>
Initializes a new instance of the <see cref="T:System.Tuple`8"/> class.
</summary>
<param name="item1">The value of the first component of the tuple.</param>
<param name="item2">The value of the second component of the tuple.</param>
<param name="item3">The value of the third component of the tuple.</param>
<param name="item4">The value of the fourth component of the tuple.</param>
<param name="item5">The value of the fifth component of the tuple.</param>
<param name="item6">The value of the sixth component of the tuple.</param>
<param name="item7">The value of the seventh component of the tuple.</param>
<param name="rest">Any generic Tuple object that contains the values of the tuple's remaining components.</param>
<exception cref="T:System.ArgumentException">
rest is not a generic Tuple object.
</exception>
</member>
<member name="M:System.Tuple`8.Equals(System.Object)">
<summary>
Returns a value that indicates whether the current tuple object is equal to a specified object.
</summary>
<param name="obj">The object to compare with this instance.</param>
<returns>true if the current instance is equal to the specified object; otherwise, false.</returns>
</member>
<member name="M:System.Tuple`8.GetHashCode">
<summary>
Calculates the hash code for the current tuple object.
</summary>
<returns>A 32-bit signed integer hash code.</returns>
</member>
<member name="M:System.Tuple`8.ToString">
<summary>
Returns a string that represents the value of this tuple instance.
</summary>
<returns>The string representation of this tuple object.</returns>
</member>
<member name="P:System.Tuple`8.Item1">
<summary>
Gets the value of the current tuple object's first component.
</summary>
<value>
The value of the current tuple object's first component.
</value>
</member>
<member name="P:System.Tuple`8.Item2">
<summary>
Gets the value of the current tuple object's second component.
</summary>
<value>
The value of the current tuple object's second component.
</value>
</member>
<member name="P:System.Tuple`8.Item3">
<summary>
Gets the value of the current tuple object's third component.
</summary>
<value>
The value of the current tuple object's third component.
</value>
</member>
<member name="P:System.Tuple`8.Item4">
<summary>
Gets the value of the current tuple object's fourth component.
</summary>
<value>
The value of the current tuple object's fourth component.
</value>
</member>
<member name="P:System.Tuple`8.Item5">
<summary>
Gets the value of the current tuple object's fifth component.
</summary>
<value>
The value of the current tuple object's fifth component.
</value>
</member>
<member name="P:System.Tuple`8.Item6">
<summary>
Gets the value of the current tuple object's sixth component.
</summary>
<value>
The value of the current tuple object's sixth component.
</value>
</member>
<member name="P:System.Tuple`8.Item7">
<summary>
Gets the value of the current tuple object's seventh component.
</summary>
<value>
The value of the current tuple object's seventh component.
</value>
</member>
<member name="P:System.Tuple`8.Rest">
<summary>
Gets the current tuple object's remaining components.
</summary>
<value>
The value of the current tuple object's remaining components.
</value>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.IO</name>
</assembly>
<members>
<member name="T:System.Strings">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:System.Strings.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:System.Strings.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:System.Strings.GenericInvalidData">
<summary>
Looks up a localized string similar to Found invalid data while decoding..
</summary>
</member>
<member name="T:System.IO.InvalidDataException">
<summary>
The exception that is thrown when a data stream is in an invalid format.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class.
</summary>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a specified error message.
</summary>
<param name="message">The error message that explains the reason for the exception.</param>
</member>
<member name="M:System.IO.InvalidDataException.#ctor(System.String,System.Exception)">
<summary>
Initializes a new instance of the <see cref="T:System.IO.InvalidDataException" /> class with a reference to the inner exception that is the cause of this exception.</summary>
<param name="message">The error message that explains the reason for the exception.</param>
<param name="innerException">The exception that is the cause of the current exception. If the <paramref name="innerException" /> parameter is not null, the current exception is raised in a catch block that handles the inner exception.</param>
</member>
</members>
</doc>

View File

@@ -0,0 +1,56 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.Runtime</name>
</assembly>
<members>
<member name="T:System.IProgress`1">
<summary>Defines a provider for progress updates.</summary>
<typeparam name="T">The type of progress update value.</typeparam>
</member>
<member name="M:System.IProgress`1.Report(`0)">
<summary>Reports a progress update.</summary>
<param name="value">The value of the updated progress.</param>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncStateMachineAttribute">
<summary>Identities the async state machine type for this method.</summary>
</member>
<member name="T:System.Runtime.CompilerServices.StateMachineAttribute">
<summary>Identities the state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.StateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="P:System.Runtime.CompilerServices.StateMachineAttribute.StateMachineType">
<summary>Gets the type that implements the state machine.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
<member name="T:System.Runtime.CompilerServices.CallerMemberNameAttribute">
<summary>
Allows you to obtain the method or property name of the caller to the method.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerLineNumberAttribute">
<summary>
Allows you to obtain the line number in the source file at which the method is called.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.CallerFilePathAttribute">
<summary>
Allows you to obtain the full path of the source file that contains the caller.
This is the file path at the time of compile.
</summary>
</member>
<member name="T:System.Runtime.CompilerServices.IteratorStateMachineAttribute">
<summary>Identities the iterator state machine type for this method.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.IteratorStateMachineAttribute.#ctor(System.Type)">
<summary>Initializes the attribute.</summary>
<param name="stateMachineType">The type that implements the state machine.</param>
</member>
</members>
</doc>

Some files were not shown because too many files have changed in this diff Show More