diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..ac39438c1
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,80 @@
+# EditorConfig is awesome:http://EditorConfig.org
+
+# top-most EditorConfig file
+root = true
+
+# Don't use tabs for indentation.
+[*]
+indent_style = space
+# (Please don't specify an indent_size here; that has too many unintended consequences.)
+
+# Code files
+[*.{cs,csx,vb,vbx}]
+indent_size = 4
+insert_final_newline = true
+charset = utf-8-bom
+
+# Xml project files
+[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
+indent_size = 2
+
+# Xml config files
+[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
+indent_size = 2
+
+# JSON files
+[*.json]
+indent_size = 2
+
+# Dotnet code style settings:
+[*.{cs,vb}]
+# Sort using and Import directives with System.* appearing first
+dotnet_sort_system_directives_first = true
+# Avoid "this." and "Me." if not necessary
+dotnet_style_qualification_for_field = false:suggestion
+dotnet_style_qualification_for_property = false:suggestion
+dotnet_style_qualification_for_method = false:suggestion
+dotnet_style_qualification_for_event = false:suggestion
+
+# Use language keywords instead of framework type names for type references
+dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
+dotnet_style_predefined_type_for_member_access = true:suggestion
+
+# Suggest more modern language features when available
+dotnet_style_object_initializer = true:suggestion
+dotnet_style_collection_initializer = true:suggestion
+dotnet_style_coalesce_expression = true:suggestion
+dotnet_style_null_propagation = true:suggestion
+dotnet_style_explicit_tuple_names = true:suggestion
+
+# CSharp code style settings:
+[*.cs]
+# Prefer "var" everywhere
+csharp_style_var_for_built_in_types = true:suggestion
+csharp_style_var_when_type_is_apparent = true:suggestion
+csharp_style_var_elsewhere = true:suggestion
+
+# Prefer method-like constructs to have a block body
+csharp_style_expression_bodied_methods = false:none
+csharp_style_expression_bodied_constructors = false:none
+csharp_style_expression_bodied_operators = false:none
+
+# Prefer property-like constructs to have an expression-body
+csharp_style_expression_bodied_properties = true:none
+csharp_style_expression_bodied_indexers = true:none
+csharp_style_expression_bodied_accessors = true:none
+
+# Suggest more modern language features when available
+csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
+csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
+csharp_style_inlined_variable_declaration = true:suggestion
+csharp_style_throw_expression = true:suggestion
+csharp_style_conditional_delegate_call = true:suggestion
+
+# Newline settings
+csharp_new_line_before_open_brace = anonymous_types,accessors,object_collection_array_initalizers,methods,properties,types
+csharp_new_line_before_else = false
+csharp_new_line_before_catch = false
+csharp_new_line_before_finally = false
+csharp_new_line_before_members_in_object_initializers = true
+csharp_new_line_before_members_in_anonymous_types = true
diff --git a/.gitattributes b/.gitattributes
index 2bde29979..269bc192f 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,18 +1,45 @@
-# Auto detect text files and perform LF normalization
+# Catch all for anything we forgot. Add rules if you get CRLF to LF warnings.
* text=auto
-# Custom for Visual Studio
-*.cs diff=csharp
-*.sln text eol=crlf
+# Text files that should be normalized to LF in odb.
+*.cs text eol=lf diff=csharp
+*.xaml text
+*.config text
+*.c text
+*.h text
+*.cpp text
+*.hpp text
-# Standard to msysgit
-*.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
+*.sln text
+*.csproj text
+*.vcxproj text
+
+*.md text
+*.tt text
+*.sh text
+*.ps1 text
+*.cmd text
+*.bat text
+*.markdown text
+*.msbuild text
+
+
+# Binary files that should not be normalized or diffed
+*.png binary
+*.jpg binary
+*.gif binary
+*.ico binary
+*.rc binary
+
+*.pfx binary
+*.snk binary
+*.dll binary
+*.exe binary
+*.lib binary
+*.exp binary
+*.pdb binary
+*.sdf binary
+*.7z binary
+
+# Generated file should just use CRLF, it's fiiine
+SolutionInfo.cs text eol=crlf diff=csharp
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
new file mode 100644
index 000000000..df408219b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE.md
@@ -0,0 +1,27 @@
+***Note*: for support questions, please ask on StackOverflow: https://stackoverflow.com/questions/tagged/Akavache . This repository's issues are reserved for feature requests and bug reports.**
+
+**Do you want to request a *feature* or report a *bug*?**
+
+
+
+**What is the current behavior?**
+
+
+
+**If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem**
+
+
+
+**What is the expected behavior?**
+
+
+
+**What is the motivation / use case for changing the behavior?**
+
+
+
+**Which versions of Akavache, and which platform / OS are affected by this issue? Did this work in previous versions of Akavache? Please also test with the latest stable and snapshot (https://www.myget.org/feed/Akavache/package/nuget/Akavache) versions.**
+
+
+
+**Other information (e.g. stacktraces, related issues, suggestions how to fix)**
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 000000000..797cfd7b2
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,23 @@
+**What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)**
+
+
+
+**What is the current behavior? (You can also link to an open issue here)**
+
+
+
+**What is the new behavior (if this is a feature change)?**
+
+
+
+**Does this PR introduce a breaking change?**
+
+
+
+**Please check if the PR fulfills these requirements**
+- [ ] The commit follows our guidelines: https://github.com/Akavache/Akavache/blob/master/CONTRIBUTING.md
+- [ ] Tests for the changes have been added (for bug fixes / features)
+- [ ] Docs have been added / updated (for bug fixes / features)
+
+**Other information**:
+
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
new file mode 100644
index 000000000..23566a04f
--- /dev/null
+++ b/.github/release-drafter.yml
@@ -0,0 +1,3 @@
+template: |
+ ## What's Changed
+ $CHANGES
diff --git a/.gitignore b/.gitignore
index b2d4c854c..260ececd1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,27 +4,34 @@
# User-specific files
*.suo
*.user
+*.userosscache
*.sln.docstates
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
+x86/
build/
bld/
[Bb]in/
[Oo]bj/
-# Roslyn cache directories
-*.ide/
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
-#NUNIT
+# NUNIT
*.VisualState.xml
TestResult.xml
@@ -33,6 +40,12 @@ TestResult.xml
[Rr]eleasePS/
dlldata.c
+# DNX
+*.lock.json
+artifacts/
+*.nuget.props
+*.nuget.targets
+
*_i.c
*_p.c
*_i.h
@@ -57,6 +70,7 @@ dlldata.c
*.pidb
*.svclog
*.scc
+*.binlog
# Chutzpah Test files
_Chutzpah*
@@ -65,6 +79,7 @@ _Chutzpah*
ipch/
*.aps
*.ncb
+*.opendb
*.opensdf
*.sdf
*.cachefile
@@ -73,6 +88,7 @@ ipch/
*.psess
*.vsp
*.vspx
+*.sap
# TFS 2012 Local Workspace
$tf/
@@ -85,7 +101,7 @@ _ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
-# JustCode is a .NET coding addin-in
+# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
@@ -97,6 +113,7 @@ _TeamCity*
# NCrunch
_NCrunch_*
.*crunch*.local.xml
+nCrunchTemp_*
# MightyMoose
*.mm.*
@@ -124,36 +141,40 @@ publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
-## TODO: Comment the next line if you want to checkin your
-## web deploy settings but do note that will include unencrypted
-## passwords
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
+*.publishproj
# NuGet Packages
-packages/*
*.nupkg
-## TODO: If the tool you use requires repositories.config
-## uncomment the next line
-!packages/repositories.config
-
-# Enable "build/" folder in the NuGet Packages folder since
-# NuGet packages use it for MSBuild targets.
-# This line needs to be after the ignore of the build folder
-# (and the packages folder if the line above has been uncommented)
-!packages/build/
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
# Windows Azure Build Output
csx/
*.build.csdef
+# Windows Azure Emulator
+ecf/
+rcf/
+
# Windows Store app package directory
AppPackages/
+BundleArtifacts/
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
# Others
-sql/
-*.Cache
ClientBin/
-[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
@@ -161,6 +182,7 @@ ClientBin/
*.pfx
*.publishsettings
node_modules/
+orleans.codegen.cs
# RIA/Silverlight projects
Generated_Code/
@@ -185,10 +207,45 @@ UpgradeLog*.htm
# Microsoft Fakes
FakesAssemblies/
-# Custom
+# GhostDoc plugin setting file
+*.GhostDoc.xml
-Release/
-AppPackages/
-*.userprefs
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+
+# FAKE - F# Make
+.fake/
+
+# Tools
+tools/
+
+# Akavache
+artifacts/
+src/CommonAssemblyInfo.cs
+
+# NugetIntegrationTests
+tests/NuGetInstallationIntegrationTests/Android/t/**/*
+tests/NuGetInstallationIntegrationTests/XamarinFormsApp/XamarinFormsApp.Android/t/**/*
+
+# macOS
.DS_Store
+
+src/*.Tests/API/*.received.txt
+.idea/
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 9e4b03ccc..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "deps/pierce"]
- path = deps/pierce
- url = https://github.com/paulcbetts/pierce.git
diff --git a/.nuget/NuGet.exe b/.nuget/NuGet.exe
deleted file mode 100644
index c41a0d0de..000000000
Binary files a/.nuget/NuGet.exe and /dev/null differ
diff --git a/.vsts-ci.yml b/.vsts-ci.yml
new file mode 100644
index 000000000..a7a08dc4b
--- /dev/null
+++ b/.vsts-ci.yml
@@ -0,0 +1,71 @@
+trigger:
+- master
+- develop
+- rel/*
+
+queue: Hosted VS2017
+
+steps:
+- task: BatchScript@1
+ inputs:
+ filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
+ arguments: -no_logo
+ modifyEnvironment: true
+ displayName: Setup Environment Variables
+
+- task: DotNetCoreCLI@2
+ inputs:
+ command: custom
+ custom: tool
+ arguments: install --tool-path . nbgv
+ displayName: Install NBGV tool
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+
+- script: nbgv cloud
+ displayName: Set Version
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+
+- script: build.cmd
+ displayName: Build
+ env:
+ VSTS_ACCESS_TOKEN: $(System.AccessToken)
+ COVERALLS_TOKEN: $(COVERALLS_TOKEN)
+
+- task: CopyFiles@2
+ inputs:
+ Contents: 'artifacts/*.nupkg'
+ TargetFolder: '$(build.artifactstagingdirectory)\packages'
+ flattenFolders: true
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+
+- task: PowerShell@2
+ displayName: Authenticode Sign artifacts
+ inputs:
+ filePath: script/Sign-Packages.ps1
+ env:
+ SignClientUser: $(SignClientUser)
+ SignClientSecret: $(SignClientSecret)
+ ArtifactDirectory: $(Build.ArtifactStagingDirectory)\Packages
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false), not(eq(variables['SignClientSecret'], '')))
+
+- task: PublishBuildArtifacts@1
+ displayName: Publish Package Artifacts
+ inputs:
+ pathToPublish: '$(build.artifactstagingdirectory)\packages'
+ artifactType: container
+ artifactName: Packages
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+
+- task: CopyFiles@2
+ inputs:
+ Contents: '**\bin\**'
+ TargetFolder: '$(build.artifactstagingdirectory)\binaries'
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
+
+- task: PublishBuildArtifacts@1
+ displayName: Publish Binaries
+ inputs:
+ pathToPublish: '$(build.artifactstagingdirectory)\binaries'
+ artifactType: container
+ artifactName: Binaries
+ condition: and(succeeded(), eq(variables['system.pullrequest.isfork'], false))
\ No newline at end of file
diff --git a/Akavache.6.0.ReSharper b/Akavache.6.0.ReSharper
deleted file mode 100644
index f47bf156d..000000000
--- a/Akavache.6.0.ReSharper
+++ /dev/null
@@ -1,384 +0,0 @@
-
-
-
-
- SOLUTION
-
-
-
-
-
-
- False
- False
- False
- False
- False
- False
- False
- False
- False
- False
- NEXT_LINE
- NEXT_LINE
- False
- False
- False
- NEXT_LINE
- 1
- 1
- True
-
- - public
- - protected
- - internal
- - private
- - new
- - abstract
- - virtual
- - override
- - sealed
- - static
- - readonly
- - extern
- - unsafe
- - volatile
-
- False
- False
- False
- False
-
-
-
- $object$_On$event$
- $event$Handler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-]]>
-
-
-
-
-
-
-
-
-
-
-
-
- $object$_On$event$
- $event$Handler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $object$_On$event$
- $event$Handler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Akavache.6.1.ReSharper b/Akavache.6.1.ReSharper
deleted file mode 100644
index 76053da9d..000000000
--- a/Akavache.6.1.ReSharper
+++ /dev/null
@@ -1,383 +0,0 @@
-
-
-
- SOLUTION
-
-
-
-
-
-
- False
- False
- False
- False
- False
- False
- False
- False
- False
- False
- NEXT_LINE
- NEXT_LINE
- False
- False
- False
- NEXT_LINE
- 1
- 1
- True
-
- - public
- - protected
- - internal
- - private
- - new
- - abstract
- - virtual
- - override
- - sealed
- - static
- - readonly
- - extern
- - unsafe
- - volatile
-
- False
- False
- False
- False
-
-
-
- $object$_On$event$
- $event$Handler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-]]>
-
-
-
-
-
-
-
-
-
-
-
-
- $object$_On$event$
- $event$Handler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $object$_On$event$
- $event$Handler
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Akavache.Deprecated/Akavache.Deprecated.csproj b/Akavache.Deprecated/Akavache.Deprecated.csproj
deleted file mode 100644
index 47aa88403..000000000
--- a/Akavache.Deprecated/Akavache.Deprecated.csproj
+++ /dev/null
@@ -1,92 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}
- Library
- Properties
- Akavache.Deprecated
- Akavache.Deprecated
- en-US
- 512
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
- 10.0
- v4.5
- Profile259
-
-
- true
- full
- false
- bin\Debug\Portable-Net45+Win8+WP8+Wpa81\
- obj\Debug\Portable-Win81+Wpa81\
- TRACE;DEBUG
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\Portable-Net45+Win8+WP8+Wpa81\
- obj\Release\Portable-Win81+Wpa81\
- TRACE
- prompt
- 4
- bin\Release\Portable-Net45+Win8+WP8+Wpa81\Akavache.Deprecated.XML
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
-
-
- ..\packages\Splat.1.6.0\lib\Portable-net45+win+wpa81+wp80\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.PlatformServices.dll
-
-
-
-
-
-
-
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}
- Akavache_Portable
-
-
-
- 12.0
-
-
-
-
diff --git a/Akavache.Deprecated/Akavache.Deprecated.nuspec b/Akavache.Deprecated/Akavache.Deprecated.nuspec
deleted file mode 100644
index f3b36ac0a..000000000
--- a/Akavache.Deprecated/Akavache.Deprecated.nuspec
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- 4.1.2
- GitHub
- Paul Betts
- https://github.com/github/Akavache/blob/master/LICENSE
- https://github.com/github/Akavache
-
-
-
-
- akavache.deprecated
- Akavache.Deprecated
- false
- The deprecated, filesystem-based backend for Akavache
- The deprecated, filesystem-based backend for Akavache
- Copyright GitHub© 2012
-
-
-
-
-
diff --git a/Akavache.Deprecated/EncryptedBlobCache.cs b/Akavache.Deprecated/EncryptedBlobCache.cs
deleted file mode 100644
index a27a61528..000000000
--- a/Akavache.Deprecated/EncryptedBlobCache.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using System.Diagnostics;
-using System.IO;
-using System.Reactive.Concurrency;
-using System.Reactive.Linq;
-using System.Reactive.Subjects;
-using System.Reflection;
-using Splat;
-using Akavache;
-
-namespace Akavache.Deprecated
-{
- public class EncryptedBlobCache : PersistentBlobCache, ISecureBlobCache
- {
- private readonly IEncryptionProvider encryption;
-
- public EncryptedBlobCache(
- string cacheDirectory = null,
- IEncryptionProvider encryptionProvider = null,
- IFilesystemProvider filesystemProvider = null,
- IScheduler scheduler = null,
- Action> invalidatedCallback = null)
- : base(cacheDirectory, filesystemProvider, scheduler, invalidatedCallback)
- {
- this.encryption = encryptionProvider ?? Locator.Current.GetService();
-
- if (this.encryption == null)
- {
- throw new Exception("No IEncryptionProvider available. This should never happen, your DependencyResolver is broken");
- }
- }
-
- protected override IObservable BeforeWriteToDiskFilter(byte[] data, IScheduler scheduler)
- {
- if (data.Length == 0)
- {
- return Observable.Return(data);
- }
-
- return this.encryption.EncryptBlock(data);
- }
-
- protected override IObservable AfterReadFromDiskFilter(byte[] data, IScheduler scheduler)
- {
- if (data.Length == 0)
- {
- return Observable.Return(data);
- }
-
- return this.encryption.DecryptBlock(data);
- }
- }
-}
diff --git a/Akavache.Deprecated/PersistentBlobCache.cs b/Akavache.Deprecated/PersistentBlobCache.cs
deleted file mode 100644
index 5751a0a6a..000000000
--- a/Akavache.Deprecated/PersistentBlobCache.cs
+++ /dev/null
@@ -1,407 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Globalization;
-using System.IO;
-using System.Linq;
-using System.Reactive;
-using System.Reactive.Concurrency;
-using System.Reactive.Disposables;
-using System.Reactive.Linq;
-using System.Reactive.Subjects;
-using System.Reflection;
-using System.Text;
-using Newtonsoft.Json;
-using Splat;
-using System.Collections.Concurrent;
-using Akavache;
-using Akavache.Internal;
-
-namespace Akavache.Deprecated
-{
- ///
- /// This class represents an asynchronous key-value store backed by a
- /// directory. It stores the last 'n' key requests in memory.
- ///
- public class PersistentBlobCache : IBlobCache, IEnableLogger
- {
- readonly MemoizingMRUCache> memoizedRequests;
-
- protected readonly string CacheDirectory;
- internal ConcurrentDictionary CacheIndex = new ConcurrentDictionary();
- readonly Subject actionTaken = new Subject();
- bool disposed;
- readonly IFilesystemProvider filesystem;
-
- readonly IDisposable flushThreadSubscription;
-
- public IScheduler Scheduler { get; protected set; }
-
- readonly AsyncSubject shutdown = new AsyncSubject();
- public IObservable Shutdown { get { return shutdown; } }
-
- const string BlobCacheIndexKey = "__THISISTHEINDEX__FFS_DONT_NAME_A_FILE_THIS™";
-
- public PersistentBlobCache(
- string cacheDirectory = null,
- IFilesystemProvider filesystemProvider = null,
- IScheduler scheduler = null,
- Action> invalidateCallback = null)
- {
- BlobCache.EnsureInitialized();
-
- this.filesystem = filesystemProvider ?? Locator.Current.GetService();
-
- if (this.filesystem == null)
- {
- throw new Exception("No IFilesystemProvider available. This should never happen, your DependencyResolver is broken");
- }
-
- this.CacheDirectory = cacheDirectory ?? filesystem.GetDefaultRoamingCacheDirectory();
- this.Scheduler = scheduler ?? BlobCache.TaskpoolScheduler;
-
- // Here, we're not actually caching the requests directly (i.e. as
- // byte[]s), but as the "replayed result of the request", in the
- // AsyncSubject - this makes the code infinitely simpler because
- // we don't have to keep a separate list of "in-flight reads" vs
- // "already completed and cached reads"
- memoizedRequests = new MemoizingMRUCache>(
- (x, c) => FetchOrWriteBlobFromDisk(x, c, false), 20, invalidateCallback);
-
-
- var cacheIndex = FetchOrWriteBlobFromDisk(BlobCacheIndexKey, null, true)
- .Catch(Observable.Return(new byte[0]))
- .Select(x => Encoding.UTF8.GetString(x, 0, x.Length).Split('\n')
- .SelectMany(ParseCacheIndexEntry)
- .ToDictionary(y => y.Key, y => y.Value))
- .Select(x => new ConcurrentDictionary(x));
-
- cacheIndex.Subscribe(x => CacheIndex = x);
-
- flushThreadSubscription = Disposable.Empty;
-
- if (!ModeDetector.InUnitTestRunner())
- {
- flushThreadSubscription = actionTaken
- .Where(_ => CacheIndex != null)
- .Throttle(TimeSpan.FromSeconds(30), Scheduler)
- .SelectMany(_ => FlushCacheIndex(true))
- .Subscribe(_ => this.Log().Debug("Flushing cache"));
- }
-
- this.Log().Info("{0} entries in blob cache index", CacheIndex.Count);
- }
-
- public IObservable Insert(string key, byte[] data, DateTimeOffset? absoluteExpiration = null)
- {
- if (key == null || data == null)
- {
- return Observable.Throw(new ArgumentNullException());
- }
-
- // NB: Since FetchOrWriteBlobFromDisk is guaranteed to not block,
- // we never sit on this lock for any real length of time
- AsyncSubject err;
- lock (memoizedRequests)
- {
- if (disposed) return Observable.Throw(new ObjectDisposedException("PersistentBlobCache"));
-
- memoizedRequests.Invalidate(key);
- err = memoizedRequests.Get(key, data);
- }
-
- // If we fail trying to fetch/write the key on disk, we want to
- // try again instead of replaying the same failure
- err.LogErrors("Insert").Subscribe(
- x => CacheIndex[key] = new CacheIndexEntry(Scheduler.Now, absoluteExpiration),
- ex => Invalidate(key));
-
- return err.Select(_ => Unit.Default);
- }
-
- public IObservable Get(string key)
- {
- if (disposed) return Observable.Throw(new ObjectDisposedException("PersistentBlobCache"));
-
- if (IsKeyStale(key))
- {
- Invalidate(key);
- return ExceptionHelper.ObservableThrowKeyNotFoundException(key);
- }
-
- AsyncSubject ret;
- lock (memoizedRequests)
- {
- // There are three scenarios here, and we handle all of them
- // with aplomb and elegance:
- //
- // 1. The key is already in memory as a completed request - we
- // return the AsyncSubject which will replay the result
- //
- // 2. The key is currently being fetched from disk - in this
- // case, MemoizingMRUCache has an AsyncSubject for it (since
- // FetchOrWriteBlobFromDisk completes immediately), and the
- // client will get the result when the disk I/O completes
- //
- // 3. The key isn't in memory and isn't being fetched - in
- // this case, FetchOrWriteBlobFromDisk will be called which
- // will immediately return an AsyncSubject representing the
- // queued disk read.
- ret = memoizedRequests.Get(key);
- }
-
- // If we fail trying to fetch/write the key on disk, we want to
- // try again instead of replaying the same failure
- ret.LogErrors("Get")
- .Subscribe(x => {}, ex => Invalidate(key));
-
- return ret;
- }
-
- bool IsKeyStale(string key)
- {
- CacheIndexEntry value;
- return (CacheIndex.TryGetValue(key, out value) && value.ExpiresAt != null && value.ExpiresAt < Scheduler.Now);
- }
-
- public IObservable GetCreatedAt(string key)
- {
- CacheIndexEntry value;
- if (!CacheIndex.TryGetValue(key, out value))
- {
- return Observable.Return(null);
- }
-
- return Observable.Return(value.CreatedAt);
- }
-
- public IObservable> GetAllKeys()
- {
- if (disposed) throw new ObjectDisposedException("PersistentBlobCache");
- return Observable.Return(CacheIndex.ToList().Where(x => x.Value.ExpiresAt == null || x.Value.ExpiresAt >= BlobCache.TaskpoolScheduler.Now).Select(x => x.Key).ToList());
- }
-
- public IObservable Invalidate(string key)
- {
- lock (memoizedRequests)
- {
- if (disposed) return Observable.Throw(new ObjectDisposedException("PersistentBlobCache"));
- this.Log().Debug("Invalidating {0}", key);
- memoizedRequests.Invalidate(key);
- }
-
- CacheIndexEntry dontcare;
- CacheIndex.TryRemove(key, out dontcare);
-
- var path = GetPathForKey(key);
- var ret = Observable.Defer(() => filesystem.Delete(path))
- .Retry(2)
- .Do(_ => actionTaken.OnNext(Unit.Default));
-
- return ret.Multicast(new AsyncSubject()).PermaRef();
- }
-
- public IObservable InvalidateAll()
- {
- string[] keys;
- lock (memoizedRequests)
- {
- if (disposed) return Observable.Throw(new ObjectDisposedException("PersistentBlobCache"));
- keys = CacheIndex.Keys.ToArray();
- }
-
- var ret = keys.ToObservable()
- .Select(x => Observable.Defer(() => Invalidate(x)))
- .Merge(8)
- .Aggregate(Unit.Default, (acc, x) => acc)
- .Multicast(new AsyncSubject());
-
- ret.Connect();
- return ret;
- }
-
- public IObservable Vacuum()
- {
- return Observable.Throw(new NotImplementedException());
- }
-
- public void Dispose()
- {
- if (disposed) return;
- lock (memoizedRequests)
- {
- if (disposed) return;
- disposed = true;
-
- actionTaken.OnCompleted();
- flushThreadSubscription.Dispose();
-
- var waitOnAllInflight = memoizedRequests.CachedValues()
- .Select(x => x.Catch(Observable.Return(new byte[0])))
- .Merge(8)
- .Concat(Observable.Return(new byte[0]))
- .Aggregate(Unit.Default, (acc, x) => acc);
-
- waitOnAllInflight
- .SelectMany(FlushCacheIndex(true))
- .Multicast(shutdown)
- .PermaRef();
- }
- }
-
- ///
- /// This method is called immediately before writing any data to disk.
- /// Override this in encrypting data stores in order to encrypt the
- /// data.
- ///
- /// The byte data about to be written to disk.
- /// The scheduler to use if an operation has
- /// to be deferred. If the operation can be done immediately, use
- /// Observable.Return and ignore this parameter.
- /// A Future result representing the encrypted data
- protected virtual IObservable BeforeWriteToDiskFilter(byte[] data, IScheduler scheduler)
- {
- return Observable.Return(data);
- }
-
- ///
- /// This method is called immediately after reading any data to disk.
- /// Override this in encrypting data stores in order to decrypt the
- /// data.
- ///
- /// The byte data that has just been read from
- /// disk.
- /// The scheduler to use if an operation has
- /// to be deferred. If the operation can be done immediately, use
- /// Observable.Return and ignore this parameter.
- /// A Future result representing the decrypted data
- protected virtual IObservable AfterReadFromDiskFilter(byte[] data, IScheduler scheduler)
- {
- return Observable.Return(data);
- }
-
- AsyncSubject FetchOrWriteBlobFromDisk(string key, object byteData, bool synchronous)
- {
- // If this is secretly a write, dispatch to WriteBlobToDisk (we're
- // kind of abusing the 'context' variable from MemoizingMRUCache
- // here a bit)
- if (byteData != null)
- {
- return WriteBlobToDisk(key, (byte[]) byteData, synchronous);
- }
-
- var ret = new AsyncSubject();
- var ms = new MemoryStream();
-
- var scheduler = synchronous ? System.Reactive.Concurrency.Scheduler.Immediate : Scheduler;
- if (disposed)
- {
- Observable.Throw(new ObjectDisposedException("PersistentBlobCache"))
- .Multicast(ret)
- .PermaRef();
- return ret;
- }
-
- Func> readResult = () =>
- Observable.Defer(() =>
- filesystem.OpenFileForReadAsync(GetPathForKey(key), scheduler))
- .Retry(1)
- .SelectMany(x => x.CopyToAsync(ms, scheduler))
- .SelectMany(x => AfterReadFromDiskFilter(ms.ToArray(), scheduler))
- .Catch(ex => ExceptionHelper.ObservableThrowKeyNotFoundException(key, ex))
- .Do(_ =>
- {
- if (!synchronous && key != BlobCacheIndexKey)
- {
- actionTaken.OnNext(Unit.Default);
- }
- });
-
- readResult().Multicast(ret).PermaRef();
- return ret;
- }
-
- AsyncSubject WriteBlobToDisk(string key, byte[] byteData, bool synchronous)
- {
- var ret = new AsyncSubject();
- var scheduler = synchronous ? System.Reactive.Concurrency.Scheduler.Immediate : Scheduler;
-
- var path = GetPathForKey(key);
-
- // NB: The fact that our writing AsyncSubject waits until the
- // write actually completes means that an Insert immediately
- // followed by a Get will take longer to process - however,
- // this also means that failed writes will disappear from the
- // cache, which is A Good Thing.
-
- Func> writeResult = () => BeforeWriteToDiskFilter(byteData, scheduler)
- .Select(x => new MemoryStream(x))
- .Zip(Observable.Defer(() =>
- filesystem.OpenFileForWriteAsync(path, scheduler))
- .Retry(1),
- (from, to) => new {from, to})
- .SelectMany(x => x.from.CopyToAsync(x.to, scheduler))
- .Select(_ => byteData)
- .Do(_ =>
- {
- if (!synchronous && key != BlobCacheIndexKey) actionTaken.OnNext(Unit.Default);
- }, ex => LogHost.Default.WarnException("Failed to write out file: " + path, ex));
-
- writeResult().Multicast(ret).Connect();
- return ret;
- }
-
- public IObservable Flush()
- {
- return FlushCacheIndex(false);
- }
-
- IObservable FlushCacheIndex(bool synchronous)
- {
- var index = CacheIndex.Select(x => JsonConvert.SerializeObject(x));
-
- return WriteBlobToDisk(BlobCacheIndexKey, Encoding.UTF8.GetBytes(String.Join("\n", index)), synchronous)
- .Select(_ => Unit.Default)
- .Catch(ex =>
- {
- this.Log().WarnException("Couldn't flush cache index", ex);
- return Observable.Return(Unit.Default);
- });
- }
-
- IEnumerable> ParseCacheIndexEntry(string s)
- {
- if (String.IsNullOrWhiteSpace(s))
- {
- return Enumerable.Empty>();
- }
-
- try
- {
- return new[] {JsonConvert.DeserializeObject>(s)};
- }
- catch (Exception ex)
- {
- this.Log().Warn("Invalid cache index entry", ex);
- return Enumerable.Empty>();
- }
- }
-
- string GetPathForKey(string key)
- {
- return Path.Combine(CacheDirectory, Utility.GetMd5Hash(key));
- }
- }
-
- public class CacheIndexEntry
- {
- public DateTimeOffset CreatedAt { get; protected set; }
- public DateTimeOffset? ExpiresAt { get; protected set; }
-
- public CacheIndexEntry(DateTimeOffset createdAt, DateTimeOffset? expiresAt)
- {
- CreatedAt = createdAt;
- ExpiresAt = expiresAt;
- }
- }
-}
diff --git a/Akavache.Deprecated/Registrations.cs b/Akavache.Deprecated/Registrations.cs
deleted file mode 100644
index bdfd3a212..000000000
--- a/Akavache.Deprecated/Registrations.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reactive.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Splat;
-
-#if UIKIT
-using MonoTouch.Foundation;
-#endif
-
-#if APPKIT
-using MonoMac.Foundation;
-#endif
-
-#if ANDROID
-using Android.App;
-#endif
-
-namespace Akavache.Deprecated
-{
- public class Registrations : IWantsToRegisterStuff
- {
- public void Register(IMutableDependencyResolver resolver)
- {
- if (ModeDetector.InUnitTestRunner()) return;
-
- // NB: We want the most recently registered fs, since there really
- // only should be one
- var fs = Locator.Current.GetService();
- if (fs == null)
- {
- throw new Exception("Failed to initialize Akavache properly. Do you have a reference to Akavache.dll?");
- }
-
- var localCache = new Lazy(() => {
- fs.CreateRecursive(fs.GetDefaultLocalMachineCacheDirectory()).Wait();
- return new PersistentBlobCache(fs.GetDefaultLocalMachineCacheDirectory(), fs, BlobCache.TaskpoolScheduler);
- });
- resolver.Register(() => localCache.Value, typeof(IBlobCache), "LocalMachine");
-
- var userAccount = new Lazy(() =>
- {
- fs.CreateRecursive(fs.GetDefaultRoamingCacheDirectory()).Wait();
- return new PersistentBlobCache(fs.GetDefaultRoamingCacheDirectory(), fs, BlobCache.TaskpoolScheduler);
- });
- resolver.Register(() => userAccount.Value, typeof(IBlobCache), "UserAccount");
-
- var secure = new Lazy(() =>
- {
- fs.CreateRecursive(fs.GetDefaultSecretCacheDirectory()).Wait();
- return new EncryptedBlobCache(fs.GetDefaultRoamingCacheDirectory(), resolver.GetService(), fs, BlobCache.TaskpoolScheduler);
- });
- resolver.Register(() => secure.Value, typeof(ISecureBlobCache), null);
- }
- }
-}
diff --git a/Akavache.Deprecated/packages.Akavache.Deprecated.config b/Akavache.Deprecated/packages.Akavache.Deprecated.config
deleted file mode 100644
index bd82c4ecb..000000000
--- a/Akavache.Deprecated/packages.Akavache.Deprecated.config
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/Akavache.Mobile.nuspec b/Akavache.Mobile/Akavache.Mobile.nuspec
deleted file mode 100644
index c766cf062..000000000
--- a/Akavache.Mobile/Akavache.Mobile.nuspec
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- 4.1.2
- GitHub
- Paul Betts
- https://github.com/github/Akavache
-
-
-
-
- https://raw.github.com/github/Akavache/master/LICENSE
- false
- akavache.mobile
- Akavache.Mobile
- An implementation of ISuspensionDriver that uses Akavache to save app state on tombstoning.
- An implementation of ISuspensionDriver that uses Akavache to save app state on tombstoning.
- Copyright GitHub© 2012
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/Akavache.Mobile_Monodroid.csproj b/Akavache.Mobile/Akavache.Mobile_Monodroid.csproj
deleted file mode 100644
index 6c39fdc86..000000000
--- a/Akavache.Mobile/Akavache.Mobile_Monodroid.csproj
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}
- {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
- Akavache.Mobile
- Akavache.Mobile
- 512
-
-
-
-
-
-
-
-
- 1
- v4.0.3
-
-
- True
- full
- False
- bin\Debug\Monoandroid
- obj\Debug\Monoandroid
- DEBUG;MONO; XAMARIN_MOBILE; ANDROID
- prompt
- 4
- False
- True
- False
- False
- False
- False
- True
- False
- False
- False
- True
- False
- False
- False
-
-
-
-
-
-
-
-
-
-
-
-
- False
- Full
- %28none%29
- ExtendedCorrectnessRules.ruleset
- false
- False
- None
-
-
- true
- pdbonly
- True
- bin\Release\Monoandroid
- obj\Release\Monoandroid
- MONO; XAMARIN_MOBILE;ANDROID
- prompt
- 4
- False
- False
- True
- False
- True
- False
- False
- False
- False
- False
- True
- True
- False
- False
-
-
-
-
-
-
-
-
-
-
-
-
- True
- Full
- %28none%29
- False
- True
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net40+sl4+wp7+win8\Newtonsoft.Json.dll
-
-
- ..\packages\Splat.1.6.0\lib\monoandroid\Splat.dll
-
-
- ..\packages\reactiveui-core.6.0.1\lib\Monoandroid\ReactiveUI.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
-
-
-
-
-
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
- {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}
- Akavache_Monodroid
-
-
-
-
-
-
diff --git a/Akavache.Mobile/Akavache.Mobile_Monotouch.csproj b/Akavache.Mobile/Akavache.Mobile_Monotouch.csproj
deleted file mode 100644
index 86c2cbcb8..000000000
--- a/Akavache.Mobile/Akavache.Mobile_Monotouch.csproj
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}
- {6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Akavache
- Resources
- Akavache.Mobile
- ..\
- false
-
-
- True
- full
- False
- bin\Debug\Monotouch
- obj\Debug\Monotouch
- DEBUG; MONO; UIKIT
- prompt
- 4
- False
-
-
- true
- pdbonly
- True
- bin\Release\Monotouch
- obj\Release\Monotouch
- prompt
- 4
- False
- MONO; UIKIT
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net40+sl4+wp7+win8\Newtonsoft.Json.dll
-
-
- ..\packages\reactiveui-core.6.0.1\lib\Monotouch\ReactiveUI.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Splat.1.6.0\lib\monotouch\Splat.dll
-
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
- {9091337C-9E94-4DBD-801E-05E1FDA78FFC}
- Akavache_Monotouch
-
-
-
-
-
-
diff --git a/Akavache.Mobile/Akavache.Mobile_WP8.csproj b/Akavache.Mobile/Akavache.Mobile_WP8.csproj
deleted file mode 100644
index f897820ab..000000000
--- a/Akavache.Mobile/Akavache.Mobile_WP8.csproj
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 10.0.20506
- 2.0
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}
- {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
- Library
- Properties
- Akavache.Mobile
- Akavache.Mobile
- WindowsPhone
- v8.0
- $(TargetFrameworkVersion)
- false
- true
- 11.0
- true
- ..\
- true
-
-
- true
- full
- false
- Bin\Debug\WP8\
- obj\Debug\WP8\
- DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
-
-
-
-
- true
- pdbonly
- true
- Bin\Release\WP8\
- obj\Release\WP8\
- TRACE;SILVERLIGHT;WINDOWS_PHONE
- true
- true
- prompt
- 4
- Bin\Release\WP8\Akavache.Mobile.XML
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}
- Akavache_WP8
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
- True
-
-
- False
- ..\packages\reactiveui-core.6.0.1\lib\WP8\ReactiveUI.dll
-
-
- ..\packages\Splat.1.6.0\lib\wp8\Splat.dll
- True
-
-
- False
- ..\packages\Rx-Core.2.2.5\lib\windowsphone8\System.Reactive.Core.dll
-
-
- False
- ..\packages\Rx-Interfaces.2.2.5\lib\windowsphone8\System.Reactive.Interfaces.dll
-
-
- False
- ..\packages\Rx-Linq.2.2.5\lib\windowsphone8\System.Reactive.Linq.dll
-
-
- False
- ..\packages\Rx-PlatformServices.2.2.5\lib\windowsphone8\System.Reactive.PlatformServices.dll
-
-
- False
- ..\packages\Rx-Xaml.2.2.5\lib\windowsphone8\System.Reactive.Windows.Threading.dll
-
-
- False
- ..\packages\Rx-WinRT.2.2.5\lib\windowsphone8\System.Reactive.WindowsRuntime.dll
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/Akavache.Mobile_WinRT.csproj b/Akavache.Mobile/Akavache.Mobile_WinRT.csproj
deleted file mode 100644
index 76c0bb31e..000000000
--- a/Akavache.Mobile/Akavache.Mobile_WinRT.csproj
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}
- Library
- Properties
- Akavache.Mobile
- Akavache.Mobile
- en-US
- 512
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
- 12.0
- v4.6
- Profile32
-
-
- true
- full
- false
- bin\Debug\Portable-Win81+Wpa81\
- obj\Debug\Portable-Win81+Wpa81\
- TRACE;DEBUG;NETFX_CORE; WINRT
- prompt
- 4
-
-
-
-
- true
- pdbonly
- true
- bin\Release\Portable-Win81+Wpa81\
- obj\Release\Portable-Win81+Wpa81\
- TRACE;NETFX_CORE; WINRT
- prompt
- 4
- bin\Release\Portable-Win81+Wpa81\Akavache.Mobile.XML
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
- {57655198-7a38-48a6-bf95-be57b2c3d32d}
- Akavache_WinRT
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
-
-
- ..\packages\reactiveui-core.6.0.1\lib\Portable-Win81+WPA81\ReactiveUI.dll
-
-
- ..\packages\Splat.1.6.0\lib\Portable-Win81+Wpa81\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-win81+wpa81\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-win81+wpa81\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-win81+wpa81\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-win81+wpa81\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Rx-Xaml.2.2.5\lib\portable-win81+wpa81\System.Reactive.Windows.Threading.dll
-
-
- ..\packages\Rx-WinRT.2.2.5\lib\portable-win81+wpa81\System.Reactive.WindowsRuntime.dll
-
-
-
-
-
-
- 12.0
-
-
-
-
diff --git a/Akavache.Mobile/Akavache.Mobile_WinRT80.csproj b/Akavache.Mobile/Akavache.Mobile_WinRT80.csproj
deleted file mode 100644
index 8448f6b7d..000000000
--- a/Akavache.Mobile/Akavache.Mobile_WinRT80.csproj
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}
- Library
- Properties
- Akavache.Mobile
- Akavache.Mobile
- en-US
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
-
-
- true
- full
- false
- bin\Debug\Win8\
- obj\Debug\WinRT45\
- TRACE;DEBUG;NETFX_CORE; WINRT
- prompt
- 4
-
-
-
-
- true
- pdbonly
- true
- bin\Release\Win8\
- obj\Release\WinRT45\
- TRACE;NETFX_CORE; WINRT
- prompt
- 4
- bin\Release\Win8\Akavache.Mobile.XML
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
- {74ccfbb6-7a56-461f-8db6-93594bb4112e}
- Akavache_WinRT80
-
-
-
-
- False
- ..\packages\Newtonsoft.Json.6.0.3\lib\netcore45\Newtonsoft.Json.dll
-
-
- False
- ..\packages\reactiveui-core.6.0.1\lib\Win8\ReactiveUI.dll
-
-
- False
- ..\packages\Splat.1.6.0\lib\NetCore45\Splat.dll
-
-
- False
- ..\packages\Rx-Core.2.2.5\lib\windows8\System.Reactive.Core.dll
-
-
- False
- ..\packages\Rx-Interfaces.2.2.5\lib\windows8\System.Reactive.Interfaces.dll
-
-
- False
- ..\packages\Rx-Linq.2.2.5\lib\windows8\System.Reactive.Linq.dll
-
-
- False
- ..\packages\Rx-PlatformServices.2.2.5\lib\windows8\System.Reactive.PlatformServices.dll
-
-
- False
- ..\packages\Rx-Xaml.2.2.5\lib\windows8\System.Reactive.Windows.Threading.dll
-
-
- False
- ..\packages\Rx-WinRT.2.2.5\lib\windows8\System.Reactive.WindowsRuntime.dll
-
-
-
-
-
-
- 11.0
-
-
-
-
diff --git a/Akavache.Mobile/packages.Akavache.Mobile_Monodroid.config b/Akavache.Mobile/packages.Akavache.Mobile_Monodroid.config
deleted file mode 100644
index 4e9283d60..000000000
--- a/Akavache.Mobile/packages.Akavache.Mobile_Monodroid.config
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/packages.Akavache.Mobile_Monotouch.config b/Akavache.Mobile/packages.Akavache.Mobile_Monotouch.config
deleted file mode 100644
index 6ee59628d..000000000
--- a/Akavache.Mobile/packages.Akavache.Mobile_Monotouch.config
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/packages.Akavache.Mobile_WP8.config b/Akavache.Mobile/packages.Akavache.Mobile_WP8.config
deleted file mode 100644
index da826cac4..000000000
--- a/Akavache.Mobile/packages.Akavache.Mobile_WP8.config
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/packages.Akavache.Mobile_WinRT.config b/Akavache.Mobile/packages.Akavache.Mobile_WinRT.config
deleted file mode 100644
index 4d8cc533d..000000000
--- a/Akavache.Mobile/packages.Akavache.Mobile_WinRT.config
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Mobile/packages.Akavache.Mobile_WinRT80.config b/Akavache.Mobile/packages.Akavache.Mobile_WinRT80.config
deleted file mode 100644
index 22836a442..000000000
--- a/Akavache.Mobile/packages.Akavache.Mobile_WinRT80.config
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Sqlite3/Akavache.Sqlite3.csproj b/Akavache.Sqlite3/Akavache.Sqlite3.csproj
deleted file mode 100644
index 815fbd315..000000000
--- a/Akavache.Sqlite3/Akavache.Sqlite3.csproj
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}
- Library
- Properties
- Akavache.Sqlite3
- Akavache.Sqlite3
- en-US
- 512
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
- 10.0
- v4.5
- Profile259
-
-
-
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
-
-
- ..\packages\SQLitePCL.raw_basic.0.7.0\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SQLitePCL.raw.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Splat.1.6.0\lib\Portable-net45+win+wpa81+wp80\Splat.dll
-
-
-
-
-
-
-
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}
- Akavache_Portable
-
-
-
- 12.0
-
-
- true
- bin\Debug\Portable-Net45+Win8+WP8+Wpa81\
- obj\Debug\Portable-Net45+WinRT45+WP8\
- TRACE;DEBUG;USE_SQLITEPCL_RAW;USE_NEW_REFLECTION_API
- full
- prompt
- MinimumRecommendedRules.ruleset
- 4
- false
-
-
- true
- bin\Release\Portable-Net45+Win8+WP8+Wpa81\
- obj\Release\Portable-Net45+WinRT45+WP8\
- TRACE;NETFX_CORE; USE_SQLITEPCL_RAW; USE_NEW_REFLECTION_API
- bin\Release\Portable-Net45+Win8+WP8+Wpa81\Akavache.Sqlite3.xml
- true
- pdbonly
- prompt
- MinimumRecommendedRules.ruleset
- 4
-
-
-
-
\ No newline at end of file
diff --git a/Akavache.Sqlite3/Akavache.Sqlite3.nuspec b/Akavache.Sqlite3/Akavache.Sqlite3.nuspec
deleted file mode 100644
index ac79fab70..000000000
--- a/Akavache.Sqlite3/Akavache.Sqlite3.nuspec
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-
- 4.1.2
- GitHub
- Paul Betts
- https://github.com/github/Akavache
-
-
-
-
- https://raw.github.com/github/Akavache/master/LICENSE
- false
- akavache.sqlite3
- Akavache.SQLite3
- A backend for Akavache based on SQLite3, particularly recommended on mobile platforms.
- A backend for Akavache based on SQLite3, particularly recommended on mobile platforms.
- Copyright GitHub© 2012
-
-
-
-
-
-
diff --git a/Akavache.Sqlite3/BlockingCollection.cs b/Akavache.Sqlite3/BlockingCollection.cs
deleted file mode 100644
index af8b8579b..000000000
--- a/Akavache.Sqlite3/BlockingCollection.cs
+++ /dev/null
@@ -1,938 +0,0 @@
-//
-// BlockingCollection.cs
-//
-// Copyright (c) 2008 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Threading;
-using System.Collections;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.Runtime.InteropServices;
-
-namespace Akavache.Sqlite3.Internal
-{
- public interface IProducerConsumerCollection : IEnumerable, ICollection, IEnumerable
- {
- bool TryAdd (T item);
- bool TryTake (out T item);
- T[] ToArray ();
- void CopyTo (T[] array, int index);
- }
-
- [ComVisible (false)]
- [DebuggerDisplay ("Count={Count}")]
- public class BlockingCollection : IEnumerable, ICollection, IEnumerable, IDisposable
- {
- const int spinCount = 5;
-
- readonly IProducerConsumerCollection underlyingColl;
-
- /* These events are used solely for the purpose of having an optimized sleep cycle when
- * the BlockingCollection have to wait on an external event (Add or Remove for instance)
- */
- ManualResetEventSlim mreAdd = new ManualResetEventSlim (true);
- ManualResetEventSlim mreRemove = new ManualResetEventSlim (true);
- AtomicBoolean isComplete;
-
- readonly int upperBound;
-
- int completeId;
-
- /* The whole idea of the collection is to use these two long values in a transactional
- * way to track and manage the actual data inside the underlying lock-free collection
- * instead of directly working with it or using external locking.
- *
- * They are manipulated with CAS and are guaranteed to increase over time and use
- * of the instance thus preventing ABA problems.
- */
- int addId = int.MinValue;
- int removeId = int.MinValue;
-
-
- /* For time based operations, we share this instance of Stopwatch and base calculation
- on a time offset at each of these method call */
- static Stopwatch watch = Stopwatch.StartNew ();
-
- #region ctors
- public BlockingCollection ()
- : this (new ConcurrentQueue (), -1)
- {
- }
-
- public BlockingCollection (int boundedCapacity)
- : this (new ConcurrentQueue (), boundedCapacity)
- {
- }
-
- public BlockingCollection (IProducerConsumerCollection collection)
- : this (collection, -1)
- {
- }
-
- public BlockingCollection (IProducerConsumerCollection collection, int boundedCapacity)
- {
- this.underlyingColl = collection;
- this.upperBound = boundedCapacity;
- this.isComplete = new AtomicBoolean ();
- }
- #endregion
-
- #region Add & Remove (+ Try)
- public void Add (T item)
- {
- Add (item, CancellationToken.None);
- }
-
- public void Add (T item, CancellationToken cancellationToken)
- {
- TryAdd (item, -1, cancellationToken);
- }
-
- public bool TryAdd (T item)
- {
- return TryAdd (item, 0, CancellationToken.None);
- }
-
- public bool TryAdd (T item, int millisecondsTimeout, CancellationToken cancellationToken)
- {
- if (millisecondsTimeout < -1)
- throw new ArgumentOutOfRangeException ("millisecondsTimeout");
-
- long start = millisecondsTimeout == -1 ? 0 : watch.ElapsedMilliseconds;
- SpinWait sw = new SpinWait ();
-
- do {
- cancellationToken.ThrowIfCancellationRequested ();
-
- int cachedAddId = addId;
- int cachedRemoveId = removeId;
- int itemsIn = cachedAddId - cachedRemoveId;
-
- // If needed, we check and wait that the collection isn't full
- if (upperBound != -1 && itemsIn > upperBound) {
- if (millisecondsTimeout == 0)
- return false;
-
- if (sw.Count <= spinCount) {
- sw.SpinOnce ();
- } else {
- mreRemove.Reset ();
- if (cachedRemoveId != removeId || cachedAddId != addId) {
- mreRemove.Set ();
- continue;
- }
-
- mreRemove.Wait (ComputeTimeout (millisecondsTimeout, start), cancellationToken);
- }
-
- continue;
- }
-
- // Check our transaction id against completed stored one
- if (isComplete.Value && cachedAddId >= completeId)
- ThrowCompleteException ();
-
- // Validate the steps we have been doing until now
- if (Interlocked.CompareExchange (ref addId, cachedAddId + 1, cachedAddId) != cachedAddId)
- continue;
-
- // We have a slot reserved in the underlying collection, try to take it
- if (!underlyingColl.TryAdd (item))
- throw new InvalidOperationException ("The underlying collection didn't accept the item.");
-
- // Wake up process that may have been sleeping
- mreAdd.Set ();
-
- return true;
- } while (millisecondsTimeout == -1 || (watch.ElapsedMilliseconds - start) < millisecondsTimeout);
-
- return false;
- }
-
- public bool TryAdd (T item, TimeSpan timeout)
- {
- return TryAdd (item, (int)timeout.TotalMilliseconds);
- }
-
- public bool TryAdd (T item, int millisecondsTimeout)
- {
- return TryAdd (item, millisecondsTimeout, CancellationToken.None);
- }
-
- public T Take ()
- {
- return Take (CancellationToken.None);
- }
-
- public T Take (CancellationToken cancellationToken)
- {
- T item;
- TryTake (out item, -1, cancellationToken, true);
-
- return item;
- }
-
- public bool TryTake (out T item)
- {
- return TryTake (out item, 0, CancellationToken.None);
- }
-
- public bool TryTake (out T item, int millisecondsTimeout, CancellationToken cancellationToken)
- {
- return TryTake (out item, millisecondsTimeout, cancellationToken, false);
- }
-
- bool TryTake (out T item, int milliseconds, CancellationToken cancellationToken, bool throwComplete)
- {
- if (milliseconds < -1)
- throw new ArgumentOutOfRangeException ("milliseconds");
-
- item = default (T);
- SpinWait sw = new SpinWait ();
- long start = milliseconds == -1 ? 0 : watch.ElapsedMilliseconds;
-
- do {
- cancellationToken.ThrowIfCancellationRequested ();
-
- int cachedRemoveId = removeId;
- int cachedAddId = addId;
-
- // Empty case
- if (cachedRemoveId == cachedAddId) {
- if (milliseconds == 0)
- return false;
-
- if (IsCompleted) {
- if (throwComplete)
- ThrowCompleteException ();
- else
- return false;
- }
-
- if (sw.Count <= spinCount) {
- sw.SpinOnce ();
- } else {
- mreAdd.Reset ();
- if (cachedRemoveId != removeId || cachedAddId != addId) {
- mreAdd.Set ();
- continue;
- }
-
- mreAdd.Wait (ComputeTimeout (milliseconds, start), cancellationToken);
- }
-
- continue;
- }
-
- if (Interlocked.CompareExchange (ref removeId, cachedRemoveId + 1, cachedRemoveId) != cachedRemoveId)
- continue;
-
- while (!underlyingColl.TryTake (out item));
-
- mreRemove.Set ();
-
- return true;
-
- } while (milliseconds == -1 || (watch.ElapsedMilliseconds - start) < milliseconds);
-
- return false;
- }
-
- public bool TryTake (out T item, TimeSpan timeout)
- {
- return TryTake (out item, (int)timeout.TotalMilliseconds);
- }
-
- public bool TryTake (out T item, int millisecondsTimeout)
- {
- item = default (T);
-
- return TryTake (out item, millisecondsTimeout, CancellationToken.None, false);
- }
-
- static int ComputeTimeout (int millisecondsTimeout, long start)
- {
- return millisecondsTimeout == -1 ? 500 : (int)Math.Max (watch.ElapsedMilliseconds - start - millisecondsTimeout, 1);
- }
- #endregion
-
- #region static methods
- static void CheckArray (BlockingCollection[] collections)
- {
- if (collections == null)
- throw new ArgumentNullException ("collections");
- if (collections.Length == 0 || IsThereANullElement (collections))
- throw new ArgumentException ("The collections argument is a 0-length array or contains a null element.", "collections");
- }
-
- static bool IsThereANullElement (BlockingCollection[] collections)
- {
- foreach (BlockingCollection e in collections)
- if (e == null)
- return true;
- return false;
- }
-
- public static int AddToAny (BlockingCollection[] collections, T item)
- {
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- try {
- coll.Add (item);
- return index;
- } catch {}
- index++;
- }
- return -1;
- }
-
- public static int AddToAny (BlockingCollection[] collections, T item, CancellationToken cancellationToken)
- {
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- try {
- coll.Add (item, cancellationToken);
- return index;
- } catch {}
- index++;
- }
- return -1;
- }
-
- public static int TryAddToAny (BlockingCollection[] collections, T item)
- {
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryAdd (item))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TryAddToAny (BlockingCollection[] collections, T item, TimeSpan timeout)
- {
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryAdd (item, timeout))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TryAddToAny (BlockingCollection[] collections, T item, int millisecondsTimeout)
- {
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryAdd (item, millisecondsTimeout))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TryAddToAny (BlockingCollection[] collections, T item, int millisecondsTimeout,
- CancellationToken cancellationToken)
- {
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryAdd (item, millisecondsTimeout, cancellationToken))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TakeFromAny (BlockingCollection[] collections, out T item)
- {
- item = default (T);
- CheckArray (collections);
- WaitHandle[] wait_table = null;
- while (true) {
- for (int i = 0; i < collections.Length; ++i) {
- if (collections [i].TryTake (out item))
- return i;
- }
- if (wait_table == null) {
- wait_table = new WaitHandle [collections.Length];
- for (int i = 0; i < collections.Length; ++i)
- wait_table [i] = collections [i].mreRemove.WaitHandle;
- }
- WaitHandle.WaitAny (wait_table);
- }
- }
-
- public static int TakeFromAny (BlockingCollection[] collections, out T item, CancellationToken cancellationToken)
- {
- item = default (T);
- CheckArray (collections);
- WaitHandle[] wait_table = null;
- while (true) {
- for (int i = 0; i < collections.Length; ++i) {
- if (collections [i].TryTake (out item))
- return i;
- }
- cancellationToken.ThrowIfCancellationRequested ();
- if (wait_table == null) {
- wait_table = new WaitHandle [collections.Length + 1];
- for (int i = 0; i < collections.Length; ++i)
- wait_table [i] = collections [i].mreRemove.WaitHandle;
- wait_table [collections.Length] = cancellationToken.WaitHandle;
- }
- WaitHandle.WaitAny (wait_table);
- cancellationToken.ThrowIfCancellationRequested ();
- }
- }
-
- public static int TryTakeFromAny (BlockingCollection[] collections, out T item)
- {
- item = default (T);
-
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryTake (out item))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TryTakeFromAny (BlockingCollection[] collections, out T item, TimeSpan timeout)
- {
- item = default (T);
-
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryTake (out item, timeout))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TryTakeFromAny (BlockingCollection[] collections, out T item, int millisecondsTimeout)
- {
- item = default (T);
-
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryTake (out item, millisecondsTimeout))
- return index;
- index++;
- }
- return -1;
- }
-
- public static int TryTakeFromAny (BlockingCollection[] collections, out T item, int millisecondsTimeout,
- CancellationToken cancellationToken)
- {
- item = default (T);
-
- CheckArray (collections);
- int index = 0;
- foreach (var coll in collections) {
- if (coll.TryTake (out item, millisecondsTimeout, cancellationToken))
- return index;
- index++;
- }
- return -1;
- }
- #endregion
-
- public void CompleteAdding ()
- {
- // No further add beside that point
- completeId = addId;
- isComplete.Value = true;
- // Wakeup some operation in case this has an impact
- mreAdd.Set ();
- mreRemove.Set ();
- }
-
- void ThrowCompleteException ()
- {
- throw new InvalidOperationException ("The BlockingCollection has"
- + " been marked as complete with regards to additions.");
- }
-
- void ICollection.CopyTo (Array array, int index)
- {
- underlyingColl.CopyTo (array, index);
- }
-
- public void CopyTo (T[] array, int index)
- {
- underlyingColl.CopyTo (array, index);
- }
-
- public IEnumerable GetConsumingEnumerable ()
- {
- return GetConsumingEnumerable (CancellationToken.None);
- }
-
- public IEnumerable GetConsumingEnumerable (CancellationToken cancellationToken)
- {
- while (true) {
- T item = default (T);
-
- try {
- item = Take (cancellationToken);
- } catch {
- // Then the exception is perfectly normal
- if (IsCompleted)
- break;
- // otherwise rethrow
- throw;
- }
-
- yield return item;
- }
- }
-
- IEnumerator IEnumerable.GetEnumerator ()
- {
- return ((IEnumerable)underlyingColl).GetEnumerator ();
- }
-
- IEnumerator IEnumerable.GetEnumerator ()
- {
- return ((IEnumerable)underlyingColl).GetEnumerator ();
- }
-
- public void Dispose ()
- {
-
- }
-
- protected virtual void Dispose (bool disposing)
- {
-
- }
-
- public T[] ToArray ()
- {
- return underlyingColl.ToArray ();
- }
-
- public int BoundedCapacity {
- get {
- return upperBound;
- }
- }
-
- public int Count {
- get {
- return underlyingColl.Count;
- }
- }
-
- public bool IsAddingCompleted {
- get {
- return isComplete.Value;
- }
- }
-
- public bool IsCompleted {
- get {
- return isComplete.Value && addId == removeId;
- }
- }
-
- object ICollection.SyncRoot {
- get {
- return underlyingColl.SyncRoot;
- }
- }
-
- bool ICollection.IsSynchronized {
- get {
- return underlyingColl.IsSynchronized;
- }
- }
- }
-
- struct AtomicBooleanValue
- {
- int flag;
- const int UnSet = 0;
- const int Set = 1;
-
- public bool CompareAndExchange (bool expected, bool newVal)
- {
- int newTemp = newVal ? Set : UnSet;
- int expectedTemp = expected ? Set : UnSet;
-
- return Interlocked.CompareExchange (ref flag, newTemp, expectedTemp) == expectedTemp;
- }
-
- public static AtomicBooleanValue FromValue (bool value)
- {
- AtomicBooleanValue temp = new AtomicBooleanValue ();
- temp.Value = value;
-
- return temp;
- }
-
- public bool TrySet ()
- {
- return !Exchange (true);
- }
-
- public bool TryRelaxedSet ()
- {
- return flag == UnSet && !Exchange (true);
- }
-
- public bool Exchange (bool newVal)
- {
- int newTemp = newVal ? Set : UnSet;
- return Interlocked.Exchange (ref flag, newTemp) == Set;
- }
-
- public bool Value {
- get {
- return flag == Set;
- }
- set {
- Exchange (value);
- }
- }
-
- public bool Equals (AtomicBooleanValue rhs)
- {
- return this.flag == rhs.flag;
- }
-
- public override bool Equals (object rhs)
- {
- return rhs is AtomicBooleanValue ? Equals ((AtomicBooleanValue)rhs) : false;
- }
-
- public override int GetHashCode ()
- {
- return flag.GetHashCode ();
- }
-
- public static explicit operator bool (AtomicBooleanValue rhs)
- {
- return rhs.Value;
- }
-
- public static implicit operator AtomicBooleanValue (bool rhs)
- {
- return AtomicBooleanValue.FromValue (rhs);
- }
- }
-
- class AtomicBoolean
- {
- int flag;
- const int UnSet = 0;
- const int Set = 1;
-
- public bool CompareAndExchange (bool expected, bool newVal)
- {
- int newTemp = newVal ? Set : UnSet;
- int expectedTemp = expected ? Set : UnSet;
-
- return Interlocked.CompareExchange (ref flag, newTemp, expectedTemp) == expectedTemp;
- }
-
- public static AtomicBoolean FromValue (bool value)
- {
- AtomicBoolean temp = new AtomicBoolean ();
- temp.Value = value;
-
- return temp;
- }
-
- public bool TrySet ()
- {
- return !Exchange (true);
- }
-
- public bool TryRelaxedSet ()
- {
- return flag == UnSet && !Exchange (true);
- }
-
- public bool Exchange (bool newVal)
- {
- int newTemp = newVal ? Set : UnSet;
- return Interlocked.Exchange (ref flag, newTemp) == Set;
- }
-
- public bool Value {
- get {
- return flag == Set;
- }
- set {
- Exchange (value);
- }
- }
-
- public bool Equals (AtomicBoolean rhs)
- {
- return this.flag == rhs.flag;
- }
-
- public override bool Equals (object rhs)
- {
- return rhs is AtomicBoolean ? Equals ((AtomicBoolean)rhs) : false;
- }
-
- public override int GetHashCode ()
- {
- return flag.GetHashCode ();
- }
-
- public static explicit operator bool (AtomicBoolean rhs)
- {
- return rhs.Value;
- }
-
- public static implicit operator AtomicBoolean (bool rhs)
- {
- return AtomicBoolean.FromValue (rhs);
- }
- }
-
- [System.Diagnostics.DebuggerDisplay ("Count={Count}")]
- public class ConcurrentQueue : IProducerConsumerCollection, IEnumerable, ICollection,
- IEnumerable
- {
- class Node
- {
- public T Value;
- public Node Next;
- }
-
- Node head = new Node ();
- Node tail;
- int count;
-
- public ConcurrentQueue ()
- {
- tail = head;
- }
-
- public ConcurrentQueue (IEnumerable collection): this()
- {
- foreach (T item in collection)
- Enqueue (item);
- }
-
- public void Enqueue (T item)
- {
- Node node = new Node ();
- node.Value = item;
-
- Node oldTail = null;
- Node oldNext = null;
-
- bool update = false;
- while (!update) {
- oldTail = tail;
- oldNext = oldTail.Next;
-
- // Did tail was already updated ?
- if (tail == oldTail) {
- if (oldNext == null) {
- // The place is for us
- update = Interlocked.CompareExchange (ref tail.Next, node, null) == null;
- } else {
- // another Thread already used the place so give him a hand by putting tail where it should be
- Interlocked.CompareExchange (ref tail, oldNext, oldTail);
- }
- }
- }
- // At this point we added correctly our node, now we have to update tail. If it fails then it will be done by another thread
- Interlocked.CompareExchange (ref tail, node, oldTail);
- Interlocked.Increment (ref count);
- }
-
- bool IProducerConsumerCollection.TryAdd (T item)
- {
- Enqueue (item);
- return true;
- }
-
- public bool TryDequeue (out T result)
- {
- result = default (T);
- Node oldNext = null;
- bool advanced = false;
-
- while (!advanced) {
- Node oldHead = head;
- Node oldTail = tail;
- oldNext = oldHead.Next;
-
- if (oldHead == head) {
- // Empty case ?
- if (oldHead == oldTail) {
- // This should be false then
- if (oldNext != null) {
- // If not then the linked list is mal formed, update tail
- Interlocked.CompareExchange (ref tail, oldNext, oldTail);
- continue;
- }
- result = default (T);
- return false;
- } else {
- result = oldNext.Value;
- advanced = Interlocked.CompareExchange (ref head, oldNext, oldHead) == oldHead;
- }
- }
- }
-
- oldNext.Value = default (T);
-
- Interlocked.Decrement (ref count);
-
- return true;
- }
-
- public bool TryPeek (out T result)
- {
- result = default (T);
- bool update = true;
-
- while (update)
- {
- Node oldHead = head;
- Node oldNext = oldHead.Next;
-
- if (oldNext == null) {
- result = default (T);
- return false;
- }
-
- result = oldNext.Value;
-
- //check if head has been updated
- update = head != oldHead;
- }
- return true;
- }
-
- internal void Clear ()
- {
- count = 0;
- tail = head = new Node ();
- }
-
- IEnumerator IEnumerable.GetEnumerator ()
- {
- return (IEnumerator)InternalGetEnumerator ();
- }
-
- public IEnumerator GetEnumerator ()
- {
- return InternalGetEnumerator ();
- }
-
- IEnumerator InternalGetEnumerator ()
- {
- Node my_head = head;
- while ((my_head = my_head.Next) != null) {
- yield return my_head.Value;
- }
- }
-
- void ICollection.CopyTo (Array array, int index)
- {
- if (array == null)
- throw new ArgumentNullException ("array");
- if (array.Rank > 1)
- throw new ArgumentException ("The array can't be multidimensional");
- if (array.GetLowerBound (0) != 0)
- throw new ArgumentException ("The array needs to be 0-based");
-
- T[] dest = array as T[];
- if (dest == null)
- throw new ArgumentException ("The array cannot be cast to the collection element type", "array");
- CopyTo (dest, index);
- }
-
- public void CopyTo (T[] array, int index)
- {
- if (array == null)
- throw new ArgumentNullException ("array");
- if (index < 0)
- throw new ArgumentOutOfRangeException ("index");
- if (index >= array.Length)
- throw new ArgumentException ("index is equals or greather than array length", "index");
-
- IEnumerator e = InternalGetEnumerator ();
- int i = index;
- while (e.MoveNext ()) {
- if (i == array.Length - index)
- throw new ArgumentException ("The number of elememts in the collection exceeds the capacity of array", "array");
- array[i++] = e.Current;
- }
- }
-
- public T[] ToArray ()
- {
- return new List (this).ToArray ();
- }
-
- bool ICollection.IsSynchronized {
- get { return true; }
- }
-
- bool IProducerConsumerCollection.TryTake (out T item)
- {
- return TryDequeue (out item);
- }
-
- object syncRoot = new object();
- object ICollection.SyncRoot {
- get { return syncRoot; }
- }
-
- public int Count {
- get {
- return count;
- }
- }
-
- public bool IsEmpty {
- get {
- return count == 0;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Akavache.Sqlite3/SQLiteAsync.cs b/Akavache.Sqlite3/SQLiteAsync.cs
deleted file mode 100644
index b3b84eee7..000000000
--- a/Akavache.Sqlite3/SQLiteAsync.cs
+++ /dev/null
@@ -1,421 +0,0 @@
-//
-// Copyright (c) 2012 Krueger Systems, Inc.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Expressions;
-using System.Reactive;
-using System.Reactive.Concurrency;
-using System.Reactive.Linq;
-using System.Threading;
-using System.Threading.Tasks;
-using Akavache.Sqlite3;
-using Akavache;
-
-namespace Akavache.Sqlite3.Internal
-{
- internal interface IAsyncTableQuery where T : new()
- {
- IAsyncTableQuery Where (Expression> predExpr);
- IAsyncTableQuery Skip (int n);
- IAsyncTableQuery Take (int n);
- IAsyncTableQuery OrderBy (Expression> orderExpr);
- IAsyncTableQuery OrderByDescending (Expression> orderExpr);
- IObservable> ToListAsync ();
- IObservable CountAsync ();
- IObservable ElementAtAsync (int index);
- IObservable FirstAsync ();
- IObservable FirstOrDefaultAsync ();
- }
-
- public partial class SQLiteAsyncConnection
- {
- SQLiteConnectionString _connectionString;
- SQLiteConnectionPool _pool;
- SQLiteOpenFlags _openFlags;
-
- public SQLiteAsyncConnection(string databasePath, bool storeDateTimeAsTicks = false)
- : this(databasePath, SQLiteOpenFlags.ReadWrite | SQLiteOpenFlags.Create | SQLiteOpenFlags.NoMutex | SQLiteOpenFlags.SharedCache, storeDateTimeAsTicks)
- {
- }
-
- public SQLiteAsyncConnection(string databasePath, SQLiteOpenFlags openFlags, bool storeDateTimeAsTicks = false)
- {
- _openFlags = openFlags;
- _connectionString = new SQLiteConnectionString (databasePath, storeDateTimeAsTicks);
- _pool = new SQLiteConnectionPool(_connectionString, _openFlags);
- }
-
- public IObservable CreateTableAsync ()
- where T : new ()
- {
- return CreateTablesAsync (typeof (T));
- }
-
- public IObservable CreateTablesAsync ()
- where T : new ()
- where T2 : new ()
- {
- return CreateTablesAsync (typeof (T), typeof (T2));
- }
-
- public IObservable CreateTablesAsync ()
- where T : new ()
- where T2 : new ()
- where T3 : new ()
- {
- return CreateTablesAsync (typeof (T), typeof (T2), typeof (T3));
- }
-
- public IObservable CreateTablesAsync ()
- where T : new ()
- where T2 : new ()
- where T3 : new ()
- where T4 : new ()
- {
- return CreateTablesAsync (typeof (T), typeof (T2), typeof (T3), typeof (T4));
- }
-
- public IObservable CreateTablesAsync ()
- where T : new ()
- where T2 : new ()
- where T3 : new ()
- where T4 : new ()
- where T5 : new ()
- {
- return CreateTablesAsync (typeof (T), typeof (T2), typeof (T3), typeof (T4), typeof (T5));
- }
-
- public IObservable CreateTablesAsync (params Type[] types)
- {
- return _pool.EnqueueConnectionOp(conn => {
- var result = new CreateTablesResult ();
-
- foreach (Type type in types) {
- int aResult = conn.CreateTable (type);
- result.Results[type] = aResult;
- }
- return result;
- });
- }
-
- public IObservable DropTableAsync ()
- where T : new ()
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.DropTable();
- });
- }
-
- public IObservable InsertAsync (object item)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Insert (item);
- });
- }
-
- public IObservable InsertAsync (object item, string extra, Type type)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Insert (item, extra, type);
- });
- }
-
-
- public IObservable UpdateAsync (object item)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Update (item);
- });
- }
-
- public IObservable DeleteAsync (object item)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Delete (item);
- });
- }
-
- public IObservable Get(object pk)
- where T : new()
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Get(pk);
- });
- }
-
- public IObservable FindAsync (object pk)
- where T : new ()
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Find (pk);
- });
- }
-
- public IObservable Get (Expression> predicate)
- where T : new()
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Get (predicate);
- });
- }
-
- public IObservable FindAsync (Expression> predicate)
- where T : new ()
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Find (predicate);
- });
- }
-
- public IObservable ExecuteAsync (string query, params object[] args)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Execute (query, args);
- });
- }
-
- public IObservable InsertAllAsync (IEnumerable items, string extra)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.InsertAll (items, extra);
- });
- }
-
- public IObservable UpdateAllAsync(IEnumerable items)
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.UpdateAll(items);
- });
- }
-
- public IObservable RunInTransactionAsync(Action action)
- {
- return _pool.EnqueueConnectionOp(conn => {
- conn.BeginTransaction();
- try {
- action(conn);
- conn.Commit();
- return Unit.Default;
- } catch (Exception) {
- conn.Rollback();
- throw;
- }
- });
- }
-
- public IObservable ExecuteScalarAsync (string sql, params object[] args)
- {
- return _pool.EnqueueConnectionOp(conn => {
- var command = conn.CreateCommand (sql, args);
- return command.ExecuteScalar ();
- });
- }
-
- public IObservable> QueryAsync (string sql, params object[] args)
- where T : new ()
- {
- return _pool.EnqueueConnectionOp(conn => {
- return conn.Query (sql, args);
- });
- }
-
- public IObservable Shutdown()
- {
- return _pool.Reset(false);
- }
- }
-
- public class CreateTablesResult
- {
- public Dictionary Results { get; private set; }
-
- internal CreateTablesResult ()
- {
- this.Results = new Dictionary ();
- }
- }
-
- class SQLiteConnectionPool : IDisposable
- {
- readonly int connectionCount;
- readonly Tuple connInfo;
-
- List connections;
- KeyedOperationQueue opQueue;
- int nextConnectionToUseAtomic = 0;
- const int tableLockRetries = 3;
-
- public SQLiteConnectionPool(SQLiteConnectionString connectionString, SQLiteOpenFlags flags, int? connectionCount = null)
- {
- this.connectionCount = connectionCount ?? 4;
- connInfo = Tuple.Create(connectionString, flags);
- Reset().Wait();
- }
-
- public IObservable EnqueueConnectionOp(Func operation)
- {
- var idx = Interlocked.Increment(ref nextConnectionToUseAtomic) % connectionCount;
- var conn = connections[idx];
-
- if (connections == null)
- {
- Reset(true).Wait();
- }
-
- var makeRq = Observable.Defer(() =>
- Observable.Start(() => operation(conn.Connection), BlobCache.TaskpoolScheduler));
-
- return opQueue.EnqueueObservableOperation(idx.ToString(), () =>
- makeRq.RetryWithBackoffStrategy(tableLockRetries, retryOnError: ex =>
- {
- var sqlex = ex as SQLiteException;
- if (sqlex == null)
- return false;
-
- return (sqlex.Result == SQLite3.Result.Locked || sqlex.Result == SQLite3.Result.Busy);
- }));
- }
-
- ///
- /// Closes all connections managed by this pool.
- ///
- public IObservable Reset (bool shouldReopen = true)
- {
- var shutdownQueue = Observable.Return(Unit.Default);
-
- if (opQueue != null)
- {
- shutdownQueue = opQueue.ShutdownQueue();
- }
-
- return shutdownQueue.Finally(() =>
- {
- if (connections != null)
- {
- foreach(var v in connections.Where(x => x != null && x.Connection != null))
- {
- v.OnApplicationSuspended();
- }
-
- connections = null;
- }
-
- if (shouldReopen)
- {
- connections = Enumerable.Range(0, connectionCount)
- .Select(_ => new Entry(connInfo.Item1, connInfo.Item2))
- .ToList();
-
- opQueue = new KeyedOperationQueue();
- }
- });
- }
-
- public void Dispose()
- {
- Reset(false).Wait();
- }
-
- class Entry
- {
- public SQLiteConnectionString ConnectionString { get; private set; }
- public SQLiteConnectionWithoutLock Connection { get; private set; }
-
- public Entry (SQLiteConnectionString connectionString, SQLiteOpenFlags flags)
- {
- ConnectionString = connectionString;
- Connection = new SQLiteConnectionWithoutLock (connectionString, flags);
- }
-
- public void OnApplicationSuspended ()
- {
- Connection.Dispose ();
- Connection = null;
- }
- }
- }
-
- class SQLiteConnectionWithoutLock : SQLiteConnection
- {
- public SQLiteConnectionWithoutLock (SQLiteConnectionString connectionString, SQLiteOpenFlags flags)
- : base (connectionString.DatabasePath, flags, connectionString.StoreDateTimeAsTicks)
- {
- }
- }
-
- public static class RetryWithBackoffMixin
- {
- ///
- /// An exponential back off strategy which starts with 1 second and then 4, 9, 16...
- ///
- public static readonly Func ExponentialBackoff =
- n => TimeSpan.FromMilliseconds(Math.Pow(n, 2) * 20);
-
- ///
- /// Returns a cold observable which retries (re-subscribes to) the source observable on error up to the
- /// specified number of times or until it successfully terminates. Allows for customizable back off strategy.
- ///
- /// The source observable.
- /// The number of attempts of running the source observable before failing.
- /// The strategy to use in backing off, exponential by default.
- /// A predicate determining for which exceptions to retry. Defaults to all
- /// The scheduler.
- ///
- /// A cold observable which retries (re-subscribes to) the source observable on error up to the
- /// specified number of times or until it successfully terminates.
- ///
- public static IObservable RetryWithBackoffStrategy(
- this IObservable source,
- int retryCount = 3,
- Func strategy = null,
- Func retryOnError = null,
- IScheduler scheduler = null)
- {
- strategy = strategy ?? ExponentialBackoff;
- scheduler = scheduler ?? BlobCache.TaskpoolScheduler;
-
- if (retryOnError == null)
- {
- retryOnError = _ => true;
- }
-
- int attempt = 0;
-
- return Observable.Defer(() =>
- {
- return ((++attempt == 1) ? source : source.DelaySubscription(strategy(attempt - 1), scheduler))
- .Select(item => new Tuple(true, item, null))
- .Catch, Exception>(e => retryOnError(e)
- ? Observable.Throw>(e)
- : Observable.Return(new Tuple(false, default(T), e)));
- })
- .Retry(retryCount)
- .SelectMany(t => t.Item1
- ? Observable.Return(t.Item2)
- : Observable.Throw(t.Item3));
- }
- }
-}
-
diff --git a/Akavache.Sqlite3/packages.Akavache.Sqlite3.config b/Akavache.Sqlite3/packages.Akavache.Sqlite3.config
deleted file mode 100644
index e063d0677..000000000
--- a/Akavache.Sqlite3/packages.Akavache.Sqlite3.config
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Tests/Akavache.Tests.csproj b/Akavache.Tests/Akavache.Tests.csproj
deleted file mode 100644
index a755ff2b6..000000000
--- a/Akavache.Tests/Akavache.Tests.csproj
+++ /dev/null
@@ -1,154 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}
- Library
- Properties
- Akavache.Tests
- Akavache.Tests
- v4.5
- 512
- ..\..\Akavache\
- true
-
- 3eb069a1
-
-
- true
- bin\x86\Debug\
- TRACE;DEBUG;NET45
- full
- x86
- prompt
- MinimumRecommendedRules.ruleset
-
-
- bin\x86\Release\
- TRACE;NET45
- true
- pdbonly
- x86
- prompt
- MinimumRecommendedRules.ruleset
-
-
-
- False
- ..\packages\Rx-Testing.2.2.5\lib\net45\Microsoft.Reactive.Testing.dll
-
-
-
- False
- ..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll
-
-
-
- False
- ..\packages\reactiveui-core.6.0.1\lib\Net45\ReactiveUI.dll
-
-
- False
- ..\packages\reactiveui-testing.6.0.1\lib\net45\ReactiveUI.Testing.dll
-
-
- False
- ..\packages\Splat.1.6.0\lib\Net45\Splat.dll
-
-
- False
- ..\packages\SQLitePCL.raw_basic.0.7.0\lib\net45\SQLitePCL.raw.dll
-
-
-
-
-
- False
- ..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll
-
-
- False
- ..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll
-
-
- False
- ..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll
-
-
- False
- ..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll
-
-
- False
- ..\packages\Rx-Xaml.2.2.5\lib\net45\System.Reactive.Windows.Threading.dll
-
-
-
-
-
-
-
-
-
- False
- ..\packages\xunit.1.9.2\lib\net20\xunit.dll
-
-
- False
- ..\packages\xunit.extensions.1.9.2\lib\net20\xunit.extensions.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {241c47df-ca8e-4296-aa03-2c48bb646abd}
- Akavache.Sqlite3
-
-
- {b4e665e5-6caf-4414-a6e2-8de1c3bcf203}
- Akavache_Net45
-
-
-
-
-
-
-
-
-
-
-
-
-
- This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Akavache.Tests/App.xaml b/Akavache.Tests/App.xaml
deleted file mode 100644
index 64ee3d107..000000000
--- a/Akavache.Tests/App.xaml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
diff --git a/Akavache.Tests/App.xaml.cs b/Akavache.Tests/App.xaml.cs
deleted file mode 100644
index 48b951e67..000000000
--- a/Akavache.Tests/App.xaml.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using System;
-using System.Windows;
-using Microsoft.Silverlight.Testing;
-using XunitContrib.Runner.Silverlight.Toolkit;
-
-namespace Akavache.Tests
-{
- public partial class App : Application
- {
-
- public App()
- {
- this.Startup += this.Application_Startup;
- this.Exit += this.Application_Exit;
- this.UnhandledException += this.Application_UnhandledException;
-
- InitializeComponent();
- }
-
- private void Application_Startup(object sender, StartupEventArgs e)
- {
- UnitTestSystem.RegisterUnitTestProvider(new UnitTestProvider());
- RootVisual = UnitTestSystem.CreateTestPage();
- }
-
- private void Application_Exit(object sender, EventArgs e)
- {
-
- }
- private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
- {
- // If the app is running outside of the debugger then report the exception using
- // the browser's exception mechanism. On IE this will display it a yellow alert
- // icon in the status bar and Firefox will display a script error.
- if (!System.Diagnostics.Debugger.IsAttached)
- {
-
- // NOTE: This will allow the application to continue running after an exception has been thrown
- // but not handled.
- // For production applications this error handling should be replaced with something that will
- // report the error to the website and stop the application.
- e.Handled = true;
- Deployment.Current.Dispatcher.BeginInvoke(delegate { ReportErrorToDOM(e); });
- }
- }
- private void ReportErrorToDOM(ApplicationUnhandledExceptionEventArgs e)
- {
- try
- {
- string errorMsg = e.ExceptionObject.Message + e.ExceptionObject.StackTrace;
- errorMsg = errorMsg.Replace('"', '\'').Replace("\r\n", @"\n");
-
- System.Windows.Browser.HtmlPage.Window.Eval("throw new Error(\"Unhandled Error in Silverlight Application " + errorMsg + "\");");
- }
- catch (Exception)
- {
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Akavache.Tests/app.config b/Akavache.Tests/app.config
deleted file mode 100644
index 9049a9cc2..000000000
--- a/Akavache.Tests/app.config
+++ /dev/null
@@ -1,35 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.Tests/packages.config b/Akavache.Tests/packages.config
deleted file mode 100644
index e60c61641..000000000
--- a/Akavache.Tests/packages.config
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache.sln b/Akavache.sln
deleted file mode 100644
index 765ad370e..000000000
--- a/Akavache.sln
+++ /dev/null
@@ -1,274 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio 2013
-VisualStudioVersion = 12.0.30501.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Tests", "Akavache.Tests\Akavache.Tests.csproj", "{0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_WP8", "Akavache\Akavache_WP8.csproj", "{A54279A3-3457-41DB-9166-67E05FD0E0B1}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Net45", "Akavache\Akavache_Net45.csproj", "{B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_WinRT", "Akavache\Akavache_WinRT.csproj", "{57655198-7A38-48A6-BF95-BE57B2C3D32D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_WP8", "Akavache.Mobile\Akavache.Mobile_WP8.csproj", "{9F13D088-7B83-4922-97DD-18C4CBBDDEAE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_WinRT", "Akavache.Mobile\Akavache.Mobile_WinRT.csproj", "{3CC2AFD6-D25F-4C8E-BD4B-31486F368365}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mobile", "Mobile", "{D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SQLite", "SQLite", "{9E059863-7633-4919-B6A7-627D80186383}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{9E586C5C-5E77-4D58-8222-3E94C60E4756}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Portable", "Akavache\Akavache_Portable.csproj", "{EB73ADDD-2FE9-44C0-A1AB-20709B979B64}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{9407D902-E9CF-4CB6-B601-77CDF74B9475}"
- ProjectSection(SolutionItems) = preProject
- CommonAssemblyInfo.cs = CommonAssemblyInfo.cs
- MakeRelease.ps1 = MakeRelease.ps1
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Deprecated", "Deprecated", "{403A7511-EACE-4DEA-9CE9-61592FB87C7B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_WinRT80", "Akavache\Akavache_WinRT80.csproj", "{74CCFBB6-7A56-461F-8DB6-93594BB4112E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_WinRT80", "Akavache.Mobile\Akavache.Mobile_WinRT80.csproj", "{47D34AB1-5188-4D8C-B24F-3151C67CC8CC}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Sqlite3", "Akavache.Sqlite3\Akavache.Sqlite3.csproj", "{241C47DF-CA8E-4296-AA03-2C48BB646ABD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Deprecated", "Akavache.Deprecated\Akavache.Deprecated.csproj", "{1FE2625D-844E-4224-B6BC-4E9246AF9C62}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|ARM = Debug|ARM
- Debug|Mixed Platforms = Debug|Mixed Platforms
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|ARM = Release|ARM
- Release|Mixed Platforms = Release|Mixed Platforms
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|Any CPU.ActiveCfg = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|ARM.ActiveCfg = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|x64.ActiveCfg = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|x86.ActiveCfg = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|x86.Build.0 = Debug|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|Any CPU.ActiveCfg = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|Any CPU.Build.0 = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|ARM.ActiveCfg = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|Mixed Platforms.Build.0 = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|x64.ActiveCfg = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|x86.ActiveCfg = Release|x86
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Release|x86.Build.0 = Release|x86
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|ARM.ActiveCfg = Debug|ARM
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|ARM.Build.0 = Debug|ARM
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|x64.ActiveCfg = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|x86.ActiveCfg = Debug|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|Any CPU.Build.0 = Release|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|ARM.ActiveCfg = Release|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|x64.ActiveCfg = Release|Any CPU
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|x86.ActiveCfg = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|x64.ActiveCfg = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Any CPU.Build.0 = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|ARM.ActiveCfg = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|x64.ActiveCfg = Release|Any CPU
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|x86.ActiveCfg = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|Any CPU.Build.0 = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|ARM.ActiveCfg = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|x64.ActiveCfg = Release|Any CPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|x86.ActiveCfg = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|ARM.ActiveCfg = Debug|ARM
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|ARM.Build.0 = Debug|ARM
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|x64.ActiveCfg = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|x86.ActiveCfg = Debug|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|Any CPU.Build.0 = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|ARM.ActiveCfg = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|x64.ActiveCfg = Release|Any CPU
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|x86.ActiveCfg = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|x64.ActiveCfg = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|x86.ActiveCfg = Debug|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|Any CPU.Build.0 = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|ARM.ActiveCfg = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|x64.ActiveCfg = Release|Any CPU
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|x86.ActiveCfg = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|x64.ActiveCfg = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|x86.ActiveCfg = Debug|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Any CPU.Build.0 = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|ARM.ActiveCfg = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|x64.ActiveCfg = Release|Any CPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|x86.ActiveCfg = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|Any CPU.Build.0 = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|ARM.ActiveCfg = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|x64.ActiveCfg = Release|Any CPU
- {1F6FD150-FEA6-4428-8521-781B8A0B31E8}.Release|x86.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Any CPU.Build.0 = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|ARM.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|x64.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|x86.ActiveCfg = Release|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|ARM.ActiveCfg = Debug|ARM
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|ARM.Build.0 = Debug|ARM
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|x86.ActiveCfg = Debug|x86
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Debug|x86.Build.0 = Debug|x86
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|Any CPU.Build.0 = Release|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|ARM.ActiveCfg = Release|ARM
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|ARM.Build.0 = Release|ARM
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|Mixed Platforms.ActiveCfg = Release|x86
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|Mixed Platforms.Build.0 = Release|x86
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|x64.ActiveCfg = Release|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|x86.ActiveCfg = Release|Any CPU
- {AC4FCB4C-2A32-4E23-A5AB-7A4268016CBF}.Release|x86.Build.0 = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|x64.ActiveCfg = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|x86.ActiveCfg = Debug|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|Any CPU.Build.0 = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|ARM.ActiveCfg = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|x64.ActiveCfg = Release|Any CPU
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|x86.ActiveCfg = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|x64.ActiveCfg = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|x86.ActiveCfg = Debug|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|Any CPU.Build.0 = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|ARM.ActiveCfg = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|x64.ActiveCfg = Release|Any CPU
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|x86.ActiveCfg = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|x86.ActiveCfg = Debug|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Any CPU.Build.0 = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|ARM.ActiveCfg = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|x64.ActiveCfg = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|x86.ActiveCfg = Release|Any CPU
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|x86.Build.0 = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|ARM.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|x64.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|x86.ActiveCfg = Debug|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Any CPU.Build.0 = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|ARM.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|x64.ActiveCfg = Release|Any CPU
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|x86.ActiveCfg = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1} = {9E586C5C-5E77-4D58-8222-3E94C60E4756}
- {9F13D088-7B83-4922-97DD-18C4CBBDDEAE} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1}
- {3CC2AFD6-D25F-4C8E-BD4B-31486F368365} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1}
- {47D34AB1-5188-4D8C-B24F-3151C67CC8CC} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1}
- {241C47DF-CA8E-4296-AA03-2C48BB646ABD} = {9E059863-7633-4919-B6A7-627D80186383}
- {1FE2625D-844E-4224-B6BC-4E9246AF9C62} = {403A7511-EACE-4DEA-9CE9-61592FB87C7B}
- EndGlobalSection
-EndGlobal
diff --git a/Akavache/Akavache_MonoMac.csproj b/Akavache/Akavache_MonoMac.csproj
deleted file mode 100644
index f9ba89762..000000000
--- a/Akavache/Akavache_MonoMac.csproj
+++ /dev/null
@@ -1,128 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {3EF05CA8-ED19-489C-AF42-71C4B6507AE7}
- {42C0BBD9-55CE-4FC1-8D90-A7348ABAFB23};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
- Akavache
- Akavache
- 512
- ..\..\Akavache\
- false
- v4.5
- ..\packages\Fody.1.20.0.0
-
-
- true
- full
- false
- bin\Debug\MonoMac\
- obj\Debug\MonoMac\
- DEBUG;TRACE; MONO; APPKIT
- prompt
- 4
- false
- false
- false
- false
- false
- false
-
-
- true
- bin\Release\MonoMac\
- obj\Release\MonoMac\
- TRACE; MONO; APPKIT
- prompt
- 4
- false
- false
- false
- false
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll
-
-
-
- ..\packages\Splat.1.6.0\lib\MonoMac\Splat.dll
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_Monodroid.csproj b/Akavache/Akavache_Monodroid.csproj
deleted file mode 100644
index b43254aa4..000000000
--- a/Akavache/Akavache_Monodroid.csproj
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}
- {EFBA0AD7-5A72-4C68-AF49-83D382785DCF};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
- Akavache
- Akavache
- 512
-
-
-
-
-
-
-
-
- 1
- v4.0.3
- ..\
- false
-
-
- True
- full
- False
- bin\Debug\Monoandroid
- bin\Debug\Monoandroid
- DEBUG;MONO; XAMARIN_MOBILE
- prompt
- 4
- False
- True
- False
- False
- False
- False
- True
- False
- False
- False
- True
- False
- False
- False
-
-
-
-
-
-
-
-
-
-
-
-
- False
- Full
- %28none%29
- ExtendedCorrectnessRules.ruleset
- false
- False
- None
-
-
- True
- bin\Release\Monoandroid
- obj\Release\Monoandroid
- MONO; XAMARIN_MOBILE; ANDROID
- prompt
- 4
- False
- False
- True
- False
- True
- False
- False
- False
- False
- False
- True
- True
- False
- False
-
-
-
-
-
-
-
-
-
-
-
-
- True
- Full
- %28none%29
- False
- True
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net40+sl4+wp7+win8\Newtonsoft.Json.dll
-
-
- ..\packages\Splat.1.6.0\lib\monoandroid\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
-
-
-
-
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_Monotouch.csproj b/Akavache/Akavache_Monotouch.csproj
deleted file mode 100644
index 0843fc5d5..000000000
--- a/Akavache/Akavache_Monotouch.csproj
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {9091337C-9E94-4DBD-801E-05E1FDA78FFC}
- {6BC8ED88-2882-458C-8E55-DFD12B67127B};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Akavache
- Resources
- Akavache
- ..\
- false
- ..\packages\Fody.1.20.0.0
-
-
- True
- full
- False
- bin\Debug\Monotouch
- obj\Debug\Monotouch
- DEBUG; MONO; UIKIT; XAMARIN_MOBILE
- prompt
- 4
- False
-
-
- pdbonly
- True
- bin\Release\Monotouch
- obj\Release\Monotouch
- prompt
- 4
- False
- MONO; UIKIT; XAMARIN_MOBILE
- true
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net40+sl4+wp7+win8\Newtonsoft.Json.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Splat.1.6.0\lib\monotouch\Splat.dll
-
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_Net45.csproj b/Akavache/Akavache_Net45.csproj
deleted file mode 100644
index 51cd94f9c..000000000
--- a/Akavache/Akavache_Net45.csproj
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}
- Library
- Properties
- Akavache
- Akavache
- v4.5
- 512
- ..\..\Akavache\
- true
-
- ..\packages\Fody.1.20.0.0
-
-
- true
- full
- false
- bin\Debug\Net45\
- obj\Debug\Net45\
- DEBUG;TRACE
- prompt
- 4
- false
-
-
- pdbonly
- true
- bin\Release\Net45\
- obj\Release\Net45\
- TRACE
- prompt
- 4
- false
- bin\Release\Net45\Akavache.xml
-
-
-
- False
- ..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll
-
-
-
- False
- ..\packages\Splat.1.6.0\lib\Net45\Splat.dll
-
-
-
-
- False
- ..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll
-
-
- False
- ..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll
-
-
- False
- ..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll
-
-
- False
- ..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll
-
-
- False
- ..\packages\Rx-Xaml.2.2.5\lib\net45\System.Reactive.Windows.Threading.dll
-
-
-
-
-
-
-
-
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_Portable.csproj b/Akavache/Akavache_Portable.csproj
deleted file mode 100644
index 4d514160c..000000000
--- a/Akavache/Akavache_Portable.csproj
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
-
- 10.0
- Debug
- AnyCPU
- {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}
- Library
- Properties
- Akavache
- Akavache
- v4.5
- Profile259
- 512
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
- 8.0.30703
- 2.0
-
-
- true
- full
- false
- bin\Debug\Portable-Net45+Win8+WP8+Wpa81\
- obj\Debug\Portable-Net45+Win8+WP8+Wpa81\
- TRACE;DEBUG;PORTABLE
- prompt
- 4
-
-
- true
- pdbonly
- true
- bin\Release\Portable-Net45+Win8+WP8+Wpa81\
- obj\Release\Portable-Net45+Win8+WP8+Wpa81\
- TRACE;PORTABLE
- prompt
- 4
- bin\Release\Portable-Net45+Win8+WP8+Wpa81\Akavache.xml
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
-
-
- ..\packages\Splat.1.6.0\lib\Portable-net45+win+wpa81+wp80\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-net45+winrt45+wp8+wpa81\System.Reactive.PlatformServices.dll
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_WP8.csproj b/Akavache/Akavache_WP8.csproj
deleted file mode 100644
index c2d8e0eb6..000000000
--- a/Akavache/Akavache_WP8.csproj
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 10.0.20506
- 2.0
- {A54279A3-3457-41DB-9166-67E05FD0E0B1}
- {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}
- Library
- Properties
- Akavache
- Akavache
- v8.0
-
-
-
-
- WindowsPhone
- false
- true
- true
- ..\..\Akavache\
- true
- 11.0
-
-
- true
- full
- false
- Bin\Debug\WP8\
- obj\Debug\WP8\
- TRACE;DEBUG;SILVERLIGHT;WINDOWS_PHONE;WP8
- true
- true
- prompt
- 4
- false
-
-
- true
- pdbonly
- true
- Bin\Release\WP8\
- obj\Release\WP8\
- TRACE;SILVERLIGHT;WINDOWS_PHONE;WP8
- true
- true
- prompt
- 4
- false
- Bin\Release\WP8\Akavache.XML
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
- True
-
-
- ..\packages\Splat.1.6.0\lib\wp8\Splat.dll
- True
-
-
- False
- ..\packages\Rx-Core.2.2.5\lib\windowsphone8\System.Reactive.Core.dll
-
-
- False
- ..\packages\Rx-Interfaces.2.2.5\lib\windowsphone8\System.Reactive.Interfaces.dll
-
-
- False
- ..\packages\Rx-Linq.2.2.5\lib\windowsphone8\System.Reactive.Linq.dll
-
-
- False
- ..\packages\Rx-PlatformServices.2.2.5\lib\windowsphone8\System.Reactive.PlatformServices.dll
-
-
- False
- ..\packages\Rx-Xaml.2.2.5\lib\windowsphone8\System.Reactive.Windows.Threading.dll
-
-
- False
- ..\packages\Rx-WinRT.2.2.5\lib\windowsphone8\System.Reactive.WindowsRuntime.dll
-
-
-
-
-
-
-
-
-
-
- <_FullFrameworkReferenceAssemblyPaths>$(TargetFrameworkDirectory)
-
-
-
-
diff --git a/Akavache/Akavache_WinRT.csproj b/Akavache/Akavache_WinRT.csproj
deleted file mode 100644
index d3c0afe4a..000000000
--- a/Akavache/Akavache_WinRT.csproj
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
-
- 12.0
- Debug
- AnyCPU
- {57655198-7A38-48A6-BF95-BE57B2C3D32D}
- Library
- Properties
- Akavache
- Akavache
- v4.6
- Profile32
- 512
- {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
- 8.0.30703
- 2.0
-
-
- true
- full
- false
- bin\Debug\Portable-Win81+Wpa81\
- obj\Debug\Portable-Net45+WinRT45+WP8\
- TRACE;DEBUG;NETFX_CORE; WINRT
- prompt
- 4
-
-
- true
- pdbonly
- true
- bin\Release\Portable-Win81+Wpa81\
- obj\Release\Portable-Net45+WinRT45+WP8\
- TRACE;NETFX_CORE; WINRT
- prompt
- 4
- bin\Release\Portable-Win81+Wpa81\Akavache.xml
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll
-
-
- ..\packages\Splat.1.6.0\lib\Portable-Win81+Wpa81\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-win81+wpa81\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-win81+wpa81\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-win81+wpa81\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-win81+wpa81\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Rx-Xaml.2.2.5\lib\portable-win81+wpa81\System.Reactive.Windows.Threading.dll
-
-
- ..\packages\Rx-WinRT.2.2.5\lib\portable-win81+wpa81\System.Reactive.WindowsRuntime.dll
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_WinRT80.csproj b/Akavache/Akavache_WinRT80.csproj
deleted file mode 100644
index b0ea23b44..000000000
--- a/Akavache/Akavache_WinRT80.csproj
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {74CCFBB6-7A56-461F-8DB6-93594BB4112E}
- Library
- Properties
- Akavache
- Akavache
- en-US
- 512
- {BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- ..\
- true
-
-
- true
- full
- false
- bin\Debug\Win8\
- obj\Debug\WinRT45\
- TRACE;DEBUG;NETFX_CORE; WINRT
- prompt
- 4
-
-
-
-
- pdbonly
- true
- bin\Release\Win8\
- obj\Release\WinRT45\
- TRACE;NETFX_CORE; WINRT
- prompt
- 4
- bin\Release\Win8\Akavache.XML
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
- ..\packages\Newtonsoft.Json.6.0.3\lib\netcore45\Newtonsoft.Json.dll
-
-
- False
- ..\packages\Splat.1.6.0\lib\NetCore45\Splat.dll
-
-
- False
- ..\packages\Rx-Core.2.2.5\lib\windows8\System.Reactive.Core.dll
-
-
- False
- ..\packages\Rx-Interfaces.2.2.5\lib\windows8\System.Reactive.Interfaces.dll
-
-
- False
- ..\packages\Rx-Linq.2.2.5\lib\windows8\System.Reactive.Linq.dll
-
-
- False
- ..\packages\Rx-PlatformServices.2.2.5\lib\windows8\System.Reactive.PlatformServices.dll
-
-
- False
- ..\packages\Rx-Xaml.2.2.5\lib\windows8\System.Reactive.Windows.Threading.dll
-
-
- False
- ..\packages\Rx-WinRT.2.2.5\lib\windows8\System.Reactive.WindowsRuntime.dll
-
-
-
-
-
-
- 11.0
-
-
-
-
diff --git a/Akavache/Akavache_XamarinIOS.csproj b/Akavache/Akavache_XamarinIOS.csproj
deleted file mode 100644
index 53e27f564..000000000
--- a/Akavache/Akavache_XamarinIOS.csproj
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {F091337A-1E94-4DBD-801E-05E1FDA78FFC}
- {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Akavache
- Resources
- Akavache
- ..\
- false
- ..\packages\Fody.1.20.0.0
-
-
- True
- full
- False
- bin\Debug\Xamarin.iOS10
- obj\Debug\Xamarin.iOS10
- DEBUG; MONO; UIKIT; UNIFIED; XAMARIN_MOBILE
- prompt
- 4
- False
-
-
- pdbonly
- True
- bin\Release\Xamarin.iOS10
- obj\Release\Xamarin.iOS10
- prompt
- 4
- False
- MONO; UIKIT; UNIFIED; XAMARIN_MOBILE
- true
-
-
-
-
-
-
-
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\portable-net40+sl4+wp7+win8\Newtonsoft.Json.dll
-
-
- ..\packages\Splat.1.6.0\lib\monotouch\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.PlatformServices.dll
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/Akavache_XamarinMac.csproj b/Akavache/Akavache_XamarinMac.csproj
deleted file mode 100644
index 1adc60256..000000000
--- a/Akavache/Akavache_XamarinMac.csproj
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {1EF05CAB-AD19-489C-AC42-71C4B6507AE7}
- {A3F8F2AB-B479-4A4A-A458-A89E7DC349F1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- Library
- Properties
- Akavache
- Akavache
- 512
- Resources
- ..\..\Akavache\
- false
- Xamarin.Mac
- v2.0
-
-
- true
- full
- false
- bin\Debug\Xamarin.Mac10\
- obj\Debug\Xamarin.Mac10\
- DEBUG; TRACE; MONO; APPKIT; UNIFIED
- prompt
- 4
- false
- false
- false
- false
- false
- false
-
-
- true
- bin\Release\Xamarin.Mac10\
- obj\Release\Xamarin.Mac10\
- TRACE; MONO; APPKIT; UNIFIED
- prompt
- 4
- false
- false
- false
- false
- false
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Splat.1.6.0\lib\Xamarin.Mac10\Splat.dll
-
-
- ..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll
-
-
- ..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll
-
-
- ..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll
-
-
- ..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll
-
-
- ..\packages\Newtonsoft.Json.6.0.3\lib\net45\Newtonsoft.Json.dll
-
-
-
-
- Properties\CommonAssemblyInfo.cs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Akavache/MD5Managed.cs b/Akavache/MD5Managed.cs
deleted file mode 100644
index 36aaa544c..000000000
--- a/Akavache/MD5Managed.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-// Fetched from http://archive.msdn.microsoft.com/SilverlightMD5
-//Copyright (c) Microsoft Corporation. All rights reserved.
-using System;
-using System.Security.Cryptography;
-
-// **************************************************************
-// * Raw implementation of the MD5 hash algorithm
-// * from RFC 1321.
-// *
-// * Written By: Reid Borsuk and Jenny Zheng
-// * Copyright (c) Microsoft Corporation. All rights reserved.
-// **************************************************************
-
-namespace Akavache
-{
-
-#if SILVERLIGHT
-internal class MD5Managed : HashAlgorithm
-#else
-internal class MD5Managed : MD5
-#endif
-{
- private byte[] _data;
- private ABCDStruct _abcd;
- private Int64 _totalLength;
- private int _dataSize;
-
- public MD5Managed()
- {
- base.HashSizeValue = 0x80;
- this.Initialize();
- }
-
- public override void Initialize()
- {
- _data = new byte[64];
- _dataSize = 0;
- _totalLength = 0;
- _abcd = new ABCDStruct();
- //Intitial values as defined in RFC 1321
- _abcd.A = 0x67452301;
- _abcd.B = 0xefcdab89;
- _abcd.C = 0x98badcfe;
- _abcd.D = 0x10325476;
- }
-
- protected override void HashCore(byte[] array, int ibStart, int cbSize)
- {
- int startIndex = ibStart;
- int totalArrayLength = _dataSize + cbSize;
- if (totalArrayLength >= 64)
- {
- Array.Copy(array, startIndex, _data, _dataSize, 64 - _dataSize);
- // Process message of 64 bytes (512 bits)
- MD5Core.GetHashBlock(_data, ref _abcd, 0);
- startIndex += 64 - _dataSize;
- totalArrayLength -= 64;
- while (totalArrayLength >= 64)
- {
- Array.Copy(array, startIndex, _data, 0, 64);
- MD5Core.GetHashBlock(array, ref _abcd, startIndex);
- totalArrayLength -= 64;
- startIndex += 64;
- }
- _dataSize = totalArrayLength;
- Array.Copy(array, startIndex, _data, 0, totalArrayLength);
- }
- else
- {
- Array.Copy(array, startIndex, _data, _dataSize, cbSize);
- _dataSize = totalArrayLength;
- }
- _totalLength += cbSize;
- }
-
- protected override byte[] HashFinal()
- {
- base.HashValue = MD5Core.GetHashFinalBlock(_data, 0, _dataSize, _abcd, _totalLength * 8);
- return base.HashValue;
- }
-}
-
-
-}
\ No newline at end of file
diff --git a/Akavache/Portable/ConcurrentDictionary.cs b/Akavache/Portable/ConcurrentDictionary.cs
deleted file mode 100644
index 4f67ebf51..000000000
--- a/Akavache/Portable/ConcurrentDictionary.cs
+++ /dev/null
@@ -1,963 +0,0 @@
-// ConcurrentDictionary.cs
-//
-// Copyright (c) 2009 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-using System;
-using System.Threading;
-using System.Collections;
-using System.Collections.Generic;
-using System.Runtime.Serialization;
-using System.Diagnostics;
-
-namespace Akavache.Internal
-{
- [DebuggerDisplay("Count={Count}")]
- internal class ConcurrentDictionary : IDictionary,
- ICollection>, IEnumerable>,
- IDictionary, ICollection, IEnumerable
- {
- IEqualityComparer comparer;
-
- SplitOrderedList> internalDictionary;
-
- public ConcurrentDictionary()
- : this(EqualityComparer.Default)
- {
- }
-
- public ConcurrentDictionary(IEnumerable> collection)
- : this(collection, EqualityComparer.Default)
- {
- }
-
- public ConcurrentDictionary(IEqualityComparer comparer)
- {
- this.comparer = comparer;
- this.internalDictionary = new SplitOrderedList>(comparer);
- }
-
- public ConcurrentDictionary(IEnumerable> collection, IEqualityComparer comparer)
- : this(comparer)
- {
- foreach (KeyValuePair pair in collection)
- Add(pair.Key, pair.Value);
- }
-
- // Parameters unused
- public ConcurrentDictionary(int concurrencyLevel, int capacity)
- : this(EqualityComparer.Default)
- {
-
- }
-
- public ConcurrentDictionary(int concurrencyLevel,
- IEnumerable> collection,
- IEqualityComparer comparer)
- : this(collection, comparer)
- {
-
- }
-
- // Parameters unused
- public ConcurrentDictionary(int concurrencyLevel, int capacity, IEqualityComparer comparer)
- : this(comparer)
- {
-
- }
-
- void CheckKey(TKey key)
- {
- if (key == null)
- throw new ArgumentNullException("key");
- }
-
- void Add(TKey key, TValue value)
- {
- while (!TryAdd(key, value)) ;
- }
-
- void IDictionary.Add(TKey key, TValue value)
- {
- Add(key, value);
- }
-
- public bool TryAdd(TKey key, TValue value)
- {
- CheckKey(key);
- return internalDictionary.Insert(Hash(key), key, Make(key, value));
- }
-
- void ICollection>.Add(KeyValuePair pair)
- {
- Add(pair.Key, pair.Value);
- }
-
- public TValue AddOrUpdate(TKey key, Func addValueFactory, Func updateValueFactory)
- {
- CheckKey(key);
- if (addValueFactory == null)
- throw new ArgumentNullException("addValueFactory");
- if (updateValueFactory == null)
- throw new ArgumentNullException("updateValueFactory");
- return internalDictionary.InsertOrUpdate(Hash(key),
- key,
- () => Make(key, addValueFactory(key)),
- (e) => Make(key, updateValueFactory(key, e.Value))).Value;
- }
-
- public TValue AddOrUpdate(TKey key, TValue addValue, Func updateValueFactory)
- {
- return AddOrUpdate(key, (_) => addValue, updateValueFactory);
- }
-
- TValue AddOrUpdate(TKey key, TValue addValue, TValue updateValue)
- {
- CheckKey(key);
- return internalDictionary.InsertOrUpdate(Hash(key),
- key,
- Make(key, addValue),
- Make(key, updateValue)).Value;
- }
-
- TValue GetValue(TKey key)
- {
- TValue temp;
- if (!TryGetValue(key, out temp))
- throw new KeyNotFoundException(key.ToString());
- return temp;
- }
-
- public bool TryGetValue(TKey key, out TValue value)
- {
- CheckKey(key);
- KeyValuePair pair;
- bool result = internalDictionary.Find(Hash(key), key, out pair);
- value = pair.Value;
-
- return result;
- }
-
- public bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)
- {
- CheckKey(key);
- return internalDictionary.CompareExchange(Hash(key), key, Make(key, newValue), (e) => e.Value.Equals(comparisonValue));
- }
-
- public TValue this[TKey key]
- {
- get
- {
- return GetValue(key);
- }
- set
- {
- AddOrUpdate(key, value, value);
- }
- }
-
- public TValue GetOrAdd(TKey key, Func valueFactory)
- {
- CheckKey(key);
- return internalDictionary.InsertOrGet(Hash(key), key, Make(key, default(TValue)), () => Make(key, valueFactory(key))).Value;
- }
-
- public TValue GetOrAdd(TKey key, TValue value)
- {
- CheckKey(key);
- return internalDictionary.InsertOrGet(Hash(key), key, Make(key, value), null).Value;
- }
-
- public bool TryRemove(TKey key, out TValue value)
- {
- CheckKey(key);
- KeyValuePair data;
- bool result = internalDictionary.Delete(Hash(key), key, out data);
- value = data.Value;
- return result;
- }
-
- bool Remove(TKey key)
- {
- TValue dummy;
-
- return TryRemove(key, out dummy);
- }
-
- bool IDictionary.Remove(TKey key)
- {
- return Remove(key);
- }
-
- bool ICollection>.Remove(KeyValuePair pair)
- {
- return Remove(pair.Key);
- }
-
- public bool ContainsKey(TKey key)
- {
- CheckKey(key);
- KeyValuePair dummy;
- return internalDictionary.Find(Hash(key), key, out dummy);
- }
-
- bool IDictionary.Contains(object key)
- {
- if (!(key is TKey))
- return false;
-
- return ContainsKey((TKey)key);
- }
-
- void IDictionary.Remove(object key)
- {
- if (!(key is TKey))
- return;
-
- Remove((TKey)key);
- }
-
- object IDictionary.this[object key]
- {
- get
- {
- if (!(key is TKey))
- throw new ArgumentException("key isn't of correct type", "key");
-
- return this[(TKey)key];
- }
- set
- {
- if (!(key is TKey) || !(value is TValue))
- throw new ArgumentException("key or value aren't of correct type");
-
- this[(TKey)key] = (TValue)value;
- }
- }
-
- void IDictionary.Add(object key, object value)
- {
- if (!(key is TKey) || !(value is TValue))
- throw new ArgumentException("key or value aren't of correct type");
-
- Add((TKey)key, (TValue)value);
- }
-
- bool ICollection>.Contains(KeyValuePair pair)
- {
- return ContainsKey(pair.Key);
- }
-
- public KeyValuePair[] ToArray()
- {
- // This is most certainly not optimum but there is
- // not a lot of possibilities
-
- return new List>(this).ToArray();
- }
-
- public void Clear()
- {
- // Pronk
- internalDictionary = new SplitOrderedList>(comparer);
- }
-
- public int Count
- {
- get
- {
- return internalDictionary.Count;
- }
- }
-
- public bool IsEmpty
- {
- get
- {
- return Count == 0;
- }
- }
-
- bool ICollection>.IsReadOnly
- {
- get
- {
- return false;
- }
- }
-
- bool IDictionary.IsReadOnly
- {
- get
- {
- return false;
- }
- }
-
- public ICollection Keys
- {
- get
- {
- return GetPart((kvp) => kvp.Key);
- }
- }
-
- public ICollection Values
- {
- get
- {
- return GetPart((kvp) => kvp.Value);
- }
- }
-
- ICollection IDictionary.Keys
- {
- get
- {
- return (ICollection)Keys;
- }
- }
-
- ICollection IDictionary.Values
- {
- get
- {
- return (ICollection)Values;
- }
- }
-
- ICollection GetPart(Func, T> extractor)
- {
- List temp = new List();
-
- foreach (KeyValuePair kvp in this)
- temp.Add(extractor(kvp));
-
- return temp;
- }
-
- void ICollection.CopyTo(Array array, int startIndex)
- {
- KeyValuePair[] arr = array as KeyValuePair[];
- if (arr == null)
- return;
-
- CopyTo(arr, startIndex, Count);
- }
-
- void CopyTo(KeyValuePair[] array, int startIndex)
- {
- CopyTo(array, startIndex, Count);
- }
-
- void ICollection>.CopyTo(KeyValuePair[] array, int startIndex)
- {
- CopyTo(array, startIndex);
- }
-
- void CopyTo(KeyValuePair[] array, int startIndex, int num)
- {
- foreach (var kvp in this)
- {
- array[startIndex++] = kvp;
-
- if (--num <= 0)
- return;
- }
- }
-
- public IEnumerator> GetEnumerator()
- {
- return GetEnumeratorInternal();
- }
-
- IEnumerator IEnumerable.GetEnumerator()
- {
- return (IEnumerator)GetEnumeratorInternal();
- }
-
- IEnumerator> GetEnumeratorInternal()
- {
- return internalDictionary.GetEnumerator();
- }
-
- IDictionaryEnumerator IDictionary.GetEnumerator()
- {
- return new ConcurrentDictionaryEnumerator(GetEnumeratorInternal());
- }
-
- class ConcurrentDictionaryEnumerator : IDictionaryEnumerator
- {
- IEnumerator> internalEnum;
-
- public ConcurrentDictionaryEnumerator(IEnumerator> internalEnum)
- {
- this.internalEnum = internalEnum;
- }
-
- public bool MoveNext()
- {
- return internalEnum.MoveNext();
- }
-
- public void Reset()
- {
- internalEnum.Reset();
- }
-
- public object Current
- {
- get
- {
- return Entry;
- }
- }
-
- public DictionaryEntry Entry
- {
- get
- {
- KeyValuePair current = internalEnum.Current;
- return new DictionaryEntry(current.Key, current.Value);
- }
- }
-
- public object Key
- {
- get
- {
- return internalEnum.Current.Key;
- }
- }
-
- public object Value
- {
- get
- {
- return internalEnum.Current.Value;
- }
- }
- }
-
- object ICollection.SyncRoot
- {
- get
- {
- return this;
- }
- }
-
- bool IDictionary.IsFixedSize
- {
- get
- {
- return false;
- }
- }
-
- bool ICollection.IsSynchronized
- {
- get { return true; }
- }
-
- static KeyValuePair Make(U key, V value)
- {
- return new KeyValuePair(key, value);
- }
-
- uint Hash(TKey key)
- {
- return (uint)comparer.GetHashCode(key);
- }
- }
-}
-
-// SplitOrderedList.cs
-//
-// Copyright (c) 2010 Jérémie "Garuma" Laval
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-//
-//
-
-namespace Akavache.Internal
-{
- internal class SplitOrderedList
- {
- class Node
- {
- public bool Marked;
- public ulong Key;
- public TKey SubKey;
- public T Data;
- public Node Next;
-
- public Node Init (ulong key, TKey subKey, T data)
- {
- this.Key = key;
- this.SubKey = subKey;
- this.Data = data;
-
- this.Marked = false;
- this.Next = null;
-
- return this;
- }
-
- // Used to create dummy node
- public Node Init (ulong key)
- {
- this.Key = key;
- this.Data = default (T);
-
- this.Next = null;
- this.Marked = false;
- this.SubKey = default (TKey);
-
- return this;
- }
-
- // Used to create marked node
- public Node Init (Node wrapped)
- {
- this.Marked = true;
- this.Next = wrapped;
-
- this.Key = 0;
- this.Data = default (T);
- this.SubKey = default (TKey);
-
- return this;
- }
- }
-
- const int MaxLoad = 5;
- const uint BucketSize = 512;
-
- Node head;
- Node tail;
-
- Node[] buckets = new Node [BucketSize];
- int count;
- int size = 2;
-
- SimpleRwLock slim = new SimpleRwLock ();
-
- readonly IEqualityComparer comparer;
-
- public SplitOrderedList (IEqualityComparer comparer)
- {
- this.comparer = comparer;
- head = new Node ().Init (0);
- tail = new Node ().Init (ulong.MaxValue);
- head.Next = tail;
- SetBucket (0, head);
- }
-
- public int Count {
- get {
- return count;
- }
- }
-
- public T InsertOrUpdate (uint key, TKey subKey, Func addGetter, Func updateGetter)
- {
- Node current;
- bool result = InsertInternal (key, subKey, default (T), addGetter, out current);
-
- if (result)
- return current.Data;
-
- // FIXME: this should have a CAS-like behavior
- return current.Data = updateGetter (current.Data);
- }
-
- public T InsertOrUpdate (uint key, TKey subKey, T addValue, T updateValue)
- {
- Node current;
- if (InsertInternal (key, subKey, addValue, null, out current))
- return current.Data;
-
- // FIXME: this should have a CAS-like behavior
- return current.Data = updateValue;
- }
-
- public bool Insert (uint key, TKey subKey, T data)
- {
- Node current;
- return InsertInternal (key, subKey, data, null, out current);
- }
-
- public T InsertOrGet (uint key, TKey subKey, T data, Func dataCreator)
- {
- Node current;
- InsertInternal (key, subKey, data, dataCreator, out current);
- return current.Data;
- }
-
- bool InsertInternal (uint key, TKey subKey, T data, Func dataCreator, out Node current)
- {
- Node node = new Node ().Init (ComputeRegularKey (key), subKey, data);
-
- uint b = key % (uint)size;
- Node bucket;
-
- if ((bucket = GetBucket (b)) == null)
- bucket = InitializeBucket (b);
-
- if (!ListInsert (node, bucket, out current, dataCreator))
- return false;
-
- int csize = size;
- if (Interlocked.Increment (ref count) / csize > MaxLoad && (csize & 0x40000000) == 0)
- Interlocked.CompareExchange (ref size, 2 * csize, csize);
-
- current = node;
-
- return true;
- }
-
- public bool Find (uint key, TKey subKey, out T data)
- {
- Node node;
- uint b = key % (uint)size;
- data = default (T);
- Node bucket;
-
- if ((bucket = GetBucket (b)) == null)
- bucket = InitializeBucket (b);
-
- if (!ListFind (ComputeRegularKey (key), subKey, bucket, out node))
- return false;
-
- data = node.Data;
-
- return !node.Marked;
- }
-
- public bool CompareExchange (uint key, TKey subKey, T data, Func check)
- {
- Node node;
- uint b = key % (uint)size;
- Node bucket;
-
- if ((bucket = GetBucket (b)) == null)
- bucket = InitializeBucket (b);
-
- if (!ListFind (ComputeRegularKey (key), subKey, bucket, out node))
- return false;
-
- if (!check (node.Data))
- return false;
-
- node.Data = data;
-
- return true;
- }
-
- public bool Delete (uint key, TKey subKey, out T data)
- {
- uint b = key % (uint)size;
- Node bucket;
-
- if ((bucket = GetBucket (b)) == null)
- bucket = InitializeBucket (b);
-
- if (!ListDelete (bucket, ComputeRegularKey (key), subKey, out data))
- return false;
-
- Interlocked.Decrement (ref count);
- return true;
- }
-
- public IEnumerator GetEnumerator ()
- {
- Node node = head.Next;
-
- while (node != tail) {
- while (node.Marked || (node.Key & 1) == 0) {
- node = node.Next;
- if (node == tail)
- yield break;
- }
- yield return node.Data;
- node = node.Next;
- }
- }
-
- Node InitializeBucket (uint b)
- {
- Node current;
- uint parent = GetParent (b);
- Node bucket;
-
- if ((bucket = GetBucket (parent)) == null)
- bucket = InitializeBucket (parent);
-
- Node dummy = new Node ().Init (ComputeDummyKey (b));
- if (!ListInsert (dummy, bucket, out current, null))
- return current;
-
- return SetBucket (b, dummy);
- }
-
- // Turn v's MSB off
- static uint GetParent (uint v)
- {
- uint t, tt;
-
- // Find MSB position in v
- var pos = (tt = v >> 16) > 0 ?
- (t = tt >> 8) > 0 ? 24 + logTable[t] : 16 + logTable[tt] :
- (t = v >> 8) > 0 ? 8 + logTable[t] : logTable[v];
-
- return (uint)(v & ~(1 << pos));
- }
-
- // Reverse integer bits and make sure LSB is set
- static ulong ComputeRegularKey (uint key)
- {
- return ComputeDummyKey (key) | 1;
- }
-
- // Reverse integer bits
- static ulong ComputeDummyKey (uint key)
- {
- return ((ulong)(((uint)reverseTable[key & 0xff] << 24) |
- ((uint)reverseTable[(key >> 8) & 0xff] << 16) |
- ((uint)reverseTable[(key >> 16) & 0xff] << 8) |
- ((uint)reverseTable[(key >> 24) & 0xff]))) << 1;
- }
-
- // Bucket storage is abstracted in a simple two-layer tree to avoid too much memory resize
- Node GetBucket (uint index)
- {
- if (index >= buckets.Length)
- return null;
- return buckets[index];
- }
-
- Node SetBucket (uint index, Node node)
- {
- try {
- slim.EnterReadLock ();
- CheckSegment (index, true);
-
- Interlocked.CompareExchange (ref buckets[index], node, null);
- return buckets[index];
- } finally {
- slim.ExitReadLock ();
- }
- }
-
- // When we run out of space for bucket storage, we use a lock-based array resize
- void CheckSegment (uint segment, bool readLockTaken)
- {
- if (segment < buckets.Length)
- return;
-
- if (readLockTaken)
- slim.ExitReadLock ();
- try {
- slim.EnterWriteLock ();
- while (segment >= buckets.Length)
- Array.Resize (ref buckets, buckets.Length * 2);
- } finally {
- slim.ExitWriteLock ();
- }
- if (readLockTaken)
- slim.EnterReadLock ();
- }
-
- Node ListSearch (ulong key, TKey subKey, ref Node left, Node h)
- {
- Node leftNodeNext = null, rightNode = null;
-
- do {
- Node t = h;
- Node tNext = t.Next;
- do {
- if (!tNext.Marked) {
- left = t;
- leftNodeNext = tNext;
- }
- t = tNext.Marked ? tNext.Next : tNext;
- if (t == tail)
- break;
-
- tNext = t.Next;
- } while (tNext.Marked || t.Key < key || (tNext.Key == key && !comparer.Equals (subKey, t.SubKey)));
-
- rightNode = t;
-
- if (leftNodeNext == rightNode) {
- if (rightNode != tail && rightNode.Next.Marked)
- continue;
- else
- return rightNode;
- }
-
- if (Interlocked.CompareExchange (ref left.Next, rightNode, leftNodeNext) == leftNodeNext) {
- if (rightNode != tail && rightNode.Next.Marked)
- continue;
- else
- return rightNode;
- }
- } while (true);
- }
-
- bool ListDelete (Node startPoint, ulong key, TKey subKey, out T data)
- {
- Node rightNode = null, rightNodeNext = null, leftNode = null;
- data = default (T);
- Node markedNode = null;
-
- do {
- rightNode = ListSearch (key, subKey, ref leftNode, startPoint);
- if (rightNode == tail || rightNode.Key != key || !comparer.Equals (subKey, rightNode.SubKey))
- return false;
-
- data = rightNode.Data;
- rightNodeNext = rightNode.Next;
-
- if (!rightNodeNext.Marked) {
- if (markedNode == null)
- markedNode = new Node ();
- markedNode.Init (rightNodeNext);
-
- if (Interlocked.CompareExchange (ref rightNode.Next, markedNode, rightNodeNext) == rightNodeNext)
- break;
- }
- } while (true);
-
- if (Interlocked.CompareExchange (ref leftNode.Next, rightNodeNext, rightNode) != rightNode)
- ListSearch (rightNode.Key, subKey, ref leftNode, startPoint);
-
- return true;
- }
-
- bool ListInsert (Node newNode, Node startPoint, out Node current, Func dataCreator)
- {
- ulong key = newNode.Key;
- Node rightNode = null, leftNode = null;
-
- do {
- rightNode = current = ListSearch (key, newNode.SubKey, ref leftNode, startPoint);
- if (rightNode != tail && rightNode.Key == key && comparer.Equals (newNode.SubKey, rightNode.SubKey))
- return false;
-
- newNode.Next = rightNode;
- if (dataCreator != null)
- newNode.Data = dataCreator ();
- if (Interlocked.CompareExchange (ref leftNode.Next, newNode, rightNode) == rightNode)
- return true;
- } while (true);
- }
-
- bool ListFind (ulong key, TKey subKey, Node startPoint, out Node data)
- {
- Node rightNode = null, leftNode = null;
- data = null;
-
- rightNode = ListSearch (key, subKey, ref leftNode, startPoint);
- data = rightNode;
-
- return rightNode != tail && rightNode.Key == key && comparer.Equals (subKey, rightNode.SubKey);
- }
-
- static readonly byte[] reverseTable = {
- 0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255
- };
-
- static readonly byte[] logTable = {
- 0xFF, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7
- };
-
- struct SimpleRwLock
- {
- const int RwWait = 1;
- const int RwWrite = 2;
- const int RwRead = 4;
-
- int rwlock;
-
- public void EnterReadLock ()
- {
- SpinWait sw = new SpinWait ();
- do {
- while ((rwlock & (RwWrite | RwWait)) > 0)
- sw.SpinOnce ();
-
- if ((Interlocked.Add (ref rwlock, RwRead) & (RwWait | RwWait)) == 0)
- return;
-
- Interlocked.Add (ref rwlock, -RwRead);
- } while (true);
- }
-
- public void ExitReadLock ()
- {
- Interlocked.Add (ref rwlock, -RwRead);
- }
-
- public void EnterWriteLock ()
- {
- SpinWait sw = new SpinWait ();
- do {
- int state = rwlock;
- if (state < RwWrite) {
- if (Interlocked.CompareExchange (ref rwlock, RwWrite, state) == state)
- return;
- state = rwlock;
- }
- // We register our interest in taking the Write lock (if upgradeable it's already done)
- while ((state & RwWait) == 0 && Interlocked.CompareExchange (ref rwlock, state | RwWait, state) != state)
- state = rwlock;
- // Before falling to sleep
- while (rwlock > RwWait)
- sw.SpinOnce ();
- } while (true);
- }
-
- public void ExitWriteLock ()
- {
- Interlocked.Add (ref rwlock, -RwWrite);
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Akavache/WP8/WP8EncryptionProvider.cs b/Akavache/WP8/WP8EncryptionProvider.cs
deleted file mode 100644
index 6168fc3cd..000000000
--- a/Akavache/WP8/WP8EncryptionProvider.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Reactive.Linq;
-using System.Security.Cryptography;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Akavache
-{
- public class WP8EncryptionProvider : IEncryptionProvider
- {
- public IObservable EncryptBlock(byte[] block)
- {
- return Observable.Return(ProtectedData.Protect(block, null));
- }
-
- public IObservable DecryptBlock(byte[] block)
- {
- return Observable.Return(ProtectedData.Unprotect(block, null));
- }
- }
-}
\ No newline at end of file
diff --git a/Akavache/akavache.nuspec b/Akavache/akavache.nuspec
deleted file mode 100644
index 3e7c18801..000000000
--- a/Akavache/akavache.nuspec
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-