From f0a7f131d2fb3391dcfb05102d3b0427ab1185c2 Mon Sep 17 00:00:00 2001 From: Austin Harris Date: Sun, 27 Sep 2026 23:51:35 -0600 Subject: [PATCH] AUS-1013: package-link check, API surface dumps and an upgrading note .github/scripts/check_package_links.py downloads the four packages from nuget.org, requests every absolute URL in projectUrl, the repository url, the release notes and the README, and builds a scratch project that prints the ObsoleteAttribute on the three obsolete members so each UrlFormat, formatted with its DiagnosticId, is fetched and its anchor asserted in the page. Sample addresses (localhost, 127.0.0.1, .test, example.com) in the READMEs are skipped. .github/scripts/api_surface dumps the public API of the four assemblies as sorted text; docs/api-surface holds the dumps for 2.0.0-preview.1 and 2.0.0-preview.3. The preview.3 file is the surface frozen for 2.0.0. docs/upgrading.md gains the one step the upgrade smoke test needed that the guide did not state: Newtonsoft.Json is no longer a dependency of the core, so code that handles JObject or JArray adds the Newtonsoft package and selects its serializer. --- .github/scripts/api_surface/ApiSurface.csproj | 16 + .github/scripts/api_surface/Program.cs | 87 +++ .github/scripts/check_package_links.py | 249 +++++++ docs/api-surface/2.0.0-preview.1.txt | 600 +++++++++++++++++ docs/api-surface/2.0.0-preview.3.txt | 612 ++++++++++++++++++ docs/api-surface/README.md | 13 + docs/upgrading.md | 1 + 7 files changed, 1578 insertions(+) create mode 100644 .github/scripts/api_surface/ApiSurface.csproj create mode 100644 .github/scripts/api_surface/Program.cs create mode 100644 .github/scripts/check_package_links.py create mode 100644 docs/api-surface/2.0.0-preview.1.txt create mode 100644 docs/api-surface/2.0.0-preview.3.txt create mode 100644 docs/api-surface/README.md diff --git a/.github/scripts/api_surface/ApiSurface.csproj b/.github/scripts/api_surface/ApiSurface.csproj new file mode 100644 index 0000000..1500202 --- /dev/null +++ b/.github/scripts/api_surface/ApiSurface.csproj @@ -0,0 +1,16 @@ + + + Exe + net10.0 + disable + enable + 2.0.0-preview.3 + $(NoWarn);CS0618;JSONRPC0001;JSONRPC0002;JSONRPC0003 + + + + + + + + diff --git a/.github/scripts/api_surface/Program.cs b/.github/scripts/api_surface/Program.cs new file mode 100644 index 0000000..d972cd5 --- /dev/null +++ b/.github/scripts/api_surface/Program.cs @@ -0,0 +1,87 @@ +using System.Reflection; +using System.Text; + +// Dumps the public API surface of the four assemblies as sorted text, one member per line, so two versions diff. +var names = new[] { "AustinHarris.JsonRpc", "AustinHarris.JsonRpc.AspNetCore", "AustinHarris.JsonRpc.SystemTextJson", "AustinHarris.JsonRpc.Newtonsoft" }; +var sb = new StringBuilder(); +foreach (var name in names) +{ + var asm = Assembly.Load(name); + var an = asm.GetName(); + sb.AppendLine($"## {an.Name} {an.Version} PublicKeyToken={Convert.ToHexString(an.GetPublicKeyToken() ?? Array.Empty()).ToLowerInvariant()}"); + var informational = asm.GetCustomAttribute()?.InformationalVersion ?? ""; + sb.AppendLine($" informational={informational.Split('+')[0]}"); + foreach (var t in asm.GetExportedTypes().OrderBy(t => t.FullName, StringComparer.Ordinal)) + { + if (t.IsNested && !(t.IsNestedPublic || t.IsNestedFamily || t.IsNestedFamORAssem)) continue; + string kind = t.IsInterface ? "interface" : t.IsEnum ? "enum" : t.IsValueType ? "struct" : t.IsSubclassOf(typeof(Delegate)) ? "delegate" : t.IsAbstract && t.IsSealed ? "static class" : t.IsAbstract ? "abstract class" : t.IsSealed ? "sealed class" : "class"; + var bases = new List(); + if (t.BaseType != null && t.BaseType != typeof(object) && t.BaseType != typeof(ValueType) && t.BaseType != typeof(Enum) && t.BaseType != typeof(MulticastDelegate)) bases.Add(t.BaseType.FullName ?? t.BaseType.Name); + bases.AddRange(t.GetInterfaces().Where(i => i.IsPublic || i.IsNestedPublic).Select(i => i.FullName ?? i.Name).OrderBy(x => x, StringComparer.Ordinal)); + sb.AppendLine($"{kind} {t.FullName}{(bases.Count > 0 ? " : " + string.Join(", ", bases) : "")}"); + if (t.IsEnum) + { + foreach (var v in Enum.GetNames(t)) sb.AppendLine($" {v} = {Convert.ToInt64(Enum.Parse(t, v))}"); + continue; + } + var flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly; + var lines = new List(); + foreach (var m in t.GetMembers(flags)) + { + if (!Visible(m)) continue; + if (m is MethodInfo mi && mi.IsSpecialName) continue; // property/event accessors, operators listed via the property + string prefix = m switch { ConstructorInfo => "ctor", MethodInfo => "method", PropertyInfo => "property", FieldInfo => "field", EventInfo => "event", Type => "nested", _ => m.MemberType.ToString() }; + string text = m switch + { + PropertyInfo p => $"{TypeName(p.PropertyType)} {p.Name}{Indexer(p)} {{ {(p.GetMethod != null && Visible(p.GetMethod) ? "get; " : "")}{(p.SetMethod != null && Visible(p.SetMethod) ? "set; " : "")}}}", + FieldInfo f => $"{(f.IsStatic ? "static " : "")}{(f.IsInitOnly ? "readonly " : "")}{(f.IsLiteral ? "const " : "")}{TypeName(f.FieldType)} {f.Name}", + EventInfo e => $"{TypeName(e.EventHandlerType)} {e.Name}", + ConstructorInfo c => $"{(c.IsStatic ? "static " : "")}{t.Name}({Params(c.GetParameters())})", + MethodInfo mm => $"{(mm.IsStatic ? "static " : "")}{(mm.IsAbstract ? "abstract " : mm.IsVirtual && !mm.IsFinal ? "virtual " : "")}{TypeName(mm.ReturnType)} {mm.Name}{Generic(mm)}({Params(mm.GetParameters())})", + Type nt => nt.Name, + _ => m.Name, + }; + string access = Access(m); + lines.Add($" {access} {prefix} {text}"); + } + foreach (var l in lines.OrderBy(x => x, StringComparer.Ordinal)) sb.AppendLine(l); + } +} +var outPath = args.Length > 0 ? args[0] : "api.txt"; +File.WriteAllText(outPath, sb.ToString()); +Console.WriteLine("written " + outPath); + +static bool Visible(MemberInfo m) => m switch +{ + MethodBase mb => mb.IsPublic || mb.IsFamily || mb.IsFamilyOrAssembly, + FieldInfo f => f.IsPublic || f.IsFamily || f.IsFamilyOrAssembly, + PropertyInfo p => (p.GetMethod != null && Visible(p.GetMethod)) || (p.SetMethod != null && Visible(p.SetMethod)), + EventInfo e => e.AddMethod != null && Visible(e.AddMethod), + Type t => t.IsNestedPublic || t.IsNestedFamily || t.IsNestedFamORAssem, + _ => false, +}; +static string Access(MemberInfo m) => m switch +{ + MethodBase mb => mb.IsPublic ? "public" : "protected", + FieldInfo f => f.IsPublic ? "public" : "protected", + PropertyInfo p => (p.GetMethod?.IsPublic ?? false) || (p.SetMethod?.IsPublic ?? false) ? "public" : "protected", + EventInfo e => e.AddMethod.IsPublic ? "public" : "protected", + Type t => t.IsNestedPublic ? "public" : "protected", + _ => "?", +}; +static string TypeName(Type t) +{ + if (t.IsByRef) return "ref " + TypeName(t.GetElementType()); + if (t.IsArray) return TypeName(t.GetElementType()) + "[]"; + if (t.IsGenericParameter) return t.Name; + if (t.IsGenericType) + { + var def = t.GetGenericTypeDefinition(); + string baseName = (def.FullName ?? def.Name).Split('`')[0]; + return baseName + "<" + string.Join(", ", t.GetGenericArguments().Select(TypeName)) + ">"; + } + return t.FullName ?? t.Name; +} +static string Params(ParameterInfo[] ps) => string.Join(", ", ps.Select(p => $"{(p.IsOut ? "out " : p.ParameterType.IsByRef && p.IsIn ? "in " : "")}{TypeName(p.ParameterType)} {p.Name}{(p.HasDefaultValue ? " = " + (p.DefaultValue ?? "null") : "")}")); +static string Generic(MethodInfo m) => m.IsGenericMethodDefinition ? "<" + string.Join(", ", m.GetGenericArguments().Select(a => a.Name)) + ">" : ""; +static string Indexer(PropertyInfo p) { var ps = p.GetIndexParameters(); return ps.Length == 0 ? "" : "[" + Params(ps) + "]"; } diff --git a/.github/scripts/check_package_links.py b/.github/scripts/check_package_links.py new file mode 100644 index 0000000..df91466 --- /dev/null +++ b/.github/scripts/check_package_links.py @@ -0,0 +1,249 @@ +#!/usr/bin/env python3 +"""Checks that a published version of the four packages points at pages that exist. + +For each of AustinHarris.JsonRpc, .AspNetCore, .SystemTextJson and .Newtonsoft at the given version, the script +downloads the .nupkg from nuget.org, reads projectUrl, the repository url, releaseNotes and the package README out +of the .nuspec, and requests every absolute http(s) URL found in them, expecting a 2xx. It then builds a scratch +console project against the core package, prints the ObsoleteAttribute on Handler.RegisterFuction, +Handler.UnRegisterFunction and Config.SetBeforeProcessHandler as the published assembly carries it, formats each +UrlFormat with its DiagnosticId, requests the page and asserts the anchor id is in the HTML. + +Usage: python3 .github/scripts/check_package_links.py 2.0.0-preview.3 [--keep] (exit 1 on any failure) + +The check runs against nuget.org, so it is a release step (after the publish workflow has run and the flat +container lists the version, which lags the push by a few minutes), not a pull-request gate. +""" +import io +import os +import re +import shutil +import subprocess +import sys +import tempfile +import urllib.error +import urllib.request +import xml.etree.ElementTree as ET +import zipfile + +PACKAGES = ["AustinHarris.JsonRpc", "AustinHarris.JsonRpc.AspNetCore", "AustinHarris.JsonRpc.SystemTextJson", + "AustinHarris.JsonRpc.Newtonsoft"] +FLAT = "https://api.nuget.org/v3-flatcontainer/{id}/{version}/{id}.{version}.nupkg" +OBSOLETE = { # member -> expected diagnostic id + "Handler.RegisterFuction": "JSONRPC0002", + "Handler.UnRegisterFunction": "JSONRPC0003", + "Config.SetBeforeProcessHandler": "JSONRPC0001", +} +URL = re.compile(r"https?://[^\s<>()\"'`\]]+") +# Sample addresses in the READMEs (a host the reader runs) are not links to check. +LOCAL = re.compile(r"^https?://(localhost|127\.0\.0\.1|\[::1\]|[^/]+\.(test|example|localhost)|example\.(com|org|net))(:\d+)?(/|$)", re.I) +HEADERS = {"User-Agent": "JSON-RPC.NET package-link check (+https://github.com/Astn/JSON-RPC.NET)"} + +PROGRAM = r""" +using System; +using System.Linq; +using System.Reflection; +using AustinHarris.JsonRpc; + +static class Program +{ + static void Main() + { + const BindingFlags All = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance; + foreach (var m in typeof(Handler).GetMethods(All).Where(m => m.Name == "RegisterFuction" || m.Name == "UnRegisterFunction") + .Concat(typeof(Config).GetMethods(All).Where(m => m.Name == "SetBeforeProcessHandler"))) + foreach (var a in m.GetCustomAttributes()) + Console.WriteLine(m.DeclaringType.Name + "." + m.Name + "|" + a.DiagnosticId + "|" + a.UrlFormat + "|" + a.Message); + Console.WriteLine("assembly|" + typeof(Handler).Assembly.GetName().FullName); + } +} +""" + +PROJECT = """ + + Exe + net8.0 + disable + + + + + +""" + +NUGET_CONFIG = """ + + + + + + +""" + +failures = [] + + +def fail(message): + failures.append(message) + print("FAIL " + message) + + +def fetch(url, binary=False): + req = urllib.request.Request(url, headers=HEADERS) + with urllib.request.urlopen(req, timeout=60) as r: + data = r.read() + return (r.status, data if binary else data.decode("utf-8", "replace")) + + +def status(url): + try: + return fetch(url)[0] + except urllib.error.HTTPError as e: + return e.code + except Exception as e: # DNS, TLS, timeout + return str(e) + + +def text(node): + return (node.text or "").strip() if node is not None else "" + + +def strip_trailing(url): + return url.rstrip(".,;:!?)") + + +def check_package(package, version, workdir): + print("== " + package + " " + version) + url = FLAT.format(id=package.lower(), version=version.lower()) + try: + code, data = fetch(url, binary=True) + except urllib.error.HTTPError as e: + fail("%s: nupkg download %s -> %s" % (package, url, e.code)) + return + path = os.path.join(workdir, package + "." + version + ".nupkg") + with open(path, "wb") as f: + f.write(data) + z = zipfile.ZipFile(io.BytesIO(data)) + spec_name = [n for n in z.namelist() if n.endswith(".nuspec")][0] + root = ET.fromstring(z.read(spec_name)) + ns = {"n": root.tag[1:].split("}")[0]} if root.tag.startswith("{") else {} + meta = root.find("n:metadata", ns) if ns else root.find("metadata") + + def field(name): + return text(meta.find("n:" + name, ns) if ns else meta.find(name)) + + spec_version = field("version") + if spec_version != version: + fail("%s: nuspec version %s, expected %s" % (package, spec_version, version)) + project_url = field("projectUrl") + repo = meta.find("n:repository", ns) if ns else meta.find("repository") + repo_url = repo.get("url") if repo is not None else "" + notes = field("releaseNotes") + readme_name = field("readme") + if not project_url: + fail(package + ": no projectUrl") + if not repo_url: + fail(package + ": no repository url") + if not notes: + fail(package + ": no releaseNotes") + if not readme_name: + fail(package + ": no readme") + readme = "" + else: + try: + readme = z.read(readme_name).decode("utf-8", "replace") + except KeyError: + fail("%s: readme %s not in the package" % (package, readme_name)) + readme = "" + urls = [] + for source, body in (("projectUrl", project_url), ("repository", repo_url), ("releaseNotes", notes), ("README", readme)): + for u in URL.findall(body): + u = strip_trailing(u) + if LOCAL.match(u): + continue + if u not in [x[1] for x in urls]: + urls.append((source, u)) + print(" %d urls" % len(urls)) + for source, u in urls: + s = status(u) + ok = isinstance(s, int) and 200 <= s < 300 + print(" %s %s (%s)" % ("ok " if ok else "FAIL", u, source)) + if not ok: + fail("%s: %s from %s -> %s" % (package, u, source, s)) + + +def check_obsoletions(version, workdir): + print("== obsolete members in the published core assembly") + scratch = os.path.join(workdir, "obsoletions") + os.makedirs(scratch, exist_ok=True) + with open(os.path.join(scratch, "Obsoletions.csproj"), "w", encoding="utf-8") as f: + f.write(PROJECT.format(version=version)) + with open(os.path.join(scratch, "Program.cs"), "w", encoding="utf-8") as f: + f.write(PROGRAM) + with open(os.path.join(scratch, "nuget.config"), "w", encoding="utf-8") as f: + f.write(NUGET_CONFIG) + env = dict(os.environ, NUGET_PACKAGES=os.path.join(workdir, "packages"), DOTNET_CLI_TELEMETRY_OPTOUT="1", DOTNET_NOLOGO="1") + run = subprocess.run(["dotnet", "run", "--project", scratch, "-c", "Release"], capture_output=True, text=True, env=env) + if run.returncode != 0: + fail("scratch project failed:\n" + run.stdout[-3000:] + run.stderr[-3000:]) + return + seen = {} + for line in run.stdout.splitlines(): + parts = line.strip().split("|") + if parts[0] == "assembly": + print(" " + parts[1]) + if "PublicKeyToken=null" in parts[1]: + fail("core assembly is not strong-named: " + parts[1]) + continue + if len(parts) != 4: + continue + member, diag_id, url_format, message = parts + seen.setdefault(member, set()).add((diag_id, url_format)) + for member, expected in OBSOLETE.items(): + if member not in seen: + fail(member + ": no ObsoleteAttribute found") + continue + for diag_id, url_format in seen[member]: + if diag_id != expected: + fail("%s: DiagnosticId %s, expected %s" % (member, diag_id, expected)) + continue + if not url_format: + fail(member + ": no UrlFormat") + continue + page = url_format.format(diag_id) + anchor = page.split("#", 1)[1] if "#" in page else "" + try: + code, html = fetch(page.split("#", 1)[0]) + except urllib.error.HTTPError as e: + fail("%s: %s -> %s" % (member, page, e.code)) + continue + has_anchor = anchor and ('id="%s"' % anchor) in html + print(" %s %s -> %s %s" % ("ok " if has_anchor else "FAIL", member, page, "anchor present" if has_anchor else "anchor missing")) + if not has_anchor: + fail("%s: anchor %s not in %s" % (member, anchor, page)) + + +def main(): + args = [a for a in sys.argv[1:] if not a.startswith("--")] + keep = "--keep" in sys.argv + if len(args) != 1: + print(__doc__) + sys.exit(2) + version = args[0] + workdir = tempfile.mkdtemp(prefix="jsonrpc-links-") + try: + for package in PACKAGES: + check_package(package, version, workdir) + check_obsoletions(version, workdir) + finally: + if keep: + print("kept " + workdir) + else: + shutil.rmtree(workdir, ignore_errors=True) + if failures: + print("\n%d failure(s)" % len(failures)) + sys.exit(1) + print("\nall package links and obsoletion anchors resolve for " + version) + + +if __name__ == "__main__": + main() diff --git a/docs/api-surface/2.0.0-preview.1.txt b/docs/api-surface/2.0.0-preview.1.txt new file mode 100644 index 0000000..796ff33 --- /dev/null +++ b/docs/api-surface/2.0.0-preview.1.txt @@ -0,0 +1,600 @@ +## AustinHarris.JsonRpc 2.0.0.0 PublicKeyToken= + informational=2.0.0-preview.1 +class AustinHarris.JsonRpc.Client.InProcessClient + public ctor InProcessClient() + public method static System.Threading.Tasks.Task Invoke(System.String jsonrpc) +static class AustinHarris.JsonRpc.Config + public method static System.Void SetBeforeProcessHandler(System.String sessionId, AustinHarris.JsonRpc.PreProcessHandler handler) + public method static System.Void SetErrorHandler(System.Func handler) + public method static System.Void SetErrorHandler(System.String sessionId, System.Func handler) + public method static System.Void SetParseErrorHandler(System.Func handler) + public method static System.Void SetParseErrorHandler(System.String sessionId, System.Func handler) + public method static System.Void SetPostProcessHandler(AustinHarris.JsonRpc.PostProcessHandler handler) + public method static System.Void SetPostProcessHandler(System.String sessionId, AustinHarris.JsonRpc.PostProcessHandler handler) + public method static System.Void SetPreProcessHandler(AustinHarris.JsonRpc.PreProcessHandler handler) + public method static System.Void SetPreProcessHandler(System.String sessionId, AustinHarris.JsonRpc.PreProcessHandler handler) + public method static System.Void SetSerializer(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer) + public method static System.Void SetSerializer(System.String sessionId, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer) + public method static System.Void SetVersionPolicy(System.String sessionId, System.Nullable policy) + public property AustinHarris.JsonRpc.JsonRpcVersionPolicy VersionPolicy { get; set; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcSerializer Serializer { get; set; } + public property System.Boolean IncludeExceptionDetails { get; set; } +sealed class AustinHarris.JsonRpc.Handler + public method AustinHarris.JsonRpc.JsonResponse Handle(AustinHarris.JsonRpc.JsonRequest Rpc, System.Object RpcContext = null) + public method System.Void Destroy() + public method System.Void RegisterFuction(System.String methodName, System.Collections.Generic.Dictionary parameterNameTypeMapping, System.Collections.Generic.Dictionary parameterNameDefaultValueMapping, System.Delegate implementation) + public method System.Void SetPostProcessHandler(AustinHarris.JsonRpc.PostProcessHandler handler) + public method System.Void SetPreProcessHandler(AustinHarris.JsonRpc.PreProcessHandler handler) + public method System.Void UnRegisterFunction(System.String methodName) + public method static AustinHarris.JsonRpc.Handler GetSessionHandler() + public method static AustinHarris.JsonRpc.Handler GetSessionHandler(System.String sessionId) + public method static AustinHarris.JsonRpc.JsonRpcException RpcGetAndRemoveRpcException() + public method static AustinHarris.JsonRpc.JsonRpcRequestId RpcRequestId() + public method static AustinHarris.JsonRpc.Serialization.JsonRpcIdKind RpcRequestIdKind() + public method static System.Object RpcContext() + public method static System.ReadOnlySpan RpcRequestIdRaw() + public method static System.String DefaultSessionId() + public method static System.Void DestroySession(System.String sessionId) + public method static System.Void RegisterInstance(System.String sessionID, System.Object instance) + public method static System.Void RpcSetException(AustinHarris.JsonRpc.JsonRpcException exception) + public property AustinHarris.JsonRpc.Handler DefaultHandler { get; } + public property AustinHarris.JsonRpc.SMD MetaData { get; set; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcSerializer Serializer { get; set; } + public property System.Nullable VersionPolicy { get; set; } + public property System.String SessionId { get; } +delegate AustinHarris.JsonRpc.Invocation.BoxedInvoker : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor BoxedInvoker(System.Object object, System.IntPtr method) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map, System.AsyncCallback callback, System.Object object) + public method virtual System.Object EndInvoke(System.IAsyncResult result) + public method virtual System.Object Invoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map) +sealed class AustinHarris.JsonRpc.Invocation.RpcMethod + public ctor RpcMethod() + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromDelegate(System.String name, System.Delegate implementation, System.String[] parameterNames = null, System.Collections.Generic.IDictionary defaults = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromDelegate(System.String name, System.Delegate implementation, System.String[] parameterNames, System.Collections.Generic.IDictionary defaults) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromMethod(System.String name, System.Reflection.MethodInfo method, System.Object target, System.String[] parameterNames = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromMethod(System.String name, System.Reflection.MethodInfo method, System.Object target, System.String[] parameterNames) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromMethod(System.String name, System.Reflection.MethodInfo method, System.Type serviceType, System.Func resolve, System.String[] parameterNames = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public property AustinHarris.JsonRpc.Invocation.BoxedInvoker InvokeBoxed { get; } + public property AustinHarris.JsonRpc.Invocation.RpcParameter[] Parameters { get; } + public property AustinHarris.JsonRpc.Invocation.StreamingInvoker Invoke { get; } + public property AustinHarris.JsonRpc.RpcContextFlow ContextFlow { get; } + public property System.Boolean ExpectsRefException { get; } + public property System.Boolean IsAsync { get; } + public property System.Int32 DefaultCount { get; } + public property System.String Name { get; } + public property System.Type ResultType { get; } + public property System.Type ReturnType { get; } +sealed class AustinHarris.JsonRpc.Invocation.RpcParameter + public property System.Boolean HasDefault { get; } + public property System.Object DefaultValue { get; } + public property System.String Name { get; } + public property System.Type Type { get; } +delegate AustinHarris.JsonRpc.Invocation.StreamingInvoker : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor StreamingInvoker(System.Object object, System.IntPtr method) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.Buffers.IBufferWriter output, System.AsyncCallback callback, System.Object object) + public method virtual System.Void EndInvoke(System.IAsyncResult result) + public method virtual System.Void Invoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.Buffers.IBufferWriter output) +struct AustinHarris.JsonRpc.Jsmn.JsmnCursor + public ctor JsmnCursor(System.ReadOnlySpan doc, AustinHarris.JsonRpc.Jsmn.JsmnToken[] tokens, System.Int32 index) + public field AustinHarris.JsonRpc.Jsmn.JsmnToken[] Tokens + public field System.Int32 Index + public field System.ReadOnlySpan Doc + public method System.Int32 Next() + public property System.Boolean IsNull { get; } + public property System.ReadOnlySpan Text { get; } + public property ref AustinHarris.JsonRpc.Jsmn.JsmnToken Token { get; } +static class AustinHarris.JsonRpc.Jsmn.JsmnMapper + public method static System.Boolean ReadBoolean(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Char ReadChar(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.DateTime ReadDateTime(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Decimal ReadDecimal(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Double ReadDouble(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Int32 ReadInt32(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Int64 ReadInt64(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Object ReadObject(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c, System.Type type) + public method static System.Single ReadSingle(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.String ReadString(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.UInt64 ReadUInt64(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Void WriteObject(System.Buffers.IBufferWriter w, System.Object value, System.Type declaredType, System.Int32 depth) +static class AustinHarris.JsonRpc.Jsmn.JsmnReader`1 + public field static readonly AustinHarris.JsonRpc.Jsmn.JsmnTokenReader Read +sealed class AustinHarris.JsonRpc.Jsmn.JsmnRequestReader : AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader + public ctor JsmnRequestReader(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer) + public method virtual System.Boolean ParamIsNull(System.Int32 i) + public method virtual System.Boolean Select(System.Int32 index) + public method virtual System.Boolean TryParse(System.ReadOnlyMemory utf8Document, out ref System.String error) + public method virtual System.Object ReadParam(System.Int32 i, System.Type type) + public method virtual System.ReadOnlySpan ParamNameUtf8(System.Int32 i) + public method virtual System.ReadOnlySpan ParamRaw(System.Int32 i) + public method virtual System.Void Release() + public method virtual T ReadParam(System.Int32 i) + public property AustinHarris.JsonRpc.Jsmn.JsmnTokenizer Tokenizer { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcIdKind IdKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcParamsKind ParamsKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcVersionKind VersionKind { get; } + public property System.Boolean HasMethod { get; } + public property System.Boolean IsBatch { get; } + public property System.Int32 Count { get; } + public property System.Int32 ParamCount { get; } + public property System.Object IdValue { get; } + public property System.Object ParamsValue { get; } + public property System.ReadOnlyMemory Document { get; } + public property System.ReadOnlySpan IdRaw { get; } + public property System.ReadOnlySpan MethodUtf8 { get; } + public property System.String Method { get; } +sealed class AustinHarris.JsonRpc.Jsmn.JsmnSerializer : AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + public ctor JsmnSerializer() + public ctor JsmnSerializer(System.Boolean lenient) + public ctor JsmnSerializer(System.Boolean lenient, System.Int32 maxDepth) + public field static readonly AustinHarris.JsonRpc.Jsmn.JsmnSerializer Instance + public method virtual System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, T value) + public method virtual T Read(System.ReadOnlySpan utf8Json) + public property System.Boolean Lenient { get; } + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } +struct AustinHarris.JsonRpc.Jsmn.JsmnToken + public field AustinHarris.JsonRpc.Jsmn.JsmnType Type + public field System.Boolean Escaped + public field System.Boolean IsKey + public field System.Int32 End + public field System.Int32 Parent + public field System.Int32 Size + public field System.Int32 Start +delegate AustinHarris.JsonRpc.Jsmn.JsmnTokenReader`1 : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor JsmnTokenReader`1(System.Object object, System.IntPtr method) + public method virtual System.IAsyncResult BeginInvoke(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor cursor, System.AsyncCallback callback, System.Object object) + public method virtual T EndInvoke(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor cursor, System.IAsyncResult result) + public method virtual T Invoke(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor cursor) +sealed class AustinHarris.JsonRpc.Jsmn.JsmnTokenizer + public ctor JsmnTokenizer() + public field System.Boolean Lenient + public field static const System.Int32 DefaultMaxDepth + public field static const System.Int32 ErrorDepth + public field static const System.Int32 ErrorInvalid + public field static const System.Int32 ErrorNoMemory + public field static const System.Int32 ErrorPartial + public method System.Int32 Parse(System.ReadOnlySpan js) + public method System.Int32 Skip(System.Int32 index) + public method System.Void Release() + public method static System.Boolean IsNull(System.ReadOnlySpan js, in ref AustinHarris.JsonRpc.Jsmn.JsmnToken tok) + public method static System.ReadOnlySpan RawJson(System.ReadOnlySpan js, in ref AustinHarris.JsonRpc.Jsmn.JsmnToken tok) + public method static System.ReadOnlySpan Slice(System.ReadOnlySpan js, in ref AustinHarris.JsonRpc.Jsmn.JsmnToken tok) + public property AustinHarris.JsonRpc.Jsmn.JsmnToken[] Tokens { get; } + public property System.Int32 MaxDepth { get; set; } + public property System.Int32 Position { get; } + public property System.Int32 TokenCount { get; } +enum AustinHarris.JsonRpc.Jsmn.JsmnType : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Undefined = 0 + Object = 1 + Array = 2 + String = 3 + Primitive = 4 +static class AustinHarris.JsonRpc.Jsmn.JsmnWriter`1 + public field static readonly System.Action, T> Write +class AustinHarris.JsonRpc.JsonRequest + public ctor JsonRequest() + public ctor JsonRequest(System.String method, System.Object pars, System.Object id) + public property System.Object Id { get; set; } + public property System.Object Params { get; set; } + public property System.String JsonRpc { get; } + public property System.String Method { get; set; } +class AustinHarris.JsonRpc.JsonResponse + public ctor JsonResponse() + public property AustinHarris.JsonRpc.JsonRpcException Error { get; set; } + public property System.Object Id { get; set; } + public property System.Object Result { get; set; } + public property System.String JsonRpc { get; set; } +class AustinHarris.JsonRpc.JsonResponse`1 + public ctor JsonResponse`1() + public property AustinHarris.JsonRpc.JsonRpcException Error { get; set; } + public property System.Object Id { get; set; } + public property System.String JsonRpc { get; set; } + public property T Result { get; set; } +sealed class AustinHarris.JsonRpc.JsonRpcCancellationAttribute : System.Attribute + public ctor JsonRpcCancellationAttribute() +sealed class AustinHarris.JsonRpc.JsonRpcContext + public method static AustinHarris.JsonRpc.JsonRpcContext Current() + public method static AustinHarris.JsonRpc.JsonRpcRequestId CurrentRequestId() + public method static System.Void SetException(AustinHarris.JsonRpc.JsonRpcException exception) + public property System.Object Value { get; } +class AustinHarris.JsonRpc.JsonRpcException : System.ApplicationException, System.Runtime.Serialization.ISerializable + public ctor JsonRpcException(System.Int32 code, System.String message, System.Object data) + public property System.Int32 code { get; set; } + public property System.Object data { get; set; } + public property System.String message { get; set; } +sealed class AustinHarris.JsonRpc.JsonRpcMethodAttribute : System.Attribute + public ctor JsonRpcMethodAttribute(System.String jsonMethodName = ) + public property AustinHarris.JsonRpc.RpcContextFlow ContextFlow { get; set; } + public property System.String JsonMethodName { get; } +sealed class AustinHarris.JsonRpc.JsonRpcParamAttribute : System.Attribute + public ctor JsonRpcParamAttribute(System.String jsonParamName = ) + public property System.String JsonParamName { get; } +static class AustinHarris.JsonRpc.JsonRpcProcessor + public method static System.Byte[] ProcessBytes(System.String sessionId, System.ReadOnlySpan request, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.String ProcessSync(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.String jsonRpc, System.Object context = null) + public method static System.String ProcessSync(System.String jsonRpc, System.Object context = null) + public method static System.String ProcessSync(System.String sessionId, System.String jsonRpc, System.Object jsonRpcContext, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.Buffers.ReadOnlySequence request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.ReadOnlyMemory request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.ReadOnlySpan request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task Process(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.String jsonRpc, System.Object context = null) + public method static System.Threading.Tasks.Task Process(System.String jsonRpc, System.Object context = null) + public method static System.Threading.Tasks.Task Process(System.String sessionId, System.String jsonRpc, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String jsonRpc, System.Object context = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.String jsonRpc, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Void Process(AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, System.ReadOnlyMemory request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, System.ReadOnlySpan request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, in ref System.Buffers.ReadOnlySequence request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) +struct AustinHarris.JsonRpc.JsonRpcRequestId : System.IEquatable`1[[AustinHarris.JsonRpc.JsonRpcRequestId, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]] + public method System.Boolean Equals(AustinHarris.JsonRpc.JsonRpcRequestId other) + public method System.Boolean TryGetInt64(out ref System.Int64 value) + public method System.Object ToObject() + public method System.String GetIntegerText() + public method System.String GetString() + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromInt64(System.Int64 value) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromObject(System.Object id) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromRaw(System.ReadOnlySpan raw) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromString(System.String value) + public method virtual System.Boolean Equals(System.Object obj) + public method virtual System.Int32 GetHashCode() + public method virtual System.String ToString() + public property AustinHarris.JsonRpc.JsonRpcRequestId Absent { get; } + public property AustinHarris.JsonRpc.JsonRpcRequestId Null { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcIdKind Kind { get; } + public property System.Boolean IsAbsent { get; } + public property System.Boolean IsInteger { get; } + public property System.Boolean IsNull { get; } + public property System.Boolean IsString { get; } +abstract class AustinHarris.JsonRpc.JsonRpcService + protected ctor JsonRpcService() + protected ctor JsonRpcService(System.Boolean autoBind) + protected ctor JsonRpcService(System.String sessionID) +class AustinHarris.JsonRpc.JsonRpcStateAsync : System.IAsyncResult + public ctor JsonRpcStateAsync(System.AsyncCallback cb, System.Object extraData) + public property System.Boolean CompletedSynchronously { get; } + public property System.Boolean IsCompleted { get; } + public property System.Object AsyncState { get; } + public property System.String JsonRpc { get; set; } + public property System.String Result { get; set; } + public property System.Threading.WaitHandle AsyncWaitHandle { get; } +enum AustinHarris.JsonRpc.JsonRpcVersionPolicy : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Lenient = 0 + Ignore = 1 + Strict = 2 +class AustinHarris.JsonRpc.ParameterDefaultValue + public ctor ParameterDefaultValue(System.String name, System.Object value) + public property System.Object Value { get; } + public property System.String Name { get; } +delegate AustinHarris.JsonRpc.PostProcessHandler : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor PostProcessHandler(System.Object object, System.IntPtr method) + public method virtual AustinHarris.JsonRpc.JsonRpcException EndInvoke(System.IAsyncResult result) + public method virtual AustinHarris.JsonRpc.JsonRpcException Invoke(AustinHarris.JsonRpc.JsonRequest request, AustinHarris.JsonRpc.JsonResponse response, System.Object context) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.JsonRequest request, AustinHarris.JsonRpc.JsonResponse response, System.Object context, System.AsyncCallback callback, System.Object object) +delegate AustinHarris.JsonRpc.PreProcessHandler : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor PreProcessHandler(System.Object object, System.IntPtr method) + public method virtual AustinHarris.JsonRpc.JsonRpcException EndInvoke(System.IAsyncResult result) + public method virtual AustinHarris.JsonRpc.JsonRpcException Invoke(AustinHarris.JsonRpc.JsonRequest request, System.Object context) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.JsonRequest request, System.Object context, System.AsyncCallback callback, System.Object object) +sealed class AustinHarris.JsonRpc.RpcBinding : System.IDisposable + public method System.Void Dispose() + public property System.Collections.Generic.IReadOnlyList Methods { get; } + public property System.String SessionId { get; } +enum AustinHarris.JsonRpc.RpcContextFlow : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + None = 0 + Flow = 1 +sealed class AustinHarris.JsonRpc.RpcInterfaceBindingOptions + public ctor RpcInterfaceBindingOptions() + public property AustinHarris.JsonRpc.RpcNameCasing Casing { get; set; } + public property System.Boolean Recursive { get; set; } + public property System.Func Include { get; set; } + public property System.Func NameRule { get; set; } + public property System.String Prefix { get; set; } + public property System.String Separator { get; set; } +sealed class AustinHarris.JsonRpc.RpcInterfaceMethod + public property System.Reflection.MethodInfo Method { get; } + public property System.String DefaultName { get; } + public property System.String Leaf { get; } + public property System.String[] Path { get; } + public property System.Type Interface { get; } +enum AustinHarris.JsonRpc.RpcNameCasing : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Preserve = 0 + CamelCase = 1 +class AustinHarris.JsonRpc.SMD + public ctor SMD() + public method static System.Boolean ContainsType(System.Collections.Generic.Dictionary jo) + public method static System.Int32 AddType(System.Collections.Generic.Dictionary jo) + public property AustinHarris.JsonRpc.SMDAdditionalParameters[] parameters { get; set; } + public property AustinHarris.JsonRpc.SMDServiceCollection Services { get; } + public property System.Boolean additonalParameters { get; set; } + public property System.Collections.Generic.Dictionary> Types { get; } + public property System.String envelope { get; set; } + public property System.String target { get; set; } + public property System.String transport { get; set; } +class AustinHarris.JsonRpc.SMDAdditionalParameters + public ctor SMDAdditionalParameters(System.String parametername, System.Type type) + public property System.Int32 Type { get; set; } + public property System.Int32 __type { get; } + public property System.String Name { get; set; } + public property System.String __name { get; } + public property System.Type ObjectType { get; set; } +class AustinHarris.JsonRpc.SMDResult + public ctor SMDResult(System.Type type) + public property System.Int32 Type { get; } + public property System.Int32 __type { get; } +class AustinHarris.JsonRpc.SMDService + public ctor SMDService(System.String transport, System.String envelope, System.Collections.Generic.Dictionary parameters, System.Collections.Generic.Dictionary defaultValues, System.Delegate dele) + public field System.Delegate dele + public property AustinHarris.JsonRpc.Invocation.RpcMethod Method { get; } + public property AustinHarris.JsonRpc.ParameterDefaultValue[] defaultValues { get; } + public property AustinHarris.JsonRpc.SMDAdditionalParameters[] parameters { get; } + public property AustinHarris.JsonRpc.SMDResult returns { get; } + public property System.String envelope { get; } + public property System.String transport { get; } +sealed class AustinHarris.JsonRpc.SMDServiceCollection : System.Collections.Generic.ICollection`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Generic.IDictionary`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Generic.IReadOnlyCollection`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Generic.IReadOnlyDictionary`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null]], System.Collections.IEnumerable + public ctor SMDServiceCollection() + public method System.Boolean Contains(System.Collections.Generic.KeyValuePair item) + public method System.Boolean ContainsKey(System.String key) + public method System.Boolean Remove(System.Collections.Generic.KeyValuePair item) + public method System.Boolean Remove(System.String key) + public method System.Boolean TryGetValue(System.String key, out ref AustinHarris.JsonRpc.SMDService value) + public method System.Collections.Generic.IEnumerator> GetEnumerator() + public method System.Void Add(System.Collections.Generic.KeyValuePair item) + public method System.Void Add(System.String key, AustinHarris.JsonRpc.SMDService value) + public method System.Void Clear() + public method System.Void CopyTo(System.Collections.Generic.KeyValuePair[] array, System.Int32 arrayIndex) + public property AustinHarris.JsonRpc.SMDService Item[System.String key] { get; set; } + public property System.Boolean IsReadOnly { get; } + public property System.Collections.Generic.ICollection Values { get; } + public property System.Collections.Generic.ICollection Keys { get; } + public property System.Int32 Count { get; } +sealed class AustinHarris.JsonRpc.Serialization.ExceptionInfo + public ctor ExceptionInfo() + public method static AustinHarris.JsonRpc.Serialization.ExceptionInfo ForResponse(System.Exception ex) + public method static AustinHarris.JsonRpc.Serialization.ExceptionInfo From(System.Exception ex) + public method static AustinHarris.JsonRpc.Serialization.ExceptionInfo From(System.Exception ex, System.Boolean includeDetails) + public property AustinHarris.JsonRpc.Serialization.ExceptionInfo InnerException { get; set; } + public property System.Int32 HResult { get; set; } + public property System.String ClassName { get; set; } + public property System.String Message { get; set; } + public property System.String Source { get; set; } + public property System.String StackTraceString { get; set; } +static class AustinHarris.JsonRpc.Serialization.JsonFramer + public method static System.Boolean TryReadDocument(ref System.Buffers.ReadOnlySequence buffer, out ref System.Buffers.ReadOnlySequence document) + public method static System.Int32 FindDocumentEnd(System.ReadOnlySpan buffer) +class AustinHarris.JsonRpc.Serialization.JsonRpcBindException : System.Exception, System.Runtime.Serialization.ISerializable + public ctor JsonRpcBindException(System.String message) + public ctor JsonRpcBindException(System.String message, System.Exception inner) +enum AustinHarris.JsonRpc.Serialization.JsonRpcIdKind : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Absent = 0 + Null = 1 + Integer = 2 + String = 3 + Invalid = 4 +enum AustinHarris.JsonRpc.Serialization.JsonRpcParamsKind : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Absent = 0 + Array = 1 + Object = 2 + Invalid = 3 +abstract class AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader + protected ctor JsonRpcRequestReader() + public method abstract System.Boolean ParamIsNull(System.Int32 i) + public method abstract System.Boolean Select(System.Int32 index) + public method abstract System.Boolean TryParse(System.ReadOnlyMemory utf8Document, out ref System.String error) + public method abstract System.Object ReadParam(System.Int32 i, System.Type type) + public method abstract System.ReadOnlySpan ParamNameUtf8(System.Int32 i) + public method abstract System.ReadOnlySpan ParamRaw(System.Int32 i) + public method abstract System.Void Release() + public method abstract T ReadParam(System.Int32 i) + public property AustinHarris.JsonRpc.Serialization.JsonRpcIdKind IdKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcParamsKind ParamsKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcVersionKind VersionKind { get; } + public property System.Boolean HasMethod { get; } + public property System.Boolean IsBatch { get; } + public property System.Int32 Count { get; } + public property System.Int32 ParamCount { get; } + public property System.Object IdValue { get; } + public property System.Object ParamsValue { get; } + public property System.ReadOnlyMemory Document { get; } + public property System.ReadOnlySpan IdRaw { get; } + public property System.ReadOnlySpan MethodUtf8 { get; } + public property System.String Method { get; } +abstract class AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + protected ctor JsonRpcSerializer() + public method System.Object Deserialize(System.String json, System.Type type) + public method System.String Serialize(System.Object value, System.Type type) + public method System.String Serialize(T value) + public method T Deserialize(System.String json) + public method abstract System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method abstract System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method abstract System.Void Write(System.Buffers.IBufferWriter output, T value) + public method abstract T Read(System.ReadOnlySpan utf8Json) + public method virtual AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader CreateReader() + public property System.Boolean Lenient { get; } + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } +enum AustinHarris.JsonRpc.Serialization.JsonRpcVersionKind : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Absent = 0 + V2 = 1 + Other = 2 +sealed class AustinHarris.JsonRpc.Serialization.MethodNotFoundInfo + public ctor MethodNotFoundInfo(System.String method) + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public method virtual System.String ToString() + public property System.String Method { get; } +sealed class AustinHarris.JsonRpc.Serialization.ParameterErrorInfo + public ctor ParameterErrorInfo(AustinHarris.JsonRpc.Invocation.RpcParameter parameter, System.Int32 index, System.Exception cause) + public ctor ParameterErrorInfo(System.String parameter, System.Int32 index, System.Type expectedType, System.Exception cause) + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public method static System.Boolean IsConversionFailure(System.Exception cause) + public method static System.String Describe(System.Type type) + public method virtual System.String ToString() + public property System.Exception Cause { get; } + public property System.Int32 Index { get; } + public property System.String ExpectedType { get; } + public property System.String Message { get; } + public property System.String Parameter { get; } + public property System.String Reason { get; } +sealed class AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter : System.Buffers.IBufferWriter`1[[System.Byte, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.IDisposable + public ctor PooledByteBufferWriter(System.Int32 initialCapacity = 4096) + public method System.Byte[] ToArray() + public method System.Memory GetMemory(System.Int32 sizeHint = 0) + public method System.Span GetSpan(System.Int32 sizeHint = 0) + public method System.Void Advance(System.Int32 count) + public method System.Void Clear() + public method System.Void CopyTo(System.Buffers.IBufferWriter destination) + public method System.Void Dispose() + public method System.Void RemoveAt(System.Int32 position) + public method System.Void Rewind(System.Int32 position) + public method System.Void Write(System.Byte b) + public method System.Void Write(System.ReadOnlySpan bytes) + public method virtual System.String ToString() + public property System.ArraySegment WrittenSegment { get; } + public property System.Int32 WrittenCount { get; } + public property System.ReadOnlyMemory WrittenMemory { get; } + public property System.ReadOnlySpan WrittenSpan { get; } +static class AustinHarris.JsonRpc.Serialization.Utf8Json + public field static const System.Int32 MaxDateTimeLength + public field static const System.String NaNText + public field static const System.String NegativeInfinityText + public field static const System.String PositiveInfinityText + public method static AustinHarris.JsonRpc.Serialization.JsonRpcIdKind ClassifyId(System.ReadOnlySpan raw) + public method static System.Boolean EqualsIgnoreAsciiCase(System.ReadOnlySpan a, System.ReadOnlySpan b) + public method static System.Boolean TryParseNonFinite(System.ReadOnlySpan text, out ref System.Double value) + public method static System.Boolean TryParseNonFinite(System.String text, out ref System.Double value) + public method static System.Int32 FormatDateTime(System.Span dest, System.DateTime value) + public method static System.Int32 FormatDateTimeOffset(System.Span dest, System.DateTimeOffset value) + public method static System.Int32 Hash(System.ReadOnlySpan bytes) + public method static System.Int32 Unescape(System.ReadOnlySpan contents, System.Span dest) + public method static System.Object IdToObject(System.ReadOnlySpan raw, AustinHarris.JsonRpc.Serialization.JsonRpcIdKind kind) + public method static System.String DecodeString(System.ReadOnlySpan contents) + public method static System.String NonFiniteText(System.Double value) + public method static System.String ToStringUtf8(System.ReadOnlySpan utf8) + public method static System.Void WriteAscii(System.Buffers.IBufferWriter w, System.ReadOnlySpan chars) + public method static System.Void WriteBool(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Boolean value) + public method static System.Void WriteBool(System.Buffers.IBufferWriter w, System.Boolean value) + public method static System.Void WriteByte(System.Buffers.IBufferWriter w, System.Byte b) + public method static System.Void WriteChar(System.Buffers.IBufferWriter w, System.Char value) + public method static System.Void WriteDateTime(System.Buffers.IBufferWriter w, System.DateTime value) + public method static System.Void WriteDateTimeOffset(System.Buffers.IBufferWriter w, System.DateTimeOffset value) + public method static System.Void WriteDecimal(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Decimal value) + public method static System.Void WriteDecimal(System.Buffers.IBufferWriter w, System.Decimal value) + public method static System.Void WriteDouble(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Double value) + public method static System.Void WriteDouble(System.Buffers.IBufferWriter w, System.Double value) + public method static System.Void WriteId(System.Buffers.IBufferWriter w, System.Object id) + public method static System.Void WriteInt64(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Int64 value) + public method static System.Void WriteInt64(System.Buffers.IBufferWriter w, System.Int64 value) + public method static System.Void WriteNull(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w) + public method static System.Void WriteNull(System.Buffers.IBufferWriter w) + public method static System.Void WritePropertyName(System.Buffers.IBufferWriter w, System.String name) + public method static System.Void WriteQuotedAscii(System.Buffers.IBufferWriter w, System.String text) + public method static System.Void WriteRaw(System.Buffers.IBufferWriter w, System.ReadOnlySpan raw) + public method static System.Void WriteSingle(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Single value) + public method static System.Void WriteSingle(System.Buffers.IBufferWriter w, System.Single value) + public method static System.Void WriteString(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.String value) + public method static System.Void WriteString(System.Buffers.IBufferWriter w, System.ReadOnlySpan value) + public method static System.Void WriteString(System.Buffers.IBufferWriter w, System.String value) + public method static System.Void WriteUInt64(System.Buffers.IBufferWriter w, System.UInt64 value) +static class AustinHarris.JsonRpc.ServiceBinder + public method static AustinHarris.JsonRpc.RpcBinding BindInterface(System.String sessionId, TInterface implementation, AustinHarris.JsonRpc.RpcInterfaceBindingOptions options = null) + public method static AustinHarris.JsonRpc.RpcBinding BindInterface(TInterface implementation, AustinHarris.JsonRpc.RpcInterfaceBindingOptions options = null) + public method static System.Boolean UnbindMethod(System.String name) + public method static System.Boolean UnbindMethod(System.String sessionID, System.String name) + public method static System.Void BindMethod(System.String name, System.Delegate implementation, System.String[] parameterNames = null, System.Collections.Generic.IDictionary defaults = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static System.Void BindMethod(System.String name, System.Delegate implementation, System.String[] parameterNames, System.Collections.Generic.IDictionary defaults) + public method static System.Void BindMethod(System.String sessionID, System.String name, System.Delegate implementation, System.String[] parameterNames = null, System.Collections.Generic.IDictionary defaults = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static System.Void BindMethod(System.String sessionID, System.String name, System.Delegate implementation, System.String[] parameterNames, System.Collections.Generic.IDictionary defaults) + public method static System.Void BindService(System.String sessionID, System.Object instance) + public method static System.Void BindService(System.String sessionID, System.Type serviceType, System.Func resolve) + public method static System.Void BindService() + public method static System.Void BindService(System.String sessionID) +## AustinHarris.JsonRpc.AspNetCore 2.0.0.0 PublicKeyToken= + informational=2.0.0-preview.1 +class AustinHarris.JsonRpc.AspNetCore.JsonRpcConnectionHandler : Microsoft.AspNetCore.Connections.ConnectionHandler + public ctor JsonRpcConnectionHandler(Microsoft.Extensions.Options.IOptions options, System.IServiceProvider services = null) + public method virtual System.Threading.Tasks.Task OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext connection) +static class AustinHarris.JsonRpc.AspNetCore.JsonRpcEndpoint + public method static System.Threading.Tasks.Task HandleAsync(Microsoft.AspNetCore.Http.HttpContext http, AustinHarris.JsonRpc.AspNetCore.JsonRpcOptions options) +class AustinHarris.JsonRpc.AspNetCore.JsonRpcOptions + public ctor JsonRpcOptions() + public property AustinHarris.JsonRpc.Serialization.JsonRpcSerializer Serializer { get; set; } + public property System.Boolean EnableAsyncMethods { get; set; } + public property System.Boolean NoContentForNotifications { get; set; } + public property System.Func ContextFactory { get; set; } + public property System.Func SessionSelector { get; set; } + public property System.Func ServiceProviderSelector { get; set; } + public property System.Int64 MaxRequestBytes { get; set; } + public property System.String ResponseContentType { get; set; } + public property System.String SessionId { get; set; } +static class AustinHarris.JsonRpc.AspNetCore.JsonRpcServiceCollectionExtensions + public method static Microsoft.AspNetCore.Builder.IEndpointConventionBuilder MapJsonRpc(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, System.String pattern = /jsonrpc, AustinHarris.JsonRpc.AspNetCore.JsonRpcOptions options = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpc(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcService(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime, System.String sessionId = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcService(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.String sessionId = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcServicesFromAssembly(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Reflection.Assembly assembly, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime, System.String sessionId = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcServicesFromAssembly(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Reflection.Assembly assembly, System.String sessionId = null) +## AustinHarris.JsonRpc.SystemTextJson 2.0.0.0 PublicKeyToken= + informational=2.0.0-preview.1 +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcBooleanConverter : System.Text.Json.Serialization.JsonConverter`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcBooleanConverter() + public method virtual System.Boolean Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.Boolean value, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcCharConverter : System.Text.Json.Serialization.JsonConverter`1[[System.Char, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcCharConverter() + public method virtual System.Char Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.Char value, System.Text.Json.JsonSerializerOptions options) +static class AustinHarris.JsonRpc.SystemTextJson.JsonRpcConverters + public method static System.Boolean ContainsAll(System.Text.Json.JsonSerializerOptions options) + public method static System.Collections.Generic.IEnumerable Create() + public method static System.Void AddMissing(System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcDateTimeConverter : System.Text.Json.Serialization.JsonConverter`1[[System.DateTime, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcDateTimeConverter() + public method virtual System.DateTime Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.DateTime value, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcDateTimeOffsetConverter : System.Text.Json.Serialization.JsonConverter`1[[System.DateTimeOffset, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcDateTimeOffsetConverter() + public method virtual System.DateTimeOffset Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.DateTimeOffset value, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcNumberConverterFactory : System.Text.Json.Serialization.JsonConverterFactory + public ctor JsonRpcNumberConverterFactory() + public method virtual System.Boolean CanConvert(System.Type typeToConvert) + public method virtual System.Text.Json.Serialization.JsonConverter CreateConverter(System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.SystemTextJsonRpcSerializer : AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + public ctor SystemTextJsonRpcSerializer() + public ctor SystemTextJsonRpcSerializer(System.Text.Json.JsonSerializerOptions options) + public method static System.Text.Json.JsonSerializerOptions CreateDefaultOptions() + public method virtual System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, T value) + public method virtual T Read(System.ReadOnlySpan utf8Json) + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } + public property System.Text.Json.JsonSerializerOptions DefaultOptions { get; } + public property System.Text.Json.JsonSerializerOptions EffectiveOptions { get; } + public property System.Text.Json.JsonSerializerOptions Options { get; } +## AustinHarris.JsonRpc.Newtonsoft 2.0.0.0 PublicKeyToken= + informational=2.0.0-preview.1 +static class AustinHarris.JsonRpc.Newtonsoft.NewtonsoftJsonRpc + public method static AustinHarris.JsonRpc.Newtonsoft.NewtonsoftJsonRpcSerializer SerializerFor(Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.String ProcessSync(System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.String ProcessSync(System.String sessionId, System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Threading.Tasks.Task Process(System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Threading.Tasks.Task Process(System.String sessionId, System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Void Process(AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Void Process(System.String sessionId, AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) +sealed class AustinHarris.JsonRpc.Newtonsoft.NewtonsoftJsonRpcSerializer : AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + public ctor NewtonsoftJsonRpcSerializer() + public ctor NewtonsoftJsonRpcSerializer(Newtonsoft.Json.JsonSerializerSettings settings) + public method virtual System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, T value) + public method virtual T Read(System.ReadOnlySpan utf8Json) + public property Newtonsoft.Json.JsonSerializer Serializer { get; } + public property Newtonsoft.Json.JsonSerializerSettings Settings { get; } + public property System.Boolean Lenient { get; } + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } diff --git a/docs/api-surface/2.0.0-preview.3.txt b/docs/api-surface/2.0.0-preview.3.txt new file mode 100644 index 0000000..93bfe36 --- /dev/null +++ b/docs/api-surface/2.0.0-preview.3.txt @@ -0,0 +1,612 @@ +## AustinHarris.JsonRpc 2.0.0.0 PublicKeyToken=e6819c02cf4aec44 + informational=2.0.0-preview.3 +static class AustinHarris.JsonRpc.Config + public method static System.Void SetBeforeProcessHandler(System.String sessionId, AustinHarris.JsonRpc.PreProcessHandler handler) + public method static System.Void SetErrorHandler(System.Func handler) + public method static System.Void SetErrorHandler(System.String sessionId, System.Func handler) + public method static System.Void SetLimits(AustinHarris.JsonRpc.JsonRpcLimits limits) + public method static System.Void SetLimits(System.String sessionId, AustinHarris.JsonRpc.JsonRpcLimits limits) + public method static System.Void SetParseErrorHandler(System.Func handler) + public method static System.Void SetParseErrorHandler(System.String sessionId, System.Func handler) + public method static System.Void SetPostProcessHandler(AustinHarris.JsonRpc.PostProcessHandler handler) + public method static System.Void SetPostProcessHandler(System.String sessionId, AustinHarris.JsonRpc.PostProcessHandler handler) + public method static System.Void SetPreProcessHandler(AustinHarris.JsonRpc.PreProcessHandler handler) + public method static System.Void SetPreProcessHandler(System.String sessionId, AustinHarris.JsonRpc.PreProcessHandler handler) + public method static System.Void SetSerializer(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer) + public method static System.Void SetSerializer(System.String sessionId, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer) + public method static System.Void SetVersionPolicy(System.String sessionId, System.Nullable policy) + public property AustinHarris.JsonRpc.JsonRpcLimits Limits { get; } + public property AustinHarris.JsonRpc.JsonRpcVersionPolicy VersionPolicy { get; set; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcSerializer Serializer { get; set; } + public property System.Boolean IncludeExceptionDetails { get; set; } +sealed class AustinHarris.JsonRpc.Handler + public method AustinHarris.JsonRpc.JsonResponse Handle(AustinHarris.JsonRpc.JsonRequest Rpc, System.Object RpcContext = null) + public method System.Void Destroy() + public method System.Void RegisterFuction(System.String methodName, System.Collections.Generic.Dictionary parameterNameTypeMapping, System.Collections.Generic.Dictionary parameterNameDefaultValueMapping, System.Delegate implementation) + public method System.Void SetPostProcessHandler(AustinHarris.JsonRpc.PostProcessHandler handler) + public method System.Void SetPreProcessHandler(AustinHarris.JsonRpc.PreProcessHandler handler) + public method System.Void UnRegisterFunction(System.String methodName) + public method static AustinHarris.JsonRpc.Handler GetSessionHandler() + public method static AustinHarris.JsonRpc.Handler GetSessionHandler(System.String sessionId) + public method static AustinHarris.JsonRpc.JsonRpcException RpcGetAndRemoveRpcException() + public method static AustinHarris.JsonRpc.JsonRpcRequestId RpcRequestId() + public method static AustinHarris.JsonRpc.Serialization.JsonRpcIdKind RpcRequestIdKind() + public method static System.Object RpcContext() + public method static System.ReadOnlySpan RpcRequestIdRaw() + public method static System.String DefaultSessionId() + public method static System.Void DestroySession(System.String sessionId) + public method static System.Void RegisterInstance(System.String sessionId, System.Object instance) + public method static System.Void RpcSetException(AustinHarris.JsonRpc.JsonRpcException exception) + public property AustinHarris.JsonRpc.Handler DefaultHandler { get; } + public property AustinHarris.JsonRpc.JsonRpcLimits Limits { get; set; } + public property AustinHarris.JsonRpc.SMD MetaData { get; set; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcSerializer Serializer { get; set; } + public property System.Nullable VersionPolicy { get; set; } + public property System.String SessionId { get; } +delegate AustinHarris.JsonRpc.Invocation.BoxedInvoker : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor BoxedInvoker(System.Object object, System.IntPtr method) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map, System.AsyncCallback callback, System.Object object) + public method virtual System.Object EndInvoke(System.IAsyncResult result) + public method virtual System.Object Invoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map) +sealed class AustinHarris.JsonRpc.Invocation.RpcMethod + public ctor RpcMethod() + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromDelegate(System.String name, System.Delegate implementation, System.String[] parameterNames = null, System.Collections.Generic.IDictionary defaults = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromDelegate(System.String name, System.Delegate implementation, System.String[] parameterNames, System.Collections.Generic.IDictionary defaults) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromMethodInfo(System.String name, System.Reflection.MethodInfo method, System.Object target, System.String[] parameterNames = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromMethodInfo(System.String name, System.Reflection.MethodInfo method, System.Object target, System.String[] parameterNames) + public method static AustinHarris.JsonRpc.Invocation.RpcMethod FromMethodInfo(System.String name, System.Reflection.MethodInfo method, System.Type serviceType, System.Func resolve, System.String[] parameterNames = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public property AustinHarris.JsonRpc.Invocation.BoxedInvoker InvokeBoxed { get; } + public property AustinHarris.JsonRpc.Invocation.RpcParameter[] Parameters { get; } + public property AustinHarris.JsonRpc.Invocation.StreamingInvoker Invoke { get; } + public property AustinHarris.JsonRpc.RpcContextFlow ContextFlow { get; } + public property System.Boolean ExpectsRefException { get; } + public property System.Boolean IsAsync { get; } + public property System.Int32 DefaultCount { get; } + public property System.String Name { get; } + public property System.Type ResultType { get; } + public property System.Type ReturnType { get; } +sealed class AustinHarris.JsonRpc.Invocation.RpcParameter + public property System.Boolean HasDefault { get; } + public property System.Object DefaultValue { get; } + public property System.String Name { get; } + public property System.Type Type { get; } +delegate AustinHarris.JsonRpc.Invocation.StreamingInvoker : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor StreamingInvoker(System.Object object, System.IntPtr method) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.Buffers.IBufferWriter output, System.AsyncCallback callback, System.Object object) + public method virtual System.Void EndInvoke(System.IAsyncResult result) + public method virtual System.Void Invoke(AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader reader, System.Int32[] map, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.Buffers.IBufferWriter output) +struct AustinHarris.JsonRpc.Jsmn.JsmnCursor + public ctor JsmnCursor(System.ReadOnlySpan doc, AustinHarris.JsonRpc.Jsmn.JsmnToken[] tokens, System.Int32 index) + public field AustinHarris.JsonRpc.Jsmn.JsmnToken[] Tokens + public field System.Int32 Index + public field System.ReadOnlySpan Doc + public method System.Int32 Next() + public property System.Boolean IsNull { get; } + public property System.ReadOnlySpan Text { get; } + public property ref AustinHarris.JsonRpc.Jsmn.JsmnToken Token { get; } +static class AustinHarris.JsonRpc.Jsmn.JsmnMapper + public method static System.Boolean ReadBoolean(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Char ReadChar(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.DateTime ReadDateTime(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Decimal ReadDecimal(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Double ReadDouble(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Int32 ReadInt32(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Int64 ReadInt64(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Object ReadObject(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c, System.Type type) + public method static System.Single ReadSingle(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.String ReadString(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.UInt64 ReadUInt64(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor c) + public method static System.Void WriteObject(System.Buffers.IBufferWriter w, System.Object value, System.Type declaredType, System.Int32 depth) +static class AustinHarris.JsonRpc.Jsmn.JsmnReader`1 + public field static readonly AustinHarris.JsonRpc.Jsmn.JsmnTokenReader Read +sealed class AustinHarris.JsonRpc.Jsmn.JsmnRequestReader : AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader + public ctor JsmnRequestReader(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer) + public method virtual System.Boolean ParamIsNull(System.Int32 i) + public method virtual System.Boolean Select(System.Int32 index) + public method virtual System.Boolean TryParse(System.ReadOnlyMemory utf8Document, out ref System.String error) + public method virtual System.Object ReadParam(System.Int32 i, System.Type type) + public method virtual System.ReadOnlySpan ParamNameUtf8(System.Int32 i) + public method virtual System.ReadOnlySpan ParamRaw(System.Int32 i) + public method virtual System.Void Release() + public method virtual T ReadParam(System.Int32 i) + public property AustinHarris.JsonRpc.Jsmn.JsmnTokenizer Tokenizer { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcIdKind IdKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcParamsKind ParamsKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcVersionKind VersionKind { get; } + public property System.Boolean HasMethod { get; } + public property System.Boolean IsBatch { get; } + public property System.Int32 Count { get; } + public property System.Int32 ParamCount { get; } + public property System.Object IdValue { get; } + public property System.Object ParamsValue { get; } + public property System.ReadOnlyMemory Document { get; } + public property System.ReadOnlySpan IdRaw { get; } + public property System.ReadOnlySpan MethodUtf8 { get; } + public property System.String Method { get; } +sealed class AustinHarris.JsonRpc.Jsmn.JsmnSerializer : AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + public ctor JsmnSerializer() + public ctor JsmnSerializer(System.Boolean lenient) + public ctor JsmnSerializer(System.Boolean lenient, System.Int32 maxDepth) + public field static readonly AustinHarris.JsonRpc.Jsmn.JsmnSerializer Instance + public method virtual System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, T value) + public method virtual T Read(System.ReadOnlySpan utf8Json) + public property System.Boolean Lenient { get; } + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } +struct AustinHarris.JsonRpc.Jsmn.JsmnToken + public field AustinHarris.JsonRpc.Jsmn.JsmnType Type + public field System.Boolean Escaped + public field System.Boolean IsKey + public field System.Int32 End + public field System.Int32 Parent + public field System.Int32 Size + public field System.Int32 Start +delegate AustinHarris.JsonRpc.Jsmn.JsmnTokenReader`1 : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor JsmnTokenReader`1(System.Object object, System.IntPtr method) + public method virtual System.IAsyncResult BeginInvoke(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor cursor, System.AsyncCallback callback, System.Object object) + public method virtual T EndInvoke(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor cursor, System.IAsyncResult result) + public method virtual T Invoke(ref AustinHarris.JsonRpc.Jsmn.JsmnCursor cursor) +sealed class AustinHarris.JsonRpc.Jsmn.JsmnTokenizer + public ctor JsmnTokenizer() + public field System.Boolean Lenient + public field static const System.Int32 DefaultMaxDepth + public field static const System.Int32 ErrorDepth + public field static const System.Int32 ErrorInvalid + public field static const System.Int32 ErrorNoMemory + public field static const System.Int32 ErrorPartial + public method System.Int32 Parse(System.ReadOnlySpan js) + public method System.Int32 Skip(System.Int32 index) + public method System.Void Release() + public method static System.Boolean IsNull(System.ReadOnlySpan js, in ref AustinHarris.JsonRpc.Jsmn.JsmnToken tok) + public method static System.ReadOnlySpan RawJson(System.ReadOnlySpan js, in ref AustinHarris.JsonRpc.Jsmn.JsmnToken tok) + public method static System.ReadOnlySpan Slice(System.ReadOnlySpan js, in ref AustinHarris.JsonRpc.Jsmn.JsmnToken tok) + public property AustinHarris.JsonRpc.Jsmn.JsmnToken[] Tokens { get; } + public property System.Int32 MaxDepth { get; set; } + public property System.Int32 Position { get; } + public property System.Int32 TokenCount { get; } +enum AustinHarris.JsonRpc.Jsmn.JsmnType : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Undefined = 0 + Object = 1 + Array = 2 + String = 3 + Primitive = 4 +static class AustinHarris.JsonRpc.Jsmn.JsmnWriter`1 + public field static readonly System.Action, T> Write +class AustinHarris.JsonRpc.JsonRequest + public ctor JsonRequest() + public ctor JsonRequest(System.String method, System.Object pars, System.Object id) + public property System.Object Id { get; set; } + public property System.Object Params { get; set; } + public property System.String JsonRpc { get; } + public property System.String Method { get; set; } +class AustinHarris.JsonRpc.JsonResponse + public ctor JsonResponse() + public property AustinHarris.JsonRpc.JsonRpcException Error { get; set; } + public property System.Object Id { get; set; } + public property System.Object Result { get; set; } + public property System.String JsonRpc { get; set; } +class AustinHarris.JsonRpc.JsonResponse`1 + public ctor JsonResponse`1() + public property AustinHarris.JsonRpc.JsonRpcException Error { get; set; } + public property System.Object Id { get; set; } + public property System.String JsonRpc { get; set; } + public property T Result { get; set; } +sealed class AustinHarris.JsonRpc.JsonRpcCancellationAttribute : System.Attribute + public ctor JsonRpcCancellationAttribute() +sealed class AustinHarris.JsonRpc.JsonRpcContext + public method static AustinHarris.JsonRpc.JsonRpcContext Current() + public method static AustinHarris.JsonRpc.JsonRpcRequestId CurrentRequestId() + public method static System.Void SetException(AustinHarris.JsonRpc.JsonRpcException exception) + public property System.Object Value { get; } +class AustinHarris.JsonRpc.JsonRpcException : System.ApplicationException, System.Runtime.Serialization.ISerializable + public ctor JsonRpcException(System.Int32 code, System.String message, System.Object data) + public property System.Int32 code { get; set; } + public property System.Object data { get; set; } + public property System.String message { get; set; } +sealed class AustinHarris.JsonRpc.JsonRpcLimits + public ctor JsonRpcLimits(System.Int64 maxDocumentBytes = 4194304, System.Int32 maxBatchCount = 1024) + public property AustinHarris.JsonRpc.JsonRpcLimits Default { get; } + public property AustinHarris.JsonRpc.JsonRpcLimits Unlimited { get; } + public property System.Int32 MaxBatchCount { get; } + public property System.Int64 MaxDocumentBytes { get; } +sealed class AustinHarris.JsonRpc.JsonRpcMethodAttribute : System.Attribute + public ctor JsonRpcMethodAttribute(System.String jsonMethodName = ) + public property AustinHarris.JsonRpc.RpcContextFlow ContextFlow { get; set; } + public property System.String JsonMethodName { get; } +sealed class AustinHarris.JsonRpc.JsonRpcParamAttribute : System.Attribute + public ctor JsonRpcParamAttribute(System.String jsonParamName = ) + public property System.String JsonParamName { get; } +static class AustinHarris.JsonRpc.JsonRpcProcessor + public method static System.Byte[] ProcessBytes(System.String sessionId, System.ReadOnlySpan request, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.String ProcessSync(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.String jsonRpc, System.Object context = null) + public method static System.String ProcessSync(System.String jsonRpc, System.Object context = null) + public method static System.String ProcessSync(System.String sessionId, System.String jsonRpc, System.Object jsonRpcContext, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.Buffers.ReadOnlySequence request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.ReadOnlyMemory request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.ReadOnlySpan request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task Process(AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer, System.String jsonRpc, System.Object context = null) + public method static System.Threading.Tasks.Task Process(System.String jsonRpc, System.Object context = null) + public method static System.Threading.Tasks.Task Process(System.String sessionId, System.String jsonRpc, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String jsonRpc, System.Object context = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Threading.Tasks.Task ProcessAsync(System.String sessionId, System.String jsonRpc, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null, System.Threading.CancellationToken cancellationToken = null) + public method static System.Void Process(AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, System.ReadOnlyMemory request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, System.ReadOnlySpan request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) + public method static System.Void Process(System.String sessionId, in ref System.Buffers.ReadOnlySequence request, System.Buffers.IBufferWriter output, System.Object context = null, AustinHarris.JsonRpc.Serialization.JsonRpcSerializer serializer = null) +struct AustinHarris.JsonRpc.JsonRpcRequestId : System.IEquatable`1[[AustinHarris.JsonRpc.JsonRpcRequestId, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e6819c02cf4aec44]] + public method System.Boolean Equals(AustinHarris.JsonRpc.JsonRpcRequestId other) + public method System.Boolean TryGetInt64(out ref System.Int64 value) + public method System.Object ToObject() + public method System.String GetIntegerText() + public method System.String GetString() + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromInt64(System.Int64 value) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromObject(System.Object id) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromRaw(System.ReadOnlySpan raw) + public method static AustinHarris.JsonRpc.JsonRpcRequestId FromString(System.String value) + public method virtual System.Boolean Equals(System.Object obj) + public method virtual System.Int32 GetHashCode() + public method virtual System.String ToString() + public property AustinHarris.JsonRpc.JsonRpcRequestId Absent { get; } + public property AustinHarris.JsonRpc.JsonRpcRequestId Null { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcIdKind Kind { get; } + public property System.Boolean IsAbsent { get; } + public property System.Boolean IsInteger { get; } + public property System.Boolean IsNull { get; } + public property System.Boolean IsString { get; } +abstract class AustinHarris.JsonRpc.JsonRpcService + protected ctor JsonRpcService() + protected ctor JsonRpcService(System.Boolean autoBind) + protected ctor JsonRpcService(System.String sessionId) +class AustinHarris.JsonRpc.JsonRpcStateAsync : System.IAsyncResult + public ctor JsonRpcStateAsync(System.AsyncCallback cb, System.Object extraData) + public property System.Boolean CompletedSynchronously { get; } + public property System.Boolean IsCompleted { get; } + public property System.Object AsyncState { get; } + public property System.String JsonRpc { get; set; } + public property System.String Result { get; set; } + public property System.Threading.WaitHandle AsyncWaitHandle { get; } +enum AustinHarris.JsonRpc.JsonRpcVersionPolicy : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Lenient = 0 + Ignore = 1 + Strict = 2 +class AustinHarris.JsonRpc.ParameterDefaultValue + public ctor ParameterDefaultValue(System.String name, System.Object value) + public property System.Object Value { get; } + public property System.String Name { get; } +delegate AustinHarris.JsonRpc.PostProcessHandler : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor PostProcessHandler(System.Object object, System.IntPtr method) + public method virtual AustinHarris.JsonRpc.JsonRpcException EndInvoke(System.IAsyncResult result) + public method virtual AustinHarris.JsonRpc.JsonRpcException Invoke(AustinHarris.JsonRpc.JsonRequest request, AustinHarris.JsonRpc.JsonResponse response, System.Object context) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.JsonRequest request, AustinHarris.JsonRpc.JsonResponse response, System.Object context, System.AsyncCallback callback, System.Object object) +delegate AustinHarris.JsonRpc.PreProcessHandler : System.ICloneable, System.Runtime.Serialization.ISerializable + public ctor PreProcessHandler(System.Object object, System.IntPtr method) + public method virtual AustinHarris.JsonRpc.JsonRpcException EndInvoke(System.IAsyncResult result) + public method virtual AustinHarris.JsonRpc.JsonRpcException Invoke(AustinHarris.JsonRpc.JsonRequest request, System.Object context) + public method virtual System.IAsyncResult BeginInvoke(AustinHarris.JsonRpc.JsonRequest request, System.Object context, System.AsyncCallback callback, System.Object object) +sealed class AustinHarris.JsonRpc.RpcBinding : System.IDisposable + public method System.Void Dispose() + public property System.Collections.Generic.IReadOnlyList Methods { get; } + public property System.String SessionId { get; } +enum AustinHarris.JsonRpc.RpcContextFlow : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + None = 0 + Flow = 1 +sealed class AustinHarris.JsonRpc.RpcInterfaceBindingOptions + public ctor RpcInterfaceBindingOptions() + public property AustinHarris.JsonRpc.RpcNameCasing Casing { get; set; } + public property System.Boolean Recursive { get; set; } + public property System.Func Include { get; set; } + public property System.Func NameRule { get; set; } + public property System.String Prefix { get; set; } + public property System.String Separator { get; set; } +sealed class AustinHarris.JsonRpc.RpcInterfaceMethod + public property System.Reflection.MethodInfo MethodInfo { get; } + public property System.String DefaultName { get; } + public property System.String Leaf { get; } + public property System.String[] Path { get; } + public property System.Type Interface { get; } +enum AustinHarris.JsonRpc.RpcNameCasing : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Preserve = 0 + CamelCase = 1 +class AustinHarris.JsonRpc.SMD + public ctor SMD() + public method static System.Boolean ContainsType(System.Collections.Generic.Dictionary jo) + public method static System.Int32 AddType(System.Collections.Generic.Dictionary jo) + public property AustinHarris.JsonRpc.SMDAdditionalParameters[] parameters { get; set; } + public property AustinHarris.JsonRpc.SMDServiceCollection Services { get; } + public property System.Boolean additonalParameters { get; set; } + public property System.Collections.Generic.Dictionary> Types { get; } + public property System.String envelope { get; set; } + public property System.String target { get; set; } + public property System.String transport { get; set; } +class AustinHarris.JsonRpc.SMDAdditionalParameters + public ctor SMDAdditionalParameters(System.String parametername, System.Type type) + public property System.Int32 Type { get; set; } + public property System.Int32 __type { get; } + public property System.String Name { get; set; } + public property System.String __name { get; } + public property System.Type ObjectType { get; set; } +class AustinHarris.JsonRpc.SMDResult + public ctor SMDResult(System.Type type) + public property System.Int32 Type { get; } + public property System.Int32 __type { get; } +class AustinHarris.JsonRpc.SMDService + public ctor SMDService(System.String transport, System.String envelope, System.Collections.Generic.Dictionary parameters, System.Collections.Generic.Dictionary defaultValues, System.Delegate dele) + public field System.Delegate dele + public property AustinHarris.JsonRpc.Invocation.RpcMethod Method { get; } + public property AustinHarris.JsonRpc.ParameterDefaultValue[] defaultValues { get; } + public property AustinHarris.JsonRpc.SMDAdditionalParameters[] parameters { get; } + public property AustinHarris.JsonRpc.SMDResult returns { get; } + public property System.String envelope { get; } + public property System.String transport { get; } +sealed class AustinHarris.JsonRpc.SMDServiceCollection : System.Collections.Generic.ICollection`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e6819c02cf4aec44]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Generic.IDictionary`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e6819c02cf4aec44]], System.Collections.Generic.IEnumerable`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e6819c02cf4aec44]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Generic.IReadOnlyCollection`1[[System.Collections.Generic.KeyValuePair`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e6819c02cf4aec44]], System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Collections.Generic.IReadOnlyDictionary`2[[System.String, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[AustinHarris.JsonRpc.SMDService, AustinHarris.JsonRpc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e6819c02cf4aec44]], System.Collections.IEnumerable + public ctor SMDServiceCollection() + public method System.Boolean Contains(System.Collections.Generic.KeyValuePair item) + public method System.Boolean ContainsKey(System.String key) + public method System.Boolean Remove(System.Collections.Generic.KeyValuePair item) + public method System.Boolean Remove(System.String key) + public method System.Boolean TryGetValue(System.String key, out ref AustinHarris.JsonRpc.SMDService value) + public method System.Collections.Generic.IEnumerator> GetEnumerator() + public method System.Void Add(System.Collections.Generic.KeyValuePair item) + public method System.Void Add(System.String key, AustinHarris.JsonRpc.SMDService value) + public method System.Void Clear() + public method System.Void CopyTo(System.Collections.Generic.KeyValuePair[] array, System.Int32 arrayIndex) + public property AustinHarris.JsonRpc.SMDService Item[System.String key] { get; set; } + public property System.Boolean IsReadOnly { get; } + public property System.Collections.Generic.ICollection Values { get; } + public property System.Collections.Generic.ICollection Keys { get; } + public property System.Int32 Count { get; } +sealed class AustinHarris.JsonRpc.Serialization.ExceptionInfo + public ctor ExceptionInfo() + public method static AustinHarris.JsonRpc.Serialization.ExceptionInfo ForResponse(System.Exception ex) + public method static AustinHarris.JsonRpc.Serialization.ExceptionInfo From(System.Exception ex) + public method static AustinHarris.JsonRpc.Serialization.ExceptionInfo From(System.Exception ex, System.Boolean includeDetails) + public property AustinHarris.JsonRpc.Serialization.ExceptionInfo InnerException { get; set; } + public property System.Int32 HResult { get; set; } + public property System.String ClassName { get; set; } + public property System.String Message { get; set; } + public property System.String Source { get; set; } + public property System.String StackTraceString { get; set; } +static class AustinHarris.JsonRpc.Serialization.JsonFramer + public method static System.Boolean TryReadDocument(ref System.Buffers.ReadOnlySequence buffer, out ref System.Buffers.ReadOnlySequence document) + public method static System.Int32 FindDocumentEnd(System.ReadOnlySpan buffer) +class AustinHarris.JsonRpc.Serialization.JsonRpcBindException : System.Exception, System.Runtime.Serialization.ISerializable + public ctor JsonRpcBindException(System.String message) + public ctor JsonRpcBindException(System.String message, System.Exception inner) +enum AustinHarris.JsonRpc.Serialization.JsonRpcIdKind : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Absent = 0 + Null = 1 + Integer = 2 + String = 3 + Invalid = 4 +enum AustinHarris.JsonRpc.Serialization.JsonRpcParamsKind : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Absent = 0 + Array = 1 + Object = 2 + Invalid = 3 +abstract class AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader + protected ctor JsonRpcRequestReader() + public method abstract System.Boolean ParamIsNull(System.Int32 i) + public method abstract System.Boolean Select(System.Int32 index) + public method abstract System.Boolean TryParse(System.ReadOnlyMemory utf8Document, out ref System.String error) + public method abstract System.Object ReadParam(System.Int32 i, System.Type type) + public method abstract System.ReadOnlySpan ParamNameUtf8(System.Int32 i) + public method abstract System.ReadOnlySpan ParamRaw(System.Int32 i) + public method abstract System.Void Release() + public method abstract T ReadParam(System.Int32 i) + public property AustinHarris.JsonRpc.Serialization.JsonRpcIdKind IdKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcParamsKind ParamsKind { get; } + public property AustinHarris.JsonRpc.Serialization.JsonRpcVersionKind VersionKind { get; } + public property System.Boolean HasMethod { get; } + public property System.Boolean IsBatch { get; } + public property System.Int32 Count { get; } + public property System.Int32 ParamCount { get; } + public property System.Object IdValue { get; } + public property System.Object ParamsValue { get; } + public property System.ReadOnlyMemory Document { get; } + public property System.ReadOnlySpan IdRaw { get; } + public property System.ReadOnlySpan MethodUtf8 { get; } + public property System.String Method { get; } +abstract class AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + protected ctor JsonRpcSerializer() + public method System.Object Deserialize(System.String json, System.Type type) + public method System.String Serialize(System.Object value, System.Type type) + public method System.String Serialize(T value) + public method T Deserialize(System.String json) + public method abstract System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method abstract System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method abstract System.Void Write(System.Buffers.IBufferWriter output, T value) + public method abstract T Read(System.ReadOnlySpan utf8Json) + public method virtual AustinHarris.JsonRpc.Serialization.JsonRpcRequestReader CreateReader() + public property System.Boolean Lenient { get; } + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } +enum AustinHarris.JsonRpc.Serialization.JsonRpcVersionKind : System.IComparable, System.IConvertible, System.IFormattable, System.ISpanFormattable + Absent = 0 + V2 = 1 + Other = 2 +sealed class AustinHarris.JsonRpc.Serialization.LimitExceededInfo + public ctor LimitExceededInfo(System.String limit, System.Int64 maximum) + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public property System.Int64 Maximum { get; } + public property System.String Limit { get; } +sealed class AustinHarris.JsonRpc.Serialization.MethodNotFoundInfo + public ctor MethodNotFoundInfo(System.String method) + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public method virtual System.String ToString() + public property System.String Method { get; } +sealed class AustinHarris.JsonRpc.Serialization.ParameterErrorInfo + public ctor ParameterErrorInfo(AustinHarris.JsonRpc.Invocation.RpcParameter parameter, System.Int32 index, System.Exception cause) + public ctor ParameterErrorInfo(System.String parameter, System.Int32 index, System.Type expectedType, System.Exception cause) + public method System.Void WriteTo(System.Buffers.IBufferWriter output) + public method static System.Boolean IsConversionFailure(System.Exception cause) + public method static System.String Describe(System.Type type) + public method virtual System.String ToString() + public property System.Exception Cause { get; } + public property System.Int32 Index { get; } + public property System.String ExpectedType { get; } + public property System.String Message { get; } + public property System.String Parameter { get; } + public property System.String Reason { get; } +sealed class AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter : System.Buffers.IBufferWriter`1[[System.Byte, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.IDisposable + public ctor PooledByteBufferWriter(System.Int32 initialCapacity = 4096) + public method System.Byte[] ToArray() + public method System.Memory GetMemory(System.Int32 sizeHint = 0) + public method System.Span GetSpan(System.Int32 sizeHint = 0) + public method System.Void Advance(System.Int32 count) + public method System.Void Clear() + public method System.Void CopyTo(System.Buffers.IBufferWriter destination) + public method System.Void Dispose() + public method System.Void RemoveAt(System.Int32 position) + public method System.Void Rewind(System.Int32 position) + public method System.Void Write(System.Byte b) + public method System.Void Write(System.ReadOnlySpan bytes) + public method virtual System.String ToString() + public property System.ArraySegment WrittenSegment { get; } + public property System.Int32 WrittenCount { get; } + public property System.ReadOnlyMemory WrittenMemory { get; } + public property System.ReadOnlySpan WrittenSpan { get; } +static class AustinHarris.JsonRpc.Serialization.Utf8Json + public field static const System.Int32 MaxDateTimeLength + public field static const System.String NaNText + public field static const System.String NegativeInfinityText + public field static const System.String PositiveInfinityText + public method static AustinHarris.JsonRpc.Serialization.JsonRpcIdKind ClassifyId(System.ReadOnlySpan raw) + public method static System.Boolean EqualsIgnoreAsciiCase(System.ReadOnlySpan a, System.ReadOnlySpan b) + public method static System.Boolean TryParseNonFinite(System.ReadOnlySpan text, out ref System.Double value) + public method static System.Boolean TryParseNonFinite(System.String text, out ref System.Double value) + public method static System.Int32 FormatDateTime(System.Span dest, System.DateTime value) + public method static System.Int32 FormatDateTimeOffset(System.Span dest, System.DateTimeOffset value) + public method static System.Int32 Hash(System.ReadOnlySpan bytes) + public method static System.Int32 Unescape(System.ReadOnlySpan contents, System.Span dest) + public method static System.Object IdToObject(System.ReadOnlySpan raw, AustinHarris.JsonRpc.Serialization.JsonRpcIdKind kind) + public method static System.String DecodeString(System.ReadOnlySpan contents) + public method static System.String NonFiniteText(System.Double value) + public method static System.String ToStringUtf8(System.ReadOnlySpan utf8) + public method static System.Void WriteAscii(System.Buffers.IBufferWriter w, System.ReadOnlySpan chars) + public method static System.Void WriteBool(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Boolean value) + public method static System.Void WriteBool(System.Buffers.IBufferWriter w, System.Boolean value) + public method static System.Void WriteByte(System.Buffers.IBufferWriter w, System.Byte b) + public method static System.Void WriteChar(System.Buffers.IBufferWriter w, System.Char value) + public method static System.Void WriteDateTime(System.Buffers.IBufferWriter w, System.DateTime value) + public method static System.Void WriteDateTimeOffset(System.Buffers.IBufferWriter w, System.DateTimeOffset value) + public method static System.Void WriteDecimal(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Decimal value) + public method static System.Void WriteDecimal(System.Buffers.IBufferWriter w, System.Decimal value) + public method static System.Void WriteDouble(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Double value) + public method static System.Void WriteDouble(System.Buffers.IBufferWriter w, System.Double value) + public method static System.Void WriteId(System.Buffers.IBufferWriter w, System.Object id) + public method static System.Void WriteInt64(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Int64 value) + public method static System.Void WriteInt64(System.Buffers.IBufferWriter w, System.Int64 value) + public method static System.Void WriteNull(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w) + public method static System.Void WriteNull(System.Buffers.IBufferWriter w) + public method static System.Void WritePropertyName(System.Buffers.IBufferWriter w, System.String name) + public method static System.Void WriteQuotedAscii(System.Buffers.IBufferWriter w, System.String text) + public method static System.Void WriteRaw(System.Buffers.IBufferWriter w, System.ReadOnlySpan raw) + public method static System.Void WriteSingle(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.Single value) + public method static System.Void WriteSingle(System.Buffers.IBufferWriter w, System.Single value) + public method static System.Void WriteString(AustinHarris.JsonRpc.Serialization.PooledByteBufferWriter w, System.String value) + public method static System.Void WriteString(System.Buffers.IBufferWriter w, System.ReadOnlySpan value) + public method static System.Void WriteString(System.Buffers.IBufferWriter w, System.String value) + public method static System.Void WriteUInt64(System.Buffers.IBufferWriter w, System.UInt64 value) +static class AustinHarris.JsonRpc.ServiceBinder + public method static AustinHarris.JsonRpc.RpcBinding BindInterface(System.String sessionId, TInterface implementation, AustinHarris.JsonRpc.RpcInterfaceBindingOptions options = null) + public method static AustinHarris.JsonRpc.RpcBinding BindInterface(TInterface implementation, AustinHarris.JsonRpc.RpcInterfaceBindingOptions options = null) + public method static System.Boolean UnbindMethod(System.String name) + public method static System.Boolean UnbindMethod(System.String sessionId, System.String name) + public method static System.Void BindMethod(System.String name, System.Delegate implementation, System.String[] parameterNames = null, System.Collections.Generic.IDictionary defaults = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static System.Void BindMethod(System.String name, System.Delegate implementation, System.String[] parameterNames, System.Collections.Generic.IDictionary defaults) + public method static System.Void BindMethod(System.String sessionId, System.String name, System.Delegate implementation, System.String[] parameterNames = null, System.Collections.Generic.IDictionary defaults = null, AustinHarris.JsonRpc.RpcContextFlow contextFlow = None) + public method static System.Void BindMethod(System.String sessionId, System.String name, System.Delegate implementation, System.String[] parameterNames, System.Collections.Generic.IDictionary defaults) + public method static System.Void BindService(System.String sessionId, System.Object instance) + public method static System.Void BindService(System.String sessionId, System.Type serviceType, System.Func resolve) + public method static System.Void BindService() + public method static System.Void BindService(System.String sessionId) +## AustinHarris.JsonRpc.AspNetCore 2.0.0.0 PublicKeyToken=e6819c02cf4aec44 + informational=2.0.0-preview.3 +class AustinHarris.JsonRpc.AspNetCore.JsonRpcConnectionHandler : Microsoft.AspNetCore.Connections.ConnectionHandler + public ctor JsonRpcConnectionHandler(Microsoft.Extensions.Options.IOptions options, System.IServiceProvider services = null) + public method virtual System.Threading.Tasks.Task OnConnectedAsync(Microsoft.AspNetCore.Connections.ConnectionContext connection) +static class AustinHarris.JsonRpc.AspNetCore.JsonRpcEndpoint + public method static System.Threading.Tasks.Task HandleAsync(Microsoft.AspNetCore.Http.HttpContext http, AustinHarris.JsonRpc.AspNetCore.JsonRpcOptions options) +class AustinHarris.JsonRpc.AspNetCore.JsonRpcOptions + public ctor JsonRpcOptions() + public property AustinHarris.JsonRpc.Serialization.JsonRpcSerializer Serializer { get; set; } + public property System.Boolean EnableAsyncMethods { get; set; } + public property System.Boolean NoContentForNotifications { get; set; } + public property System.Func ContextFactory { get; set; } + public property System.Func SessionSelector { get; set; } + public property System.Func ServiceProviderSelector { get; set; } + public property System.Int64 MaxRequestBytes { get; set; } + public property System.String ResponseContentType { get; set; } + public property System.String SessionId { get; set; } +static class AustinHarris.JsonRpc.AspNetCore.JsonRpcServiceCollectionExtensions + public method static Microsoft.AspNetCore.Builder.IEndpointConventionBuilder MapJsonRpc(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder endpoints, System.String pattern = /jsonrpc, AustinHarris.JsonRpc.AspNetCore.JsonRpcOptions options = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpc(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcService(Microsoft.Extensions.DependencyInjection.IServiceCollection services, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime, System.String sessionId = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcService(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.String sessionId = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcServicesFromAssembly(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Reflection.Assembly assembly, Microsoft.Extensions.DependencyInjection.ServiceLifetime lifetime, System.String sessionId = null) + public method static Microsoft.Extensions.DependencyInjection.IServiceCollection AddJsonRpcServicesFromAssembly(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Reflection.Assembly assembly, System.String sessionId = null) +## AustinHarris.JsonRpc.SystemTextJson 2.0.0.0 PublicKeyToken=e6819c02cf4aec44 + informational=2.0.0-preview.3 +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcBooleanConverter : System.Text.Json.Serialization.JsonConverter`1[[System.Boolean, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcBooleanConverter() + public method virtual System.Boolean Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.Boolean value, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcCharConverter : System.Text.Json.Serialization.JsonConverter`1[[System.Char, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcCharConverter() + public method virtual System.Char Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.Char value, System.Text.Json.JsonSerializerOptions options) +static class AustinHarris.JsonRpc.SystemTextJson.JsonRpcConverters + public method static System.Boolean ContainsAll(System.Text.Json.JsonSerializerOptions options) + public method static System.Collections.Generic.IEnumerable Create() + public method static System.Void AddMissing(System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcDateTimeConverter : System.Text.Json.Serialization.JsonConverter`1[[System.DateTime, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcDateTimeConverter() + public method virtual System.DateTime Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.DateTime value, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcDateTimeOffsetConverter : System.Text.Json.Serialization.JsonConverter`1[[System.DateTimeOffset, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]] + public ctor JsonRpcDateTimeOffsetConverter() + public method virtual System.DateTimeOffset Read(ref System.Text.Json.Utf8JsonReader reader, System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) + public method virtual System.Void Write(System.Text.Json.Utf8JsonWriter writer, System.DateTimeOffset value, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.JsonRpcNumberConverterFactory : System.Text.Json.Serialization.JsonConverterFactory + public ctor JsonRpcNumberConverterFactory() + public method virtual System.Boolean CanConvert(System.Type typeToConvert) + public method virtual System.Text.Json.Serialization.JsonConverter CreateConverter(System.Type typeToConvert, System.Text.Json.JsonSerializerOptions options) +sealed class AustinHarris.JsonRpc.SystemTextJson.SystemTextJsonRpcSerializer : AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + public ctor SystemTextJsonRpcSerializer() + public ctor SystemTextJsonRpcSerializer(System.Text.Json.JsonSerializerOptions options) + public method static System.Text.Json.JsonSerializerOptions CreateDefaultOptions() + public method virtual System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, T value) + public method virtual T Read(System.ReadOnlySpan utf8Json) + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } + public property System.Text.Json.JsonSerializerOptions DefaultOptions { get; } + public property System.Text.Json.JsonSerializerOptions EffectiveOptions { get; } + public property System.Text.Json.JsonSerializerOptions Options { get; } +## AustinHarris.JsonRpc.Newtonsoft 2.0.0.0 PublicKeyToken=e6819c02cf4aec44 + informational=2.0.0-preview.3 +static class AustinHarris.JsonRpc.Newtonsoft.NewtonsoftJsonRpc + public method static AustinHarris.JsonRpc.Newtonsoft.NewtonsoftJsonRpcSerializer SerializerFor(Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.String ProcessSync(System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.String ProcessSync(System.String sessionId, System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Threading.Tasks.Task Process(System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Threading.Tasks.Task Process(System.String sessionId, System.String jsonRpc, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Void Process(AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) + public method static System.Void Process(System.String sessionId, AustinHarris.JsonRpc.JsonRpcStateAsync async, System.Object context, Newtonsoft.Json.JsonSerializerSettings settings) +sealed class AustinHarris.JsonRpc.Newtonsoft.NewtonsoftJsonRpcSerializer : AustinHarris.JsonRpc.Serialization.JsonRpcSerializer + public ctor NewtonsoftJsonRpcSerializer() + public ctor NewtonsoftJsonRpcSerializer(Newtonsoft.Json.JsonSerializerSettings settings) + public method virtual System.Object Read(System.ReadOnlySpan utf8Json, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, System.Object value, System.Type type) + public method virtual System.Void Write(System.Buffers.IBufferWriter output, T value) + public method virtual T Read(System.ReadOnlySpan utf8Json) + public property Newtonsoft.Json.JsonSerializer Serializer { get; } + public property Newtonsoft.Json.JsonSerializerSettings Settings { get; } + public property System.Boolean Lenient { get; } + public property System.Int32 MaxDepth { get; } + public property System.String Name { get; } diff --git a/docs/api-surface/README.md b/docs/api-surface/README.md new file mode 100644 index 0000000..78e3f2d --- /dev/null +++ b/docs/api-surface/README.md @@ -0,0 +1,13 @@ +# Public API surface + +One text file per published version: every public and protected member of the four assemblies, sorted, with the +assembly identity (version and public key token) at the top of each section. The files are produced by +`.github/scripts/api_surface` against the packages on nuget.org and are diffed to review what a release changes: + +``` +dotnet run --project .github/scripts/api_surface -c Release -p:JsonRpcVersion=2.0.0-preview.3 -- docs/api-surface/2.0.0-preview.3.txt +diff docs/api-surface/2.0.0-preview.1.txt docs/api-surface/2.0.0-preview.3.txt +``` + +`2.0.0-preview.3.txt` is the surface frozen for 2.0.0: the final release must diff against it in the two +version lines of each section only. A later minor may add lines; removing or changing one is a major. diff --git a/docs/upgrading.md b/docs/upgrading.md index aa45930..3b1ba7d 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -8,6 +8,7 @@ Most 1.x services run unchanged. Read the first list before you build, and the s - **Session parameter.** The session parameter is spelled `sessionId` everywhere; a named argument `sessionID:` must be updated. - **MethodInfo names.** `RpcMethod.FromMethod` is `FromMethodInfo` and `RpcInterfaceMethod.Method` is `MethodInfo` (both were new in the 2.0 preview). - **Serializer.** `JsonRpcProcessor.Process(…, JsonSerializerSettings)` is gone from the core. Use `Config.SetSerializer(new NewtonsoftJsonRpcSerializer(settings))` from the Newtonsoft package, or the helper overloads there that take the settings. +- **Newtonsoft.Json.** The core no longer depends on it. Code that handles `JObject` or `JArray` (a pre-process handler inspecting `request.Params`, a cast of `JsonRequest.Params`) needs the `AustinHarris.JsonRpc.Newtonsoft` package and the serializer selected with `Config.SetSerializer(new NewtonsoftJsonRpcSerializer())`. Without the second step the built-in serializer is active and those casts are false at run time, with no compiler error. - **Overloads.** The default-session string overloads that take a serializer take it first: `Process(serializer, json, context)` and `ProcessSync(serializer, json, context)`. `ProcessSync(sessionId, json, context, serializer)` makes `context` required, so `ProcessSync(json, null)` still means the default session. `Process` and `ProcessAsync` do not: `Process(json, null)` no longer compiles (it is ambiguous with the `JsonRpcStateAsync` overload), and `ProcessAsync(json, null)` binds to the session overload with `json` as the session id and a null document, which throws `ArgumentNullException`. Write `Process(json)`, `Process(json, context: null)` or `ProcessAsync(json, context: null)`. - **DTOs.** `JsonRequest`, `JsonResponse` and `JsonRpcException` are plain DTOs without Json.NET attributes. `JsonRequest.Params` is the active serializer's object model, so cast to `JObject`/`JArray` only when the Json.NET serializer is active. - **SMD.** `SMD.Services` is an `SMDServiceCollection` (an `IDictionary`) instead of a `Dictionary`, and its setter is gone. Every mutation through it updates the dispatch table at once, so a removed method is unreachable immediately. `SMD.Types` is now `Dictionary>` and a process-wide registry (it was reset whenever a session was created).