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 @@ - - - - 4.1.2 - GitHub - Paul Betts - https://github.com/github/Akavache/blob/master/LICENSE - https://github.com/github/Akavache - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - akavache.core - Akavache.Core - false - An asynchronous, persistent key-value store for desktop and mobile applications on .NET - An asynchronous, persistent key-value store for desktop and mobile applications on .NET - Copyright GitHub© 2012 - - - - - - - - - - - - - - diff --git a/Akavache/packages.Akavache_MonoMac.config b/Akavache/packages.Akavache_MonoMac.config deleted file mode 100644 index 4a9b3d985..000000000 --- a/Akavache/packages.Akavache_MonoMac.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Akavache/packages.Akavache_Monodroid.config b/Akavache/packages.Akavache_Monodroid.config deleted file mode 100644 index 3c5bdf441..000000000 --- a/Akavache/packages.Akavache_Monodroid.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Akavache/packages.Akavache_Monotouch.config b/Akavache/packages.Akavache_Monotouch.config deleted file mode 100644 index 57992834c..000000000 --- a/Akavache/packages.Akavache_Monotouch.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Akavache/packages.Akavache_Net45.config b/Akavache/packages.Akavache_Net45.config deleted file mode 100644 index 289e41367..000000000 --- a/Akavache/packages.Akavache_Net45.config +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/Akavache/packages.Akavache_Portable.config b/Akavache/packages.Akavache_Portable.config deleted file mode 100644 index bd82c4ecb..000000000 --- a/Akavache/packages.Akavache_Portable.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Akavache/packages.Akavache_WP8.config b/Akavache/packages.Akavache_WP8.config deleted file mode 100644 index a8f725295..000000000 --- a/Akavache/packages.Akavache_WP8.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Akavache/packages.Akavache_WinRT.config b/Akavache/packages.Akavache_WinRT.config deleted file mode 100644 index c89cf4516..000000000 --- a/Akavache/packages.Akavache_WinRT.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Akavache/packages.Akavache_WinRT80.config b/Akavache/packages.Akavache_WinRT80.config deleted file mode 100644 index ff8d4e0cd..000000000 --- a/Akavache/packages.Akavache_WinRT80.config +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Akavache/packages.Akavache_XamarinIOS.config b/Akavache/packages.Akavache_XamarinIOS.config deleted file mode 100644 index 6ace4634b..000000000 --- a/Akavache/packages.Akavache_XamarinIOS.config +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Akavache/packages.Akavache_XamarinMac.config b/Akavache/packages.Akavache_XamarinMac.config deleted file mode 100644 index 81725106b..000000000 --- a/Akavache/packages.Akavache_XamarinMac.config +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Akavache_VSAll.sln b/Akavache_VSAll.sln deleted file mode 100644 index 2441362d0..000000000 --- a/Akavache_VSAll.sln +++ /dev/null @@ -1,192 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2013 -VisualStudioVersion = 12.0.30626.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_WinRT80", "Akavache.Mobile\Akavache.Mobile_WinRT80.csproj", "{47D34AB1-5188-4D8C-B24F-3151C67CC8CC}" -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 - Rebracer.xml = Rebracer.xml - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Deprecated", "Deprecated", "{403A7511-EACE-4DEA-9CE9-61592FB87C7B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_Monodroid", "Akavache.Mobile\Akavache.Mobile_Monodroid.csproj", "{192A477B-BB94-A3C1-F14E-E177EF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_Monotouch", "Akavache.Mobile\Akavache.Mobile_Monotouch.csproj", "{FA91337A-9E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Monodroid", "Akavache\Akavache_Monodroid.csproj", "{F92A477B-BB94-A3C1-084E-E177EF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Monotouch", "Akavache\Akavache_Monotouch.csproj", "{9091337C-9E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_WinRT", "Akavache.Mobile\Akavache.Mobile_WinRT.csproj", "{3CC2AFD6-D25F-4C8E-BD4B-31486F368365}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Deprecated", "Akavache.Deprecated\Akavache.Deprecated.csproj", "{1FE2625D-844E-4224-B6BC-4E9246AF9C62}" -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.Sqlite3", "Akavache.Sqlite3\Akavache.Sqlite3.csproj", "{241C47DF-CA8E-4296-AA03-2C48BB646ABD}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|Any CPU.ActiveCfg = Debug|x86 - {0306DEFB-B42E-48C4-8D03-2AC9E860ADC1}.Debug|Any CPU.Build.0 = 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}.Release|Any CPU.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 - {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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {A54279A3-3457-41DB-9166-67E05FD0E0B1}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {57655198-7A38-48A6-BF95-BE57B2C3D32D}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {9F13D088-7B83-4922-97DD-18C4CBBDDEAE}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {47D34AB1-5188-4D8C-B24F-3151C67CC8CC}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {3CC2AFD6-D25F-4C8E-BD4B-31486F368365}.Release|Mixed Platforms.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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Mixed Platforms.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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {74CCFBB6-7A56-461F-8DB6-93594BB4112E}.Release|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Debug|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Mixed Platforms.Build.0 = 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|Mixed Platforms.ActiveCfg = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Mixed Platforms.Build.0 = 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} - {47D34AB1-5188-4D8C-B24F-3151C67CC8CC} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1} - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1} - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1} - {3CC2AFD6-D25F-4C8E-BD4B-31486F368365} = {D3FCAC54-DE89-4D3D-AAFD-68A378A7A9F1} - {1FE2625D-844E-4224-B6BC-4E9246AF9C62} = {403A7511-EACE-4DEA-9CE9-61592FB87C7B} - {241C47DF-CA8E-4296-AA03-2C48BB646ABD} = {9E059863-7633-4919-B6A7-627D80186383} - EndGlobalSection -EndGlobal diff --git a/Akavache_XSAll.sln b/Akavache_XSAll.sln deleted file mode 100644 index 3e5ac1269..000000000 --- a/Akavache_XSAll.sln +++ /dev/null @@ -1,248 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Monotouch", "Akavache\Akavache_Monotouch.csproj", "{9091337C-9E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_Monotouch", "Akavache.Mobile\Akavache.Mobile_Monotouch.csproj", "{FA91337A-9E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Monodroid", "Akavache\Akavache_Monodroid.csproj", "{F92A477B-BB94-A3C1-084E-E177EF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_MonoMac", "Akavache\Akavache_MonoMac.csproj", "{3EF05CA8-ED19-489C-AF42-71C4B6507AE7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_Monodroid", "Akavache.Mobile\Akavache.Mobile_Monodroid.csproj", "{192A477B-BB94-A3C1-F14E-E177EF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Portable", "Akavache\Akavache_Portable.csproj", "{EB73ADDD-2FE9-44C0-A1AB-20709B979B64}" -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 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_XamarinIOS", "Akavache\Akavache_XamarinIOS.csproj", "{F091337A-1E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_XamarinMac", "Akavache\Akavache_XamarinMac.csproj", "{1EF05CAB-AD19-489C-AC42-71C4B6507AE7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {1EF05CAB-AD19-489C-AC42-71C4B6507AE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1EF05CAB-AD19-489C-AC42-71C4B6507AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1EF05CAB-AD19-489C-AC42-71C4B6507AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1EF05CAB-AD19-489C-AC42-71C4B6507AE7}.Release|Any CPU.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}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1FE2625D-844E-4224-B6BC-4E9246AF9C62}.Release|Any CPU.Build.0 = 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}.Release|Any CPU.ActiveCfg = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Any CPU.Build.0 = Release|Any CPU - {3EF05CA8-ED19-489C-AF42-71C4B6507AE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3EF05CA8-ED19-489C-AF42-71C4B6507AE7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3EF05CA8-ED19-489C-AF42-71C4B6507AE7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3EF05CA8-ED19-489C-AF42-71C4B6507AE7}.Release|Any CPU.Build.0 = Release|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9091337C-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = 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}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Any CPU.Build.0 = Release|Any CPU - {F091337A-1E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F091337A-1E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F091337A-1E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F091337A-1E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - Policies = $0 - $0.TextStylePolicy = $1 - $1.inheritsSet = null - $1.scope = text/x-csharp - $0.CSharpFormattingPolicy = $2 - $2.IndentSwitchBody = True - $2.AnonymousMethodBraceStyle = NextLine - $2.PropertyBraceStyle = NextLine - $2.PropertyGetBraceStyle = NextLine - $2.PropertySetBraceStyle = NextLine - $2.EventBraceStyle = NextLine - $2.EventAddBraceStyle = NextLine - $2.EventRemoveBraceStyle = NextLine - $2.StatementBraceStyle = NextLine - $2.ArrayInitializerBraceStyle = NextLine - $2.BeforeMethodDeclarationParentheses = False - $2.BeforeMethodCallParentheses = False - $2.BeforeConstructorDeclarationParentheses = False - $2.BeforeDelegateDeclarationParentheses = False - $2.NewParentheses = False - $2.inheritsSet = Mono - $2.inheritsScope = text/x-csharp - $2.scope = text/x-csharp - $0.TextStylePolicy = $3 - $3.inheritsSet = VisualStudio - $3.inheritsScope = text/plain - $3.scope = text/plain - $0.TextStylePolicy = $4 - $4.inheritsSet = null - $4.scope = application/config+xml - $0.XmlFormattingPolicy = $5 - $5.inheritsSet = null - $5.scope = application/config+xml - $0.TextStylePolicy = $6 - $6.inheritsSet = null - $6.scope = application/xml - $0.XmlFormattingPolicy = $7 - $7.inheritsSet = Mono - $7.inheritsScope = application/xml - $7.scope = application/xml - $0.StandardHeader = $8 - $8.Text = - $8.IncludeInNewFiles = True - $0.NameConventionPolicy = $9 - $9.Rules = $10 - $10.NamingRule = $11 - $11.Name = Namespaces - $11.AffectedEntity = Namespace - $11.VisibilityMask = VisibilityMask - $11.NamingStyle = PascalCase - $11.IncludeInstanceMembers = True - $11.IncludeStaticEntities = True - $10.NamingRule = $12 - $12.Name = Types - $12.AffectedEntity = Class, Struct, Enum, Delegate - $12.VisibilityMask = Public - $12.NamingStyle = PascalCase - $12.IncludeInstanceMembers = True - $12.IncludeStaticEntities = True - $10.NamingRule = $13 - $13.Name = Interfaces - $13.RequiredPrefixes = $14 - $14.String = I - $13.AffectedEntity = Interface - $13.VisibilityMask = Public - $13.NamingStyle = PascalCase - $13.IncludeInstanceMembers = True - $13.IncludeStaticEntities = True - $10.NamingRule = $15 - $15.Name = Attributes - $15.RequiredSuffixes = $16 - $16.String = Attribute - $15.AffectedEntity = CustomAttributes - $15.VisibilityMask = Public - $15.NamingStyle = PascalCase - $15.IncludeInstanceMembers = True - $15.IncludeStaticEntities = True - $10.NamingRule = $17 - $17.Name = Event Arguments - $17.RequiredSuffixes = $18 - $18.String = EventArgs - $17.AffectedEntity = CustomEventArgs - $17.VisibilityMask = Public - $17.NamingStyle = PascalCase - $17.IncludeInstanceMembers = True - $17.IncludeStaticEntities = True - $10.NamingRule = $19 - $19.Name = Exceptions - $19.RequiredSuffixes = $20 - $20.String = Exception - $19.AffectedEntity = CustomExceptions - $19.VisibilityMask = VisibilityMask - $19.NamingStyle = PascalCase - $19.IncludeInstanceMembers = True - $19.IncludeStaticEntities = True - $10.NamingRule = $21 - $21.Name = Methods - $21.AffectedEntity = Methods - $21.VisibilityMask = Protected, Public - $21.NamingStyle = PascalCase - $21.IncludeInstanceMembers = True - $21.IncludeStaticEntities = True - $10.NamingRule = $22 - $22.Name = Static Readonly Fields - $22.AffectedEntity = ReadonlyField - $22.VisibilityMask = Protected, Public - $22.NamingStyle = PascalCase - $22.IncludeInstanceMembers = False - $22.IncludeStaticEntities = True - $10.NamingRule = $23 - $23.Name = Fields - $23.AffectedEntity = Field - $23.VisibilityMask = Protected, Public - $23.NamingStyle = PascalCase - $23.IncludeInstanceMembers = True - $23.IncludeStaticEntities = True - $10.NamingRule = $24 - $24.Name = ReadOnly Fields - $24.AffectedEntity = ReadonlyField - $24.VisibilityMask = Protected, Public - $24.NamingStyle = PascalCase - $24.IncludeInstanceMembers = True - $24.IncludeStaticEntities = False - $10.NamingRule = $25 - $25.Name = Constant Fields - $25.AffectedEntity = ConstantField - $25.VisibilityMask = Protected, Public - $25.NamingStyle = PascalCase - $25.IncludeInstanceMembers = True - $25.IncludeStaticEntities = True - $10.NamingRule = $26 - $26.Name = Properties - $26.AffectedEntity = Property - $26.VisibilityMask = Protected, Public - $26.NamingStyle = PascalCase - $26.IncludeInstanceMembers = True - $26.IncludeStaticEntities = True - $10.NamingRule = $27 - $27.Name = Events - $27.AffectedEntity = Event - $27.VisibilityMask = Protected, Public - $27.NamingStyle = PascalCase - $27.IncludeInstanceMembers = True - $27.IncludeStaticEntities = True - $10.NamingRule = $28 - $28.Name = Enum Members - $28.AffectedEntity = EnumMember - $28.VisibilityMask = VisibilityMask - $28.NamingStyle = PascalCase - $28.IncludeInstanceMembers = True - $28.IncludeStaticEntities = True - $10.NamingRule = $29 - $29.Name = Parameters - $29.AffectedEntity = Parameter - $29.VisibilityMask = VisibilityMask - $29.NamingStyle = CamelCase - $29.IncludeInstanceMembers = True - $29.IncludeStaticEntities = True - $10.NamingRule = $30 - $30.Name = Type Parameters - $30.RequiredPrefixes = $31 - $31.String = T - $30.AffectedEntity = TypeParameter - $30.VisibilityMask = VisibilityMask - $30.NamingStyle = PascalCase - $30.IncludeInstanceMembers = True - $30.IncludeStaticEntities = True - EndGlobalSection -EndGlobal diff --git a/Akavache_XSNoMac.sln b/Akavache_XSNoMac.sln deleted file mode 100644 index 1a52ee74c..000000000 --- a/Akavache_XSNoMac.sln +++ /dev/null @@ -1,237 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Monotouch", "Akavache\Akavache_Monotouch.csproj", "{9091337A-9E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_Monotouch", "Akavache.Mobile\Akavache.Mobile_Monotouch.csproj", "{FA91337A-9E94-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Sqlite3_Monotouch", "Akavache.Sqlite3\Akavache.Sqlite3_Monotouch.csproj", "{9091337C-9E90-4DBD-801E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache_Monodroid", "Akavache\Akavache_Monodroid.csproj", "{F92A477B-BB94-A3C1-084E-E177EF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Sqlite3_Monodroid", "Akavache.Sqlite3\Akavache.Sqlite3_Monodroid.csproj", "{F92A477B-BB94-A3C1-084E-917AEF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Mobile_Monodroid", "Akavache.Mobile\Akavache.Mobile_Monodroid.csproj", "{192A477B-BB94-A3C1-F14E-E177EF9FEDB7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Http_Monotouch", "Akavache.Http\Akavache.Http_Monotouch.csproj", "{AA91337A-9E94-2DB1-8F1E-05E1FDA78FFC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Akavache.Http_Monodroid", "Akavache.Http\Akavache.Http_Monodroid.csproj", "{F92A477A-B294-ACC1-E841-E177EF9FEDB7}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {192A477B-BB94-A3C1-F14E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {9091337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9091337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9091337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9091337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {9091337C-9E90-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9091337C-9E90-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9091337C-9E90-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9091337C-9E90-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A091337A-FE94-0DB1-8F1E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {AA91337A-9E94-2DB1-8F1E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AA91337A-9E94-2DB1-8F1E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AA91337A-9E94-2DB1-8F1E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AA91337A-9E94-2DB1-8F1E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A4778-B294-1AC1-084E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A477A-B294-ACC1-E841-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A477A-B294-ACC1-E841-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A477A-B294-ACC1-E841-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A477A-B294-ACC1-E841-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A477B-BB94-A3C1-084E-917AEF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-917AEF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-917AEF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A477B-BB94-A3C1-084E-917AEF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F92A477B-BB94-A3C1-084E-E177EF9FEDB7}.Release|Any CPU.Build.0 = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA91337A-9E94-4DBD-801E-05E1FDA78FFC}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(MonoDevelopProperties) = preSolution - StartupItem = Akavache\Akavache_Monotouch.csproj - Policies = $0 - $0.TextStylePolicy = $1 - $1.inheritsSet = null - $1.scope = text/x-csharp - $0.CSharpFormattingPolicy = $2 - $2.IndentSwitchBody = True - $2.AnonymousMethodBraceStyle = NextLine - $2.PropertyBraceStyle = NextLine - $2.PropertyGetBraceStyle = NextLine - $2.PropertySetBraceStyle = NextLine - $2.EventBraceStyle = NextLine - $2.EventAddBraceStyle = NextLine - $2.EventRemoveBraceStyle = NextLine - $2.StatementBraceStyle = NextLine - $2.ArrayInitializerBraceStyle = NextLine - $2.BeforeMethodDeclarationParentheses = False - $2.BeforeMethodCallParentheses = False - $2.BeforeConstructorDeclarationParentheses = False - $2.BeforeDelegateDeclarationParentheses = False - $2.NewParentheses = False - $2.inheritsSet = Mono - $2.inheritsScope = text/x-csharp - $2.scope = text/x-csharp - $0.TextStylePolicy = $3 - $3.inheritsSet = VisualStudio - $3.inheritsScope = text/plain - $3.scope = text/plain - $0.TextStylePolicy = $4 - $4.inheritsSet = null - $4.scope = application/config+xml - $0.XmlFormattingPolicy = $5 - $5.inheritsSet = null - $5.scope = application/config+xml - $0.TextStylePolicy = $6 - $6.inheritsSet = null - $6.scope = application/xml - $0.XmlFormattingPolicy = $7 - $7.inheritsSet = Mono - $7.inheritsScope = application/xml - $7.scope = application/xml - $0.StandardHeader = $8 - $8.Text = - $8.IncludeInNewFiles = True - $0.NameConventionPolicy = $9 - $9.Rules = $10 - $10.NamingRule = $11 - $11.Name = Namespaces - $11.AffectedEntity = Namespace - $11.VisibilityMask = VisibilityMask - $11.NamingStyle = PascalCase - $11.IncludeInstanceMembers = True - $11.IncludeStaticEntities = True - $10.NamingRule = $12 - $12.Name = Types - $12.AffectedEntity = Class, Struct, Enum, Delegate - $12.VisibilityMask = Public - $12.NamingStyle = PascalCase - $12.IncludeInstanceMembers = True - $12.IncludeStaticEntities = True - $10.NamingRule = $13 - $13.Name = Interfaces - $13.RequiredPrefixes = $14 - $14.String = I - $13.AffectedEntity = Interface - $13.VisibilityMask = Public - $13.NamingStyle = PascalCase - $13.IncludeInstanceMembers = True - $13.IncludeStaticEntities = True - $10.NamingRule = $15 - $15.Name = Attributes - $15.RequiredSuffixes = $16 - $16.String = Attribute - $15.AffectedEntity = CustomAttributes - $15.VisibilityMask = Public - $15.NamingStyle = PascalCase - $15.IncludeInstanceMembers = True - $15.IncludeStaticEntities = True - $10.NamingRule = $17 - $17.Name = Event Arguments - $17.RequiredSuffixes = $18 - $18.String = EventArgs - $17.AffectedEntity = CustomEventArgs - $17.VisibilityMask = Public - $17.NamingStyle = PascalCase - $17.IncludeInstanceMembers = True - $17.IncludeStaticEntities = True - $10.NamingRule = $19 - $19.Name = Exceptions - $19.RequiredSuffixes = $20 - $20.String = Exception - $19.AffectedEntity = CustomExceptions - $19.VisibilityMask = VisibilityMask - $19.NamingStyle = PascalCase - $19.IncludeInstanceMembers = True - $19.IncludeStaticEntities = True - $10.NamingRule = $21 - $21.Name = Methods - $21.AffectedEntity = Methods - $21.VisibilityMask = Protected, Public - $21.NamingStyle = PascalCase - $21.IncludeInstanceMembers = True - $21.IncludeStaticEntities = True - $10.NamingRule = $22 - $22.Name = Static Readonly Fields - $22.AffectedEntity = ReadonlyField - $22.VisibilityMask = Protected, Public - $22.NamingStyle = PascalCase - $22.IncludeInstanceMembers = False - $22.IncludeStaticEntities = True - $10.NamingRule = $23 - $23.Name = Fields - $23.AffectedEntity = Field - $23.VisibilityMask = Protected, Public - $23.NamingStyle = PascalCase - $23.IncludeInstanceMembers = True - $23.IncludeStaticEntities = True - $10.NamingRule = $24 - $24.Name = ReadOnly Fields - $24.AffectedEntity = ReadonlyField - $24.VisibilityMask = Protected, Public - $24.NamingStyle = PascalCase - $24.IncludeInstanceMembers = True - $24.IncludeStaticEntities = False - $10.NamingRule = $25 - $25.Name = Constant Fields - $25.AffectedEntity = ConstantField - $25.VisibilityMask = Protected, Public - $25.NamingStyle = PascalCase - $25.IncludeInstanceMembers = True - $25.IncludeStaticEntities = True - $10.NamingRule = $26 - $26.Name = Properties - $26.AffectedEntity = Property - $26.VisibilityMask = Protected, Public - $26.NamingStyle = PascalCase - $26.IncludeInstanceMembers = True - $26.IncludeStaticEntities = True - $10.NamingRule = $27 - $27.Name = Events - $27.AffectedEntity = Event - $27.VisibilityMask = Protected, Public - $27.NamingStyle = PascalCase - $27.IncludeInstanceMembers = True - $27.IncludeStaticEntities = True - $10.NamingRule = $28 - $28.Name = Enum Members - $28.AffectedEntity = EnumMember - $28.VisibilityMask = VisibilityMask - $28.NamingStyle = PascalCase - $28.IncludeInstanceMembers = True - $28.IncludeStaticEntities = True - $10.NamingRule = $29 - $29.Name = Parameters - $29.AffectedEntity = Parameter - $29.VisibilityMask = VisibilityMask - $29.NamingStyle = CamelCase - $29.IncludeInstanceMembers = True - $29.IncludeStaticEntities = True - $10.NamingRule = $30 - $30.Name = Type Parameters - $30.RequiredPrefixes = $31 - $31.String = T - $30.AffectedEntity = TypeParameter - $30.VisibilityMask = VisibilityMask - $30.NamingStyle = PascalCase - $30.IncludeInstanceMembers = True - $30.IncludeStaticEntities = True - EndGlobalSection -EndGlobal diff --git a/BuildPC.cmd b/BuildPC.cmd deleted file mode 100644 index c5482bd4d..000000000 --- a/BuildPC.cmd +++ /dev/null @@ -1 +0,0 @@ -msbuild Akavache.sln /p:Configuration=Release /p:Platform="Any CPU" \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 000000000..f3a1be431 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,50 @@ +# Contributor Code of Conduct + +As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities. + +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments +* Public or private harassment +* Publishing other's private information, such as physical or electronic + addresses, without explicit permission +* Other unethical or unprofessional conduct + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +By adopting this Code of Conduct, project maintainers commit themselves to +fairly and consistently applying these principles to every aspect of managing +this project. Project maintainers who do not follow or enforce the Code of +Conduct may be permanently removed from the project team. + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting a project maintainer at paul@paulbetts.org. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. Maintainers are +obligated to maintain confidentiality with regard to the reporter of an +incident. + + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.3.0, available at +[http://contributor-covenant.org/version/1/3/0/][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/3/0/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..40063f246 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,200 @@ +# Contributing to Akavache + +We'd love for you to contribute to our source code and to make Akavache even better than it is +today! Here are the guidelines we'd like you to follow: + + - [Code of Conduct](#coc) + - [Question or Problem?](#question) + - [Issues and Bugs](#issue) + - [Feature Requests](#feature) + - [Submission Guidelines](#submit) + - [Coding Rules](#rules) + - [Commit Message Guidelines](#commit) + +## Code of Conduct + +Help us keep the project open and inclusive. Please read and follow our [Code of Conduct][coc]. + +## Got a Question or Problem? + +If you have questions about how to use Akavache, please direct these to [StackOverflow](https://stackoverflow.com/questions/tagged/Akavache). The project maintainers hang out in this [Slack](https://github.com/reactiveui/reactiveui#slack) channel. + +## Found an Issue? + +If you find a bug in the source code or a mistake in the documentation, you can help us by +submitting an issue to our [GitHub Repository](https://github.com/akavache/akavache). Even better you can submit a Pull Request +with a fix. + +**Please see the [Submission Guidelines](#submit) below.** + +## Want a Feature? + +You can request a new feature by submitting an issue to our [GitHub Repository](https://github.com/akavache/Akavache). If you +would like to implement a new feature then consider what kind of change it is: + +* **Major Changes** that you wish to contribute to the project should be discussed first in [Slack](https://github.com/reactiveui/reactiveui#slack) so that we can better coordinate our efforts, + prevent duplication of work, and help you to craft the change so that it is successfully accepted + into the project. +* **Small Changes** can be crafted and submitted to the [GitHub Repository](https://github.com/akavache/Akavache) as a Pull + Request. + +## Submission Guidelines + +### Submitting an Issue + +If your issue appears to be a bug, and hasn't been reported, open a new issue. Help us to maximize +the effort we can spend fixing issues and adding new features, by not reporting duplicate issues. + +Providing the following information will increase the chances of your issue being dealt with +quickly: + +* **Overview of the Issue** - if an error is being thrown a stack trace helps +* **Motivation for or Use Case** - explain why this is a bug for you +* **Akavache Version(s)** - is it a regression? +* **Operating System** - is this a problem with all browsers or only specific ones? +* **Reproduce the Error** - provide a example or an unambiguous set of steps. +* **Related Issues** - has a similar issue been reported before? +* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be + causing the problem (line of code or commit) + +**If you get help, help others. Good karma rulez!** + +### Submitting a Pull Request +Before you submit your pull request consider the following guidelines: + +* Search [GitHub](https://github.com/akavache/akavache/pulls) for an open or closed Pull Request + that relates to your submission. You don't want to duplicate effort. +* Make your changes in a new git branch: + + ```shell + git checkout -b my-fix-branch master + ``` + +* Create your patch, **including appropriate test cases**. +* Follow our [Coding Rules](#rules). +* Run the test suite, as described below. +* Commit your changes using a descriptive commit message that follows our + [commit message conventions](#commit). + + ```shell + git commit -a + ``` + Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files. + +* Build your changes locally to ensure all the tests pass: + + ```shell + build.cmd + ``` + +* Push your branch to GitHub: + + ```shell + git push origin my-fix-branch + ``` + +In GitHub, send a pull request to `akavache:master`. + +If we suggest changes, then: + +* Make the required updates. +* Re-run the test suite to ensure tests are still passing. +* Commit your changes to your branch (e.g. `my-fix-branch`). +* Push the changes to your GitHub repository (this will update your Pull Request). + +If the PR gets too outdated we may ask you to rebase and force push to update the PR: + +```shell +git rebase master -i +git push origin my-fix-branch -f +``` + +_WARNING: Squashing or reverting commits and force-pushing thereafter may remove GitHub comments +on code that were previously made by you or others in your commits. Avoid any form of rebasing +unless necessary._ + +That's it! Thank you for your contribution! + +#### After your pull request is merged + +After your pull request is merged, you can safely delete your branch and pull the changes +from the main (upstream) repository: + +* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows: + + ```shell + git push origin --delete my-fix-branch + ``` + +* Check out the master branch: + + ```shell + git checkout master -f + ``` + +* Delete the local branch: + + ```shell + git branch -D my-fix-branch + ``` + +* Update your master with the latest upstream version: + + ```shell + git pull --ff upstream master + ``` + +## Coding Rules + +To ensure consistency throughout the source code, keep these rules in mind as you are working: + +* All features or bug fixes **must be tested** by one or more unit tests. +* All public API methods **must be documented** with XML documentation. + +## Git Commit Guidelines + +Each commit message consists of a **header**, a **body** and a **footer**. The header has a special +format that includes a **type** and a **subject**: + +``` +: + + +