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).