diff --git a/Capnp.Net.Runtime.Core21/Capnp.Net.Runtime.Core21.csproj b/Capnp.Net.Runtime.Core21/Capnp.Net.Runtime.Core21.csproj
index 909ef7f..60c4831 100644
--- a/Capnp.Net.Runtime.Core21/Capnp.Net.Runtime.Core21.csproj
+++ b/Capnp.Net.Runtime.Core21/Capnp.Net.Runtime.Core21.csproj
@@ -2,6 +2,21 @@
netcoreapp2.1
+ true
+ Capnp.Net.Runtime
+ Christian Köllner and contributors
+
+ capnproto-dotnetcore
+ A Cap'n Proto implementation for .NET Core, runtime assembly for .NET Core 2.1
+ Christian Köllner and contributors
+ MIT
+
+ https://github.com/c80k/capnproto-dotnetcore
+ https://github.com/c80k/capnproto-dotnetcore
+ Capnp.Net.Runtime
+ Capnp
+ Git
+ capnp "Cap'n Proto" RPC serialization cerealization
diff --git a/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj b/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj
index 9f5c4b9..a9005bb 100644
--- a/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj
+++ b/Capnp.Net.Runtime.Tests.Core21/Capnp.Net.Runtime.Tests.Core21.csproj
@@ -38,7 +38,7 @@
-
+
diff --git a/Capnp.Net.Runtime.Tests/Capnp.Net.Runtime.Tests.Std20.csproj b/Capnp.Net.Runtime.Tests/Capnp.Net.Runtime.Tests.Std20.csproj
index 0fabb7b..d5e3394 100644
--- a/Capnp.Net.Runtime.Tests/Capnp.Net.Runtime.Tests.Std20.csproj
+++ b/Capnp.Net.Runtime.Tests/Capnp.Net.Runtime.Tests.Std20.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/Capnp.Net.Runtime/Capnp.Net.Runtime.Std20.csproj b/Capnp.Net.Runtime/Capnp.Net.Runtime.Std20.csproj
deleted file mode 100644
index 7823ba4..0000000
--- a/Capnp.Net.Runtime/Capnp.Net.Runtime.Std20.csproj
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
- netstandard2.0
- Capnp
- 7.2
- Capnp.Net.Runtime.Std20
-
-
-
- TRACE
-
-
-
-
-
-
-
diff --git a/Capnp.Net.Runtime/Capnp.Net.Runtime.Std20.xml b/Capnp.Net.Runtime/Capnp.Net.Runtime.Std20.xml
new file mode 100644
index 0000000..ee19157
--- /dev/null
+++ b/Capnp.Net.Runtime/Capnp.Net.Runtime.Std20.xml
@@ -0,0 +1,3172 @@
+
+
+
+ Capnp.Net.Runtime
+
+
+
+
+ Generic implementation, based on a wrapper around .
+
+
+
+
+ The will be set by the Deserialize method.
+
+
+
+
+ Sets the State property.
+
+ deserializer state
+
+
+
+ Performs a deep copy from State to given state.
+
+ serializer state
+
+
+
+ Provides functionality to construct domain objects from .
+
+
+
+
+ Constructs a domain object from a given deserializer state.
+
+ Type of domain object to construct. Must be one of the following:
+
+ - Type implementing . The type must must have a public parameterless constructor.
+ - A capability interface ( for further explanation)
+
+
+
+
+
+
+
+
+
+
+
+
+ - whereby T is one of the things listed here.
+
+
+
+
+
+
+
+ This exception gets thrown when a Cap'n Proto object could not be deserialized correctly.
+
+
+
+
+ Implements the heart of deserialization. This stateful helper struct exposes all functionality to traverse serialized data.
+ Although it is public, you should not use it directly. Instead, use the reader, writer, and domain class adapters which are produced
+ by the code generator.
+
+
+
+
+ A wire message is essentially a collection of memory blocks.
+
+
+
+
+ Index of the segment (into the Segments property) which this state currently refers to.
+
+
+
+
+ Word offset within the current segment which this state currently refers to.
+
+
+
+
+ Context-dependent meaning: Usually the number of bytes traversed until this state was reached, to prevent amplification attacks.
+ However, if this state is of Kind == ObjectKind.Value (an artificial category which will never occur on the wire but is used to
+ internally represent lists of primitives as lists of structs), it contains the primitive's value.
+
+
+
+
+ If this state currently represents a list, the number of list elements.
+
+
+
+
+ If this state currently represents a struct, the struct's data section word count.
+
+
+
+
+ If this state currently represents a struct, the struct's pointer section word count.
+
+
+
+
+ The kind of object this state currently represents.
+
+
+
+
+ The capabilities imported from the capability table. Only valid in RPC context.
+
+
+
+
+ Current segment (essentially Segments[CurrentSegmentIndex]
+
+
+
+
+ Constructs a state representing a message root object.
+
+ the message
+
+
+
+
+ Implicitly converts a serializer state into a deserializer state.
+ The conversion is cheap, since it does not involve copying any payload.
+
+ The serializer state to be converted
+
+
+
+ Constructs a state representing the given value. This kind of state is artificial and beyond the Cap'n Proto specification.
+ We need it to internally represent list of primitive values as lists of structs.
+
+
+
+
+ Increments the number of bytes traversed and checks the results against the traversal limit.
+
+ Amount to increase the traversed bytes
+
+
+
+ Memory span which represents this struct's data section (given this state actually represents a struct)
+
+
+
+
+ If this state represents a list of primitive values, returns the raw list data.
+
+
+
+
+ Interprets a pointer within the current segment and mutates this state to represent the pointer's target.
+
+ word offset relative to this.Offset within current segment
+ offset negative or out of range
+ invalid pointer data or traversal limit exceeded
+
+
+
+ Interprets a pointer within the current segment as capability pointer and returns the according low-level capability object from
+ the capability table. Does not mutate this state.
+
+ Offset relative to this.Offset within current segment
+ the low-level capability object
+ offset negative or out of range
+ capability table not set
+ not a capability pointer or invalid capability index
+
+
+
+ Reads a slice of up to 64 bits from this struct's data section, starting from the specified bit offset.
+ The slice must be aligned within a 64 bit word boundary.
+
+ Start bit offset relative to the data section, little endian
+ numbers of bits to read
+ the data
+ non-aligned access
+ bitOffset exceeds the data section
+ this state does not represent a struct
+
+
+
+ Decodes a pointer from this struct's pointer section and returns the state representing the pointer target.
+ It is valid to specify an index beyond the pointer section, in which case a default state (representing the "null object")
+ will be returned. This is to preserve upward compatibility with schema evolution.
+
+ Index within the pointer section
+ the target state
+ this state does not represent a struct,
+ invalid pointer, or traversal limit exceeded
+
+
+
+ Given this state represents a list (of anything), returns a ListDeserializer to further decode the list content.
+
+ state does not represent a list
+
+
+
+ Given this state represents a list of pointers, returns a ListOfCapsDeserializer for decoding it as list of capabilities.
+
+ Capability interface
+ state does not represent a list of pointers
+
+
+
+ Convenience method. Given this state represents a struct, decodes text field from its pointer table.
+
+ index within this struct's pointer table
+ default text to return of pointer is null
+ the decoded text, or defaultText (which might be null)
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-list-of-bytes pointer, traversal limit exceeded
+
+
+
+ Convenience method. Given this state represents a struct, decodes a list deserializer field from its pointer table.
+
+ index within this struct's pointer table
+ the list deserializer instance
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-list pointer, traversal limit exceeded
+
+
+
+ Convenience method. Given this state represents a struct, decodes a capability list field from its pointer table.
+
+ Capability interface
+ index within this struct's pointer table
+ the capability list deserializer instance
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-list-of-pointers pointer, traversal limit exceeded
+
+
+
+ Convenience method. Given this state represents a struct, decodes a list of structs field from its pointer table.
+
+ Struct target representation type
+ index within this struct's pointer table
+ constructs a target representation type instance from the underlying deserializer state
+ the decoded list of structs
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-list-of-{structs,pointers} pointer, traversal limit exceeded
+
+
+
+ Convenience method. Given this state represents a struct, decodes a struct field from its pointer table.
+
+ Struct target representation type
+ index within this struct's pointer table
+ constructs a target representation type instance from the underlying deserializer state
+ the decoded struct
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-struct pointer, traversal limit exceeded
+
+
+
+ Given this state represents a capability, returns its index into the capability table.
+
+
+
+
+ Given this state represents a struct, decodes a capability field from its pointer table.
+
+ Capability interface
+ index within this struct's pointer table
+ capability instance or null if pointer was null
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-capability pointer, traversal limit exceeded
+
+
+
+ Given this state represents a struct, decodes a capability field from its pointer table and
+ returns it as bare (generic) proxy.
+
+ index within this struct's pointer table
+ capability instance or null if pointer was null
+ negative index
+ state does not represent a struct, invalid pointer,
+ non-capability pointer, traversal limit exceeded
+
+
+
+ Given this state represents a capability, wraps it into a proxy instance for the desired interface.
+
+ Capability interface
+ capability instance or null if pointer was null
+ negative index
+ state does not represent a capability
+
+
+
+ This SerializerState specialization provides functionality to build arbitrary Cap'n Proto objects without requiring the schema code generator.
+
+
+
+
+ Constructs an unbound instance.
+
+
+
+
+ Constructs an instance and binds it to the given .
+
+ message builder
+
+
+
+ Constructs an instance, binds it to a dedicated message builder, and initializes the capability table for usage in RPC context.
+
+
+
+
+ Converts any to a DynamicSerializerState instance, which involves deep copying the object graph.
+
+ The deserializer state to convert
+
+
+
+
+
+ Determines the underlying object to be a struct.
+
+ Desired size of the struct's data section, in words
+ Desired size of the struct's pointer section, in words
+ The object type was already set to something different
+
+
+
+ Determines the underlying object to be a list of (primitive) values.
+
+ Element size in bits, must be 0 (void), 1 (bool), 8, 16, 32, or 64
+ Desired element count
+ The object type was already set to something different
+ outside allowed range,
+ negative or exceeding 2^29-1
+
+
+
+ Determines the underlying object to be a list of pointers.
+
+ Desired element count
+ The object type was already set to something different
+ negative or exceeding 2^29-1
+
+
+
+ Determines the underlying object to be a list of structs (fixed-width compound list).
+
+ Desired element count
+ Desired size of each struct's data section, in words
+ Desired size of each struct's pointer section, in words
+ The object type was already set to something different
+ negative, or total word count would exceed 2^29-1
+
+
+
+
+ Implements an empty .
+
+
+
+
+
+ Always throws an .
+
+ Ignored
+
+
+
+ Always 0.
+
+
+
+
+ Returns an empty enumerator.
+
+
+
+
+ ListDeserializer specialization for empty lists.
+
+
+
+
+ Always ListKind.ListOfEmpty (despite the fact the empty list != List(Void)
+
+
+
+
+ Returns am empty .
+
+ Element ype
+ Ignored
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty string.
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ Returns an empty .
+
+
+
+
+ The FramePump handles sending and receiving Cap'n Proto messages over a stream. It exposes a Send method for writing frames to the stream, and an
+ event handler for processing received frames. It does not fork any new thread by itself, but instead exposes a synchronous blocking Run method that
+ implements the receive loop. Invoke this method in the thread context of your choice.
+
+
+
+
+ Constructs a new instance for given stream.
+
+ The stream for message I/O.
+ If you intend to receive messages, the stream must support reading (CanRead).
+ If you intend to send messages, the stream must support writing (CanWrite).
+
+ is null.
+
+
+
+ Disposes this instance and the underlying stream. This will also cause the Run method to return.
+
+
+
+
+ Event handler for frame reception.
+
+
+
+
+ Sends a message over the stream.
+
+ Message to be sent
+ The underlying stream does not support writing.
+ The message does not provide at least one segment, or one of its segments is empty.
+ An I/O error occurs.
+ This instance or stream is diposed.
+
+
+
+ Whether the pump is currently waiting for data to receive.
+
+
+
+
+ Synchronously runs the frame reception loop. Will only return after calling Dispose() or upon error condition.
+ The method does not propagate EndOfStreamException or ObjectDisposedException to the caller, since these conditions are considered
+ to be part of normal operation. It does pass exceptions which arise due to I/O errors or invalid data.
+
+ The underlying stream does not support reading or is already closed.
+ Encountered Invalid Framing Data
+ Received a message with too many or too big segments, probably dues to invalid data.
+ An I/O error occurs.
+
+
+
+ Supports the deserialization of Cap'n Proto messages from a stream (see https://capnproto.org/encoding.html#serialization-over-a-stream).
+ Packing and compression cannot be handled yet.
+
+
+
+
+ Deserializes a message from given stream.
+
+ The stream to read from
+ The deserialized message
+ is null.
+ The stream does not support reading, is null, or is already closed.
+ The end of the stream is reached.
+ The stream is closed.
+ An I/O error occurs.
+ Encountered invalid framing data.
+ Too many or too large segments, probably due to invalid framing data.
+
+
+
+ This interface is intended to be implemented by schema-generated domain classes which support deserialization from
+ a and serialization to a .
+
+
+
+
+ Serializes the implementation's current state to a serializer state.
+
+ Target serializer state
+
+
+
+ Deserializes the implementation's state from a deserializer state.
+
+ Source deserializer state
+
+
+
+ Implements a segment allocation policy for Cap'n Proto building messages.
+
+
+
+
+ Currently allocated segments.
+
+
+
+
+ Attempts to allocate a memory block. The first allocation attempt is made inside the segment specified by .
+ If that segment does not provide enough space or does not exist, further actions depend on the flag.
+ If that flag is true, allocation will fail (return false). Otherwise, the allocation shall scan existing segments for the requested amount of space,
+ and create a new segment if none provides enough space.
+
+ Number of words to allocate
+ Index of preferred segment wherein the block should be allocated
+ Position of allocated memory block (undefined in case of failure)
+ Whether the segment specified by is mandatory
+ Whether allocation was successful
+
+
+
+ An implementations of this interface represents a struct which is being deserialized from a Cap'n Proto object.
+
+
+
+
+ Reads a slice of up to 64 bits from this struct's data section, starting from the specified bit offset.
+ The slice must be aligned within a 64 bit word boundary.
+
+ Start bit offset relative to the data section, little endian
+ numbers of bits to read
+ the data
+ non-aligned access
+ bitOffset exceeds the data section
+ this state does not represent a struct
+
+
+
+ An implementations of this interface represents a struct which is being serialized as Cap'n Proto object.
+
+
+
+
+ Writes data (up to 64 bits) into the underlying struct's data section.
+ The write operation must be aligned to fit within a single word.
+
+ Start bit relative to the struct's data section, little endian
+ Number of bits to write
+ Data bits to write
+ The object was not determined to be a struct
+ The data slice specified by and
+ is not completely within the struct's data section, misaligned, exceeds one word, or is negative
+
+
+
+ The struct's data section as memory span.
+
+
+
+
+ Base class for interpreting a as List(T).
+
+
+
+
+ Underlying deserializer state
+
+
+
+
+ This list's element count
+
+
+
+
+ The list's element category
+
+
+
+
+ Represents this list by applying a selector function to each element's deserializer state.
+ This operator is only supported by certain specializations.
+
+ Target element type
+ Selector function
+ The desired representation
+
+
+
+ Represents this list as a list of lists.
+
+ The list of lists representation, each element being a on its own.
+ If this kind of list cannot be represented as list of lists (because it is a list of non-pointers)
+
+
+
+ Represents this list as a list of capabilities.
+
+ Capability interface
+ Capability list representation
+ If this kind of list cannot be represented as list of capabilities (because it is a list of non-pointers)
+ If does not qualify as capability interface.
+
+
+
+ Represents this list as n-dimensional list of T, with T being a primitive type.
+
+ Element type, must be primitive
+ Number of dimensions
+ The desired representation as >]]>
+ is less than or equal to 0
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as n-dimensional list of T, with T being any type.
+
+ Element type
+ Number of dimensions
+ Selector function which constructs an instance of from a
+ The desired representation as >]]>
+ is null.
+ is less than or equals 0.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as n-dimensional list of enums.
+
+ Enum type
+ Number of dimensions
+ Cast function which converts ushort value to enum value
+ The desired representation as >]]>
+ is null.
+ is less than or equals 0.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as n-dimensional List(...List(Void))
+
+ Number of dimensions
+ The desired representation as >]]>
+ is less than or equals 0
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as "matrix" (jagged array) with primitive element type.
+
+ Element type, must be primitive
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Data).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as "matrix" (jagged array) with complex element type.
+
+ Element type
+ Selector function which constructs an instance of from a
+ The desired representation
+ is null.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as "matrix" (jagged array) of enum-typed elements.
+
+ Enum type
+ Cast function which converts ushort value to enum value
+ The desired representation
+ is null.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as 3-dimensional jagged array with primitive element type.
+
+ Element type, must be primitive
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as 3-dimensional jagged array with complex element type.
+
+ Element type
+ Selector function which constructs an instance of from a
+ The desired representation
+ is null.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as 3-dimensional jagged array of enum-typed elements.
+
+ Enum type
+ Cast function which converts ushort value to enum value
+ The desired representation
+ is null.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as list of enum-typed elements.
+
+ Enum type
+ Cast function which converts ushort value to enum value
+ The desired representation
+ is null.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Void), which boils down to returning the number of elements.
+
+ The List(Void) representation which is nothing but the list's element count.
+
+
+
+ Represents this list as List(List(Void)), which boils down to returning a list of element counts.
+
+ A list of integers whereby each number equals the sublist's element count.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(List(List(Void))).
+
+ The List(List(List(Void))) representation which is in turn a 2-dimensional jagged array of element counts.
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Text). For representing it as Text, use .
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as Text. For representing it as List(Text), use .
+
+
+ Did you notice that the naming pattern is broken here? For every other CastX method, X depicts the element type.
+ CastX actually means "represent this list as list of X". Logically, the semantics of CastText should be the semantics
+ implemented by CastText2. And this method's name should be "CastChar". This wouldn't be accurate either, since a string
+ is semantically more than the list of its characters. Trying to figure out a consistent naming pattern, we'd probably
+ end up in less concise method names (do you have a good suggestion?). Considering this and the fact that you probably
+ won't use these methods directly (because the code generator will produce nice wrappers for you) it seems acceptable to
+ live with the asymmetric and somewhat ugly naming.
+
+ The decoded text
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Bool).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Int8).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(UInt8).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Int16).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(UInt16).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Int32).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(UInt32).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(UInt64).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Float32).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Represents this list as List(Float64).
+
+ The desired representation
+ If this list cannot be represented in the desired manner.
+
+
+
+ Enumerates the list element categories which are defined by Cap'n Proto.
+
+
+
+
+ List(Void)
+
+
+
+
+ List(Bool)
+
+
+
+
+ List(Int8) or List(UInt8)
+
+
+
+
+ List(Int16), List(UInt16), or List(Enum)
+
+
+
+
+ List(Int32), List(UInt32), or List(Float32)
+
+
+
+
+ List(Int64), List(UInt64), or List(Float64)
+
+
+
+
+ A list of pointers
+
+
+
+
+ A list of fixed-size composites (i.e. structs)
+
+
+
+
+ ListDeserializer specialization for a List(Bool).
+
+
+
+
+ Always ListKind.ListOfBits
+
+
+
+
+ Gets the element at given index.
+
+ Element index
+ Element value
+ is out of range.
+
+
+
+ Implements
+
+
+
+
+
+ Return this
+
+
+
+
+ Always throws since it is not intended to represent a list of bits differently.
+
+
+
+
+ SerializerState specialization for a List(Bool).
+
+
+
+
+ Gets or sets the element at given index.
+
+ Element index
+ Element value
+ List was not initialized, or attempting to overwrite a non-null element.
+ is out of range.
+
+
+
+ This list's element count.
+
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+ The list was already initialized
+ is negative or greater than 2^29-1
+
+
+
+ Initializes the list with given content.
+
+ List content. Can be null in which case the list is simply not initialized.
+ The list was already initialized
+ More than 2^29-1 items.
+
+
+
+ Implements
+
+
+
+
+ ListDeserializer specialization for a list of capabilities.
+
+ Capability interface
+
+
+
+ Returns the capability at given index.
+
+ Element index
+ The capability at given index (in terms of its proxy instance)
+
+
+
+ Always ListKind.ListOfPointers
+
+
+
+
+ Always throws , since it is not intended to convert a capability list to anything else.
+
+
+
+
+
+ SerializerState specialization for a list of capabilities.
+
+ Capability interface
+
+
+
+ Constructs an instance.
+
+ does not quality as capability interface.
+ The implementation might attempt to throw this exception earlier in the static constructor (during type load). Currently it doesn't
+ because there is a significant risk of messing something up and ending with a hard-to-debug .
+
+
+
+ Gets or sets the capability at given element index.
+
+ Element index
+ Proxy object of capability at given element index
+ List was not initialized, or attempting to overwrite an already set element.
+ is out of range.
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+ The list was already initialized
+ is negative or greater than 2^29-1
+
+
+
+ Initializes the list with given content.
+
+ List content. Can be null in which case the list is simply not initialized.
+ The list was already initialized
+ More than 2^29-1 items.
+
+
+
+ This list's element count.
+
+
+
+
+
+ ListDeserializer specialization for List(Void).
+
+
+
+
+ Returns a DeserializerState representing an element at given index.
+ This is always the null object, since Void cannot carry any data.
+
+ Element index
+ default(DeserializerState)
+ is out of range.
+
+
+
+ Always ListKind.ListOfEmpty
+
+
+
+
+ Applies a selector function to each element.
+ Trivia: Since each element is the null object, the selector function always gets fed with a null object.
+
+ Element target type
+ Selector function
+ The desired representation
+
+
+
+ Implements .
+
+
+
+
+ SerializerState specialization for List(Void).
+
+
+
+
+ This list's element count.
+
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+ The list was already initialized
+ is negative or greater than 2^29-1
+
+
+
+ ListDeserializer specialization for List(T) when T is unknown (generic), List(Data), List(Text), and List(List(...)).
+
+
+
+
+ Always ListKind.ListOfPointers
+
+
+
+
+ Gets the DeserializerState representing the element at given index.
+
+ Element index
+ DeserializerState representing the element at given index
+
+
+
+ Implements .
+
+
+
+
+ Applies a selector function to each element.
+
+ Element target type
+ Selector function
+ The desired representation
+
+
+
+ Interprets this instance as List(List(...)).
+
+ The desired representation. Since it is evaluated lazily, type conflicts will not happen before accessing the resulting list's elements.
+
+
+
+ Interprets this instance as a list of capabilities.
+
+ Capability interface
+ The desired representation. Since it is evaluated lazily, type conflicts will not happen before accessing the resulting list's elements.
+
+
+
+ SerializerState specialization for List(T) when T is unknown (generic), List(Data), List(Text), and List(List(...)).
+
+ SerializerState which represents the element type
+
+
+
+ Gets or sets the element at given index.
+
+ Element index
+ Serializer state representing the desired element
+ List was not initialized, or attempting to overwrite a non-null element.
+ is out of range.
+
+
+
+ This list's element count.
+
+
+
+
+ Implements .
+
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+ The list was already initialized
+ is negative or greater than 2^29-1
+
+
+
+ Initializes the list with given content.
+
+ Item type
+ List content. Can be null in which case the list is simply not initialized.
+ Serialization action to transfer a particular item into the serializer state.
+ The list was already initialized
+ More than 2^29-1 items.
+
+
+
+ ListDeserializer specialization for List(Int*), List(UInt*), List(Float*), and List(Enum).
+
+ List element type
+
+
+
+ One of ListOfBytes, ListOfShorts, ListOfInts, ListOfLongs.
+
+
+
+
+ Returns the element at given index.
+
+ Element index
+ Element value
+ is out of range.
+
+
+
+ Always throws because this specialization can never represent a List(bool).
+
+
+
+
+ Attempts to interpret this instance as List(UInt8).
+
+ The desired representation
+ Element size is different from 1 byte.
+
+
+
+ Attempts to interpret this instance as List(Int8).
+
+ The desired representation
+ Element size is different from 1 byte.
+
+
+
+ Attempts to interpret this instance as List(UInt16).
+
+ The desired representation
+ Element size is different from 2 bytes.
+
+
+
+ Attempts to interpret this instance as List(Int16).
+
+ The desired representation
+ Element size is different from 2 bytes.
+
+
+
+ Attempts to interpret this instance as List(UInt32).
+
+ The desired representation
+ Element size is different from 4 bytes.
+
+
+
+ Attempts to interpret this instance as List(Int32).
+
+ The desired representation
+ Element size is different from 4 bytes.
+
+
+
+ Attempts to interpret this instance as List(UInt64).
+
+ The desired representation
+ Element size is different from 8 bytes.
+
+
+
+ Attempts to interpret this instance as List(Int64).
+
+ The desired representation
+ Element size is different from 8 bytes.
+
+
+
+ Attempts to interpret this instance as List(Float32).
+
+ The desired representation
+ Element size is different from 4 bytes.
+
+
+
+ Attempts to interpret this instance as List(Float64).
+
+ The desired representation
+ Element size is different from 8 bytes.
+
+
+
+ Attempts to interpret this instance as List(U) whereby U is a struct, applying a selector function to each element.
+
+ Selector function
+ The desired representation
+
+
+
+ Attempts to interpret this instance as Text and returns the string representation.
+
+ The decoded string
+ Element size is different from 1 byte.
+
+
+
+ Implements .
+
+
+
+
+
+ SerializerState specialization for List(Int*), List(UInt*), List(Float*), and List(Enum).
+
+ List element type, must be primitive. Static constructor will throw if the type does not work.
+
+
+
+ Gets or sets the value at given index.
+
+ Element index
+ Element value
+
+
+
+ This list's element count.
+
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+ The list was already initialized
+ is negative or greater than 2^29-1
+
+
+
+ Initializes the list with given content.
+
+ List content. Can be null in which case the list is simply not initialized.
+ The list was already initialized
+ More than 2^29-1 items.
+
+
+
+ Implements .
+
+
+
+
+
+ ListDeserializer specialization for List(T) when T is a known struct (i.e. a list of fixed-width composites).
+
+
+
+
+ Always returns ListKind.ListOfStructs
.
+
+
+
+
+ Returns the deserializer state at given index.
+
+ Element index
+ Element deserializer state
+ is out of range.
+ Traversal limit reached
+
+
+
+ Converts this list to a different representation by applying an element selector function.
+
+ Target type after applying the selector function
+ The selector function
+ The new list representation
+
+
+
+
+ SerializerState specialization for List(T) when T is a known struct (i.e. a list of fixed-width composites).
+
+ SerializerState which represents the struct type
+
+
+
+ Returns the struct serializer a given index.
+
+ Element index
+ The struct serializer
+
+
+
+ This list's element count.
+
+
+
+
+ Implementation of />
+
+
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+
+
+
+ Initializes the list with given content.
+
+ Item type
+ List content. Can be null in which case the list is simply not initialized.
+ Serialization action to transfer a particular item into the serializer state.
+ The list was already initialized
+ More than 2^29-1 items.
+
+
+
+ SerializerState specialization for List(Text)
+
+
+
+
+ Gets or sets the text at given index. Once an element is set, it cannot be overwritten.
+
+ Element index
+ List is not initialized
+ is out of range.
+ UTF-8 encoding exceeds 2^29-2 bytes
+
+
+
+ This list's element count.
+
+
+
+
+ Implementation of />
+
+
+
+
+ Initializes this list with a specific size. The list can be initialized only once.
+
+ List element count
+ The list was already initialized
+ is negative or greater than 2^29-1
+
+
+
+ Initializes the list with given content.
+
+ List content. Can be null in which case the list is simply not initialized.
+ The list was already initialized
+ More than 2^29-1 items, or the UTF-8 encoding of an individual string requires more than 2^29-2 bytes.
+
+
+
+ Runtime logging features rely on
+
+
+
+
+ Gets or sets the logger factory which will be used by this assembly.
+
+
+
+
+ Creates a new ILogger instance, using the LoggerFactory of this class.
+
+ The type using the logger
+ The logger instance
+
+
+
+ Entry point for building Cap'n Proto messages.
+
+
+
+
+ Constructs an instance using a custom segment allocator and reserves space for the root pointer.
+
+ Segment allocator implementation type
+
+
+
+ Constructs an instance using the default segment allocator and reserves space for the root pointer.
+
+ Default segment size,
+
+
+
+ Creates a new object inside the message.
+
+ Serializer state specialization
+ Serializer state instance representing the new object
+
+
+
+ Gets or sets the root object. The root object must be set exactly once per message.
+ Setting it manually is only required (and allowed) when it was created with .
+
+
+
+
+ Creates an object and sets it as root object.
+
+ Serializer state specialization
+ Serializer state instance representing the new object
+
+
+
+ Returns the wire representation of the built message.
+
+
+
+
+ Initializes the capability table for using the message builder in RPC context.
+
+
+
+
+ Returns this message builder's segment allocator.
+
+
+
+
+ The different kinds of Cap'n Proto objects.
+ Despite this is a [Flags] enum, it does not make sense to mutually combine literals.
+
+
+
+
+ The null object, obtained by decoding a null pointer.
+
+
+
+
+ A struct
+
+
+
+
+ A capability
+
+
+
+
+ A List(void)
+
+
+
+
+ A list of bits
+
+
+
+
+ A list of octets
+
+
+
+
+ A list of 16 bit words
+
+
+
+
+ A list of 32 bit words
+
+
+
+
+ A list of 64 bits words
+
+
+
+
+ A list of pointers
+
+
+
+
+ A list of fixed-width composites
+
+
+
+
+ A value. This kind of object does not exist on the wire and is not specified by Capnp.
+ It is an internal helper to represent lists of primitive values as lists of structs.
+
+
+
+
+ Provides extension methods for
+
+
+
+
+
+ Applies a selector function to each list element and stores the result in a new list.
+ As opposed to the source is evaluated immediately
+ and the result is cached.
+
+ Source element type
+ Target element type
+ Source list
+ Selector function
+ A read-only list in which each element corresponds to the source element after applying the selector function
+ or is null.
+
+
+
+ Provides deep-copy functionality to re-serialize an existing deserializer state into another serializer state.
+
+
+
+
+ Performs a deep copy of an existing deserializer state into another serializer state.
+ This implementation does not analyze the source object graph and therefore cannot detect multiple references to the same object.
+ Such cases will result in object duplication.
+
+ source state
+ target state
+ is null.
+ Target state was already set to a different object type than the source state.
+ Security violation due to amplification attack or stack overflow DoS attack,
+ or illegal pointer detected during deserialization.
+
+
+
+ Helper struct to support tail calls
+
+
+
+
+ Generic Proxy implementation which exposes the (usually protected) Call method.
+
+
+
+
+ Wraps a capability implementation in a Proxy.
+
+ Capability implementation
+ Proxy
+ is null.
+ No found on implemented interface(s).
+ Mismatch between generic type arguments (if capability interface is generic).
+ Mismatch between generic type arguments (if capability interface is generic).
+ Problem with instatiating the Skeleton (constructor threw exception).
+ Caller does not have permission to invoke the Skeleton constructor.
+ Problem with building the Skeleton type, or problem with loading some dependent class.
+
+
+
+ Constructs an unbound instance.
+
+
+
+
+ Constructs an instance and binds it to the given low-level capability.
+
+ low-level capability
+
+
+
+ Requests a method call.
+
+ Target interface ID
+ Target method ID
+ Method arguments
+ Whether it is a tail call
+ Answer promise
+
+
+
+ Provides functionality to construct Proxy and Skeleton instances from capability interfaces and objects implementing capability interfaces.
+ A capability interface is any .NET interface which is annotated with and .
+ There are some intricacies to consider that you usually don't need to care about, since all that stuff will be generated.
+
+
+
+
+ Creates a Skeleton for a given interface implementation.
+
+ Interface implementation. Must implement at least one interface which is annotated with a .
+ The Skeleton
+ is null.
+ No found on implemented interface(s).
+ Mismatch between generic type arguments (if capability interface is generic).
+ Mismatch between generic type arguments (if capability interface is generic).
+ Problem with instatiating the Skeleton (constructor threw exception).
+ Caller does not have permission to invoke the Skeleton constructor.
+ Problem with building the Skeleton type, or problem with loading some dependent class.
+
+
+
+ Validates that a given type qualifies as cpapbility interface, throws on failure.
+
+ type to check
+ is null.
+ Given typ did not qualify as capability interface.
+ Message and probably InnterException give more details.
+
+
+
+ Checkes whether a given type qualifies as cpapbility interface./> on failure.
+
+ type to check
+ true when is a capability interface
+ is null.
+
+
+
+ Constructs a Proxy for given capability interface and wraps it around given low-level capability.
+
+ Capability interface. Must be annotated with .
+ low-level capability
+ The Proxy instance which implements .
+ is null.
+ did not qualify as capability interface.
+ Mismatch between generic type arguments (if capability interface is generic).
+ Mismatch between generic type arguments (if capability interface is generic).
+ Problem with instatiating the Proxy (constructor threw exception).
+ Caller does not have permission to invoke the Proxy constructor.
+ Problem with building the Proxy type, or problem with loading some dependent class.
+
+
+
+ Base class for a low-level capability at consumer side. It is created by the . An application does not directly interact with it
+ (which is intentionally impossible, since the invocation method is internal), but instead uses a -derived wrapper.
+
+
+
+
+ Request the RPC engine to release this capability from its import table,
+ which usually also means to remove it from the remote peer's export table.
+
+
+
+
+ A uni-directional endpoint, used in conjunction with the .
+
+
+
+
+ Transmit the given Cap'n Proto message over this endpoint.
+
+
+
+
+ Close this endpoint.
+
+
+
+
+ A mono skeleton (as opposed to ) is a skeleton which implements one particular RPC interface.
+
+
+
+
+ Interface ID of this skeleton.
+
+
+
+
+ Provides support for promise pipelining.
+
+
+
+
+ Attaches a continuation to the given promise and registers the resulting task for pipelining.
+
+ Task result type
+ The promise
+ The continuation
+ Task representing the future answer
+ or is null.
+ The pomise was already registered.
+
+
+
+ Looks up the underlying promise which was previously registered for the given Task using MakePipelineAware.
+
+
+ The underlying promise
+ is null.
+ The task was not registered using MakePipelineAware.
+
+
+
+ Returns a local "lazy" proxy for a given Task.
+ This is not real promise pipelining and will probably be removed.
+
+ Capability interface type
+ The task
+ A proxy for the given task.
+ is null.
+ did not
+ quality as capability interface.
+
+
+
+ Low-level capability which as imported from a remote peer.
+
+
+
+
+ Will be thrown if a type did not qualify as capability interface.
+ In order to qualify the type must be properly annotated with a and .
+ See descriptions of these attributes for further details.
+
+
+
+
+ A promised answer due to RPC.
+
+
+ Disposing the instance before the answer is available results in a best effort attempt to cancel
+ the ongoing call.
+
+
+
+
+ Task which will complete when the RPC returns, delivering its result struct.
+
+
+
+
+ Creates a low-level capability for promise pipelining.
+
+ Path to the desired capability inside the result struct.
+ Pipelined low-level capability
+
+
+
+ Low-level interface of a capability at provider side.
+
+
+
+
+ Calls an interface method of this capability.
+
+ ID of interface to call
+ ID of method to call
+ Method arguments ("params struct")
+ Cancellation token, indicating when the call should cancelled.
+ A Task which will resolve to the call result ("result struct")
+
+
+
+ A promised capability.
+
+
+
+
+ Will eventually give the resolved capability.
+
+
+
+
+ A path from an outer Cap'n Proto struct to an inner (probably deeply nested) struct member.
+
+
+
+
+ Constructs a path from qualifiers.
+
+ List of member access elements
+
+
+
+ Constructs a path from Cap'n Proto struct member offsets.
+
+ Member offsets
+
+
+
+ Base class of an individual member access.
+
+
+ This might appear a bit of overengineering, since the only specialization is the .
+ But there might be further specializations in the future, the most obvious one being an "ArrayElementAccess".
+ Now we already have a suitable design pattern, mainly to show the abstract concept behind a member access path.
+
+
+
+
+ Serializes this instance to a .
+
+ Serialization target
+
+
+
+ Evaluates the member access on a given struct instance.
+
+ Input struct instance
+ Member value or object
+
+
+
+ The one and only member access which is currently supported: Member of a struct.
+
+
+
+
+ Constructs an instance for given struct member offset.
+
+ The Cap'n Proto struct member offset
+
+
+
+ The Cap'n Proto struct member offset
+
+
+
+
+ Serializes this instance to a .
+
+ Serialization target
+
+
+
+ Evaluates the member access on a given struct instance.
+
+ Input struct instance
+ Member value or object
+
+
+
+ The access path is a composition of individual member accesses.
+
+
+
+
+ Serializes this path th a .
+
+ The serialization target
+
+
+
+ Evaluates the path on a given object.
+
+ The object (usually "params struct") on which to evaluate this path.
+ Resulting low-level capability
+ Evaluation of this path did not give a capability
+
+
+
+ A promised answer due to RPC.
+
+
+ Disposing the instance before the answer is available results in a best effort attempt to cancel
+ the ongoing call.
+
+
+
+
+ Combines multiple skeletons to represent objects which implement multiple interfaces.
+
+
+
+
+ Adds a skeleton to this instance.
+
+ Interface ID
+ Skeleton to add
+ is null.
+ A skeleton with was already added.
+
+
+
+ Calls an interface method of this capability.
+
+ ID of interface to call
+ ID of method to call
+ Method arguments ("params struct")
+ Cancellation token, indicating when the call should cancelled.
+ A Task which will resolve to the call result
+
+
+
+ Dispose pattern implementation
+
+
+
+
+ Application-level wrapper for consumer-side capabilities.
+ The code generator will produce a Proxy specialization for each capability interface.
+
+
+
+
+ Will eventually give the resolved capability, if this is a promised capability.
+
+
+
+
+ Whether is this a broken capability.
+
+
+
+
+ Calls a method of this capability.
+
+ Interface ID to call
+ Method ID to call
+ Method arguments ("param struct")
+ Whether it is a tail call
+ For cancelling an ongoing method call
+ An answer promise
+ This instance was disposed, or transport-layer stream was disposed.
+ Capability is broken.
+ An I/O error occurs.
+
+
+
+ Dispose pattern implementation
+
+
+
+
+ Dispose pattern implementation
+
+
+
+
+ Casts this Proxy to a different capability interface.
+
+ Desired capability interface
+ Whether to Dispose() this Proxy instance
+ Proxy for desired capability interface
+ did not qualify as capability interface.
+ This capability is broken, or mismatch between generic type arguments (if capability interface is generic).
+ Mismatch between generic type arguments (if capability interface is generic).
+ Problem with instatiating the Proxy (constructor threw exception).
+ Caller does not have permission to invoke the Proxy constructor.
+ Problem with building the Proxy type, or problem with loading some dependent class.
+
+
+
+ Annotates a capability interface with its Proxy implementation.
+
+
+
+
+ Constructs this attribute.
+
+ Proxy type. This must be a class which inherits from and
+ exposes a public parameterless constructor. Moreover, it must have same amount of generic type
+ parameters like the annotated interface, with identical generic constraints.
+ is null.
+
+
+
+ The Proxy type.
+
+
+
+
+ Part of the Dispose pattern implementation.
+
+
+
+
+ Implements the Cap'n Proto RPC protocol.
+
+
+
+
+ Gets or sets the bootstrap capability.
+
+
+
+
+ Thrown when an RPC-related error condition occurs.
+
+
+
+
+ A skeleton is a wrapper around a capability interface implementation which adapts it in the way it is
+ expected by the .
+
+
+
+
+ Claims ownership on the given capability, preventing its automatic disposal.
+
+ Capability interface
+ Capability implementation
+ A disposable object. Calling Dispose() on the returned instance relinquishes ownership again.
+
+
+
+ Calls an interface method of this capability.
+
+ ID of interface to call
+ ID of method to call
+ Method arguments ("params struct")
+ Cancellation token, indicating when the call should cancelled.
+ A Task which will resolve to the call result
+
+
+
+ Dispose pattern implementation
+
+
+
+
+ Skeleton for a specific capability interface.
+
+ Capability interface
+
+
+
+ Constructs an instance.
+
+
+
+
+ Populates this skeleton's method table. The method table maps method IDs (which are consecutively numbered from 0
+ onwards) to the underlying capability's method implementations.
+
+ The method table. Index is method ID.
+
+
+
+ Gets the underlying capability implementation.
+
+
+
+
+ Gets the ID of the implemented interface.
+
+
+
+
+ Calls an interface method of this capability.
+
+ ID of interface to call
+ ID of method to call
+ Method arguments ("params struct")
+ Cancellation token, indicating when the call should cancelled.
+ A Task which will resolve to the call result
+ This Skeleton was disposed
+
+
+
+ Dispose pattern implementation
+
+
+
+
+ Annotates a capability interface with its Skeleton implementation.
+
+
+
+
+ Constructs this attribute.
+
+ Skeleton type. This must be a class which inherits from and
+ exposes a public parameterless constructor. Moreover, it must have same amount of generic type
+ parameters like the annotated interface, with identical generic constraints.
+ is null.
+
+
+
+ Gets the skeleton type.
+
+
+
+
+ TCP-based RPC implementation which will establish a connection to a TCP server implementing
+ the Cap'n Proto RPC protocol.
+
+
+
+
+ Gets a Task which completes when TCP is connected.
+
+
+
+
+ Constructs an instance and attempts to connect it to given host.
+
+ The DNS name of the remote RPC host
+ The port number of the remote RPC host
+ is null.
+ is not between System.Net.IPEndPoint.MinPort and System.Net.IPEndPoint.MaxPort.
+ An error occurred when accessing the socket.
+
+
+
+ Returns the remote bootstrap capability.
+
+ Bootstrap capability interface
+ A proxy for the bootstrap capability
+
+
+
+ Dispose pattern implementation
+
+
+
+
+ Gets the number of RPC protocol messages sent by this client so far.
+
+
+
+
+ Gets the number of RPC protocol messages received by this client so far.
+
+
+
+
+ Gets the remote port number which this client is connected to,
+ or null if the connection is not yet established.
+
+
+
+
+ Whether the I/O thread is currently running
+
+
+
+
+ Whether the I/O thread is waiting for data to receive
+
+
+
+
+ Cap'n Proto RPC TCP server.
+
+
+
+
+ Gets the number of currently active inbound TCP connections.
+
+
+
+
+ Stops accepting incoming attempts and closes all existing connections.
+
+
+
+
+ Constructs an instance.
+
+ An System.Net.IPAddress that represents the local IP address.
+ The port on which to listen for incoming connection attempts.
+ is null.
+ is not between System.Net.IPEndPoint.MinPort and System.Net.IPEndPoint.MaxPort.
+
+
+
+ Whether the thread which is responsible for acception incoming attempts is still alive.
+ The thread will die upon disposal, but also in case of a socket error condition.
+ Errors which occur on a particular connection will just close that connection and won't interfere
+ with the acceptor thread.
+
+
+
+
+ Sets the bootstrap capability. It must be an object which implements a valid capability interface
+ ().
+
+
+
+
+ Gets a snapshot of currently active connections.
+
+
+
+
+ Provides the security bounds for defeating amplification and stack overflow DoS attacks.
+ See https://capnproto.org/encoding.html#security-considerations for details.
+
+
+
+
+ The traversal limit, see https://capnproto.org/encoding.html#amplification-attack
+
+
+
+
+ The recursion limit, see https://capnproto.org/encoding.html#stack-overflow-dos-attack
+
+
+
+
+ The segment allocator default implementation.
+
+
+
+
+ Constructs an instance.
+
+ Default size (in words) of a newly allocated segment. If a single allocation requires
+ a bigger size, a bigger dedicated segment will be allocated. On the wire, segments will be truncated to their actual
+ occupancies.
+
+
+
+ The list of currently allocated segments, each one truncated to its actual occupancy.
+
+
+
+
+ Allocates memory.
+
+ Number of words to allocate
+ Preferred segment index. If enough space is available,
+ memory will be allocated inside that segment. Otherwise, a different segment will be chosen, or
+ a new one will be allocated, or allocation will fail (depending on ).
+ The allocated memory slice in case of success (default(SegmentSlice) otherwise)
+ Whether using the preferred segment is mandatory. If it is and there is not
+ enough space available, allocation will fail.
+ Whether allocation was successful.
+
+
+
+ Helper struct to represent the tuple (segment index, offset)
+
+
+
+
+ Provides extensions to the and interfaces for type-safe reading and writing.
+
+
+
+
+ Reads a boolean field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a boolean field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a byte field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a byte field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a signed byte field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a signed byte field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a ushort field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a ushort field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a short field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a short field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a uint field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a uint field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Performs a "reinterpret cast" of the struct's data section and returns a reference to a single element of the cast result.
+
+ The cast target type. Must be a primitive type which qualifies for ()]]>
+ "this" instance
+ Index within the cast result, conceptually into U[]
+ A reference to the data element
+
+
+
+ Reads an int field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes an int field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a ulong field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a ulong field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a long field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (will be XORed with the result)
+ The read value
+
+
+
+ Writes a long field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (will be XORed with the value to write)
+
+
+
+ Reads a float field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (raw bits will be XORed with the result)
+ The read value
+
+
+
+ Writes a float field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (raw bits will be XORed with the value to write)
+
+
+
+ Reads a double field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Field default value (raw bits will be XORed with the result)
+ The read value
+
+
+
+ Writes a double field.
+
+ Type implementing
+ "this" instance
+ Start bit
+ Value to write
+ Field default value (raw bits will be XORed with the value to write)
+
+
+
+ Implements the heart of serialization. Exposes all functionality to encode serialized data.
+ Although it is public, you should not use it directly. Instead, use the reader, writer, and domain class adapters which are produced
+ by the code generator. Particularly, those writer classes are actually specializations of SerializerState, adding convenience methods
+ for accessing the struct's fields.
+
+
+
+
+ Constructs a SerializerState instance for use in RPC context.
+ This particularly means that the capability table will be initialized.
+
+ Type of state (must inherit from SerializerState)
+ root object state
+
+
+
+ Constructs an unbound serializer state.
+
+
+
+
+ Constructs a serializer state which is bound to a particular message builder.
+
+ message builder to bind
+
+
+
+ Represents this state by a different serializer state specialization. This is similar to a type-cast: The underlying object remains the same,
+ but the specialization adds a particular "view" on that data.
+
+ target serializer state type
+ serializer state instance
+ The target serializer state is incompatible to this instance, because the instances do not agree on the
+ kind of underlying object (e.g. struct with particular data/pointer section size, list of something)
+
+
+
+ Whether storage space for the underlying object was already allocated. Note that allocation happens
+ lazily, i.e. constructing a SerializerState and binding it to a MessageBuilder does NOT yet result in allocation.
+
+
+
+
+ Given this state describes a struct and is allocated, returns the struct's data section.
+
+
+
+
+ Returns the allocated memory slice (given this state already is allocated). Note that this definition is somewhat
+ non-symmetric to DeserializerState.RawData
. Never mind: You should not use it directly, anyway.
+
+
+
+
+ Allocates storage for the underlying object. Does nothing if it is already allocated. From the point the object is allocated, its type cannot by changed
+ anymore (e.g. changing from struct to list, or modifying the struct's section sizes).
+
+
+
+
+
+
+ Determines the underlying object to be a struct.
+
+ Desired size of the struct's data section, in words
+ Desired size of the struct's pointer section, in words
+ The object type was already set to something different
+
+
+
+ Determines the underlying object to be a list of (primitive) values.
+
+ Element size in bits, must be 0 (void), 1 (bool), 8, 16, 32, or 64
+ Desired element count
+ The object type was already set to something different
+ outside allowed range,
+ negative or exceeding 2^29-1
+
+
+
+ Determines the underlying object to be a list of pointers.
+
+ Desired element count
+ The object type was already set to something different
+ negative or exceeding 2^29-1
+
+
+
+ Determines the underlying object to be a list of structs (fixed-width compound list).
+
+ Desired element count
+ Desired size of each struct's data section, in words
+ Desired size of each struct's pointer section, in words
+ The object type was already set to something different
+ negative, or total word count would exceed 2^29-1
+
+
+
+ Determines the underlying object to be a list of bytes and encodes the given text.
+
+ text to encode
+ is null
+ Trying to obtain the UTF-8 encoding might throw this exception.
+ The object type was already set to something different
+ UTF-8 encoding exceeds 2^29-2 bytes
+
+
+
+ Writes data (up to 64 bits) into the underlying struct's data section.
+ The write operation must be aligned to fit within a single word.
+
+ Start bit relative to the struct's data section, little endian
+ Number of bits to write
+ Data bits to write
+ The object was not determined to be a struct
+ The data slice specified by and
+ is not completely within the struct's data section, misaligned, exceeds one word, or is negative
+
+
+
+ Reads data (up to 64 bits) from the underlying struct's data section.
+ The write operation must be aligned to fit within a single word.
+
+ Start bit relative to the struct's data section, little endian
+ Number of bits to read
+ Data bits which were read
+ The object was not determined to be a struct
+ The data slice specified by and
+ is not completely within the struct's data section, misaligned, exceeds one word, or is negative
+
+
+
+ Constructs a new object at a struct field or list element, or returns the serializer state for an existing object.
+
+ Target state type
+ If the underlying object is a struct: index into the struct's pointer section.
+ If the underlying object is a list of pointers: Element index
+ Bound serializer state instance
+
+ - The underlying object was not determined to be a struct or list of pointers.
+ - Object at given position was already built and is not compatible with the desired target serializer type.
+
+ is out of bounds.
+
+
+
+ Returns an existing serializer state for a struct field or list element, or null if no such object exists.
+
+ Target state type
+ If the underlying object is a struct: index into the struct's pointer section.
+ If the underlying object is a list of pointers: Element index
+ Bound serializer state instance
+
+ - The underlying object was not determined to be a struct or list of pointers.
+ - Object at given position is not compatible with the desired target serializer type.
+
+ is out of bounds.
+
+
+
+ Convenience method for ]]>
+
+ If the underlying object is a struct: index into the struct's pointer section.
+ If the underlying object is a list of pointers: Element index
+ Bound serializer state instance
+
+ - The underlying object was not determined to be a struct or list of pointers.
+ - Object at given position was already built and is not compatible with the desired target serializer type.
+
+ is out of bounds.
+
+
+
+ Convenience method for ]]>
+
+ If the underlying object is a struct: index into the struct's pointer section.
+ If the underlying object is a list of pointers: Element index
+ Bound serializer state instance
+
+ - The underlying object was not determined to be a struct or list of pointers.
+ - Object at given position is not compatible with the desired target serializer type.
+
+ is out of bounds.
+
+
+
+ Encodes text into a struct field or list element.
+
+ If the underlying object is a struct: index into the struct's pointer section.
+ If the underlying object is a list of pointers: Element index
+ Text to encode
+ is null
+
+ - The underlying object was not determined to be a struct or list of pointers.
+ - Object at given position was already set.
+
+ is out of bounds.
+
+
+
+ Encodes text into a struct field or list element, with fallback to a default text.
+
+ If the underlying object is a struct: index into the struct's pointer section.
+ If the underlying object is a list of pointers: Element index
+ Text to encode
+ Default text of > is null
+ Both and are null
+
+ - The underlying object was not determined to be a struct or list of pointers.
+ - Object at given position was already set.
+
+ is out of bounds.
+
+
+
+ Returns a state which represents a fixed-width composite list element.
+
+ Element index
+ Bound serializer state
+ Underlying object was not determined to be a fixed-width composite list.
+ is out of bounds.
+
+
+
+ Returns a state which represents a fixed-width composite list element.
+
+ Target serializer state type
+
+ Bound serializer state
+ Underlying object was not determined to be a fixed-width composite list.
+ is out of bounds.
+
+
+
+ Sets an element of a list of bits.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of bits.
+ is out of bounds.
+
+
+
+ Sets the list-of-bits' content.
+
+ Content to set
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of bits.
+ is null.
+ The given element count does not match the underlying list's element count.
+
+
+
+ Sets an element of a list of bytes.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of bytes.
+ is out of bounds.
+
+
+
+ Returns the content of a list of bytes.
+
+ The list bytes
+ The underlying object was not set to a list of bytes.
+
+
+
+ Decodes a list of bytes as text.
+
+ The decoded text.
+ The underlying object was not set to a list of bytes.
+ Might theoretically be thrown during decoding.
+
+
+
+ Sets an element of a list of (signed) bytes.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of bytes.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 16 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 16 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 16 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 16 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 32 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 32 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 32 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 32 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 32 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 32 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 64 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 64 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 64 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 64 bit words.
+ is out of bounds.
+
+
+
+ Sets an element of a list of 64 bit words.
+
+ Element index
+ Element value
+ Element default value (serialized value will be XORed with the default value)
+ The underlying object was not set to a list of 64 bit words.
+ is out of bounds.
+
+
+
+ Adds an entry to the capability table if the provided capability does not yet exist.
+
+ The low-level capability object to provide.
+ Index of the given capability in the capability table
+ The underlying message builder was not configured for capability table support.
+
+
+
+ Adds an entry to the capability table if the provided capability does not yet exist.
+
+ The capability to provide, in terms of its skeleton.
+ Index of the given capability in the capability table
+ The underlying message builder was not configured for capability table support.
+
+
+
+ Adds an entry to the capability table if the provided capability does not yet exist.
+
+ The capability, in one of the following forms:
+ - Low-level capability object (
Rpc.ConsumedCapability
)
+ - Proxy object (
Rpc.Proxy
)
+ - Skeleton object (
Rpc.Skeleton
)
+ - Capability interface implementation
+
+ Index of the given capability in the capability table
+ The underlying message builder was not configured for capability table support.
+
+
+
+
+
+ Reads a struct field as capability and returns a bare (generic) proxy to that capability.
+
+ Index into this struct's pointer table.
+ The proxy instance
+ is out of range.
+ This state does not represent a struct.
+
+
+
+ This method exists until NET Standard 2.1 is released
+
+
+
+
+
+
+
+
+
+
+ This method exists until NET Standard 2.1 is released
+
+
+
+
+
+
+
+
+
+
+ This method exists until NET Standard 2.1 is released
+
+
+
+
+
+
+
+ Represents a Cap'n Proto message. Actually a lightweight wrapper struct around a read-only list of memory segments.
+
+
+
+
+ The message segments
+
+
+
+
+ Constructs a message from a list of segments.
+
+
+
+
+ Pointer tag,
+
+
+
+
+ Lightweight wrapper struct around a Cap'n Proto pointer. Useful for both encoding and decoding pointers.
+
+
+
+
+ Constructs this struct from pointer raw data
+
+
+
+
+ Interprets any ulong value as Cap'n Proto pointer
+
+
+
+
+ Extracts the wire data from the pointer.
+
+
+
+
+ Pointer tag "A"
+
+
+
+
+ Returns true iff this is a null pointer.
+
+
+
+
+ The Offset (field "B") for struct and list pointers.
+
+ Thrown by setter if encoded value would require more than 30 bits
+
+
+
+ Returns the landing pad offset (field "C") for inter-segment pointers.
+
+
+
+
+ Returns the size of the struct's data section (field "C"), in words, for struct pointers.
+
+
+
+
+ Returns the size of the struct's pointer section (field "D"), in words, for struct pointers.
+
+
+
+
+ Convenience getter which returns the sum of the struct's pointer and data section sizes.
+
+
+
+
+ Begins encoding a struct pointer.
+
+ the size of the struct's data section, in words
+ the size of the struct's pointer section, in words
+
+
+
+ Returns the list "size" (field "C") for list pointers.
+
+
+
+
+ Gets or sets the element count if this pointer represents a list of fixed-width composite values.
+
+ negative value, or encoded value would require more than 30 bits
+
+
+
+ Returns the element count if this pointer represents a list of anything, except fixed-width composite values.
+
+
+
+
+ Begins encoding a list pointer
+
+ element "size" (field "C")
+ element count
+ element count would require more than 29 bits
+
+
+
+ Returns the target segment index (field "D") for inter-segment pointers.
+
+
+
+
+ Whether the landing pad is two words (field "B") for inter-segment pointers.
+
+
+
+
+ Encodes an inter-segment pointer.
+
+ target segment index
+ landing pad offset
+ whether the landing pad is two words
+ negative landing pad offset, or encoding would require more than 29 bits
+
+
+
+ Returns the sub-kind of pointer (field "B") if this is an "other" pointer.
+ Currently, only 0 is specified, which is a capability pointer.
+
+
+
+
+ Returns the capability index (field "C") if this is a capability pointer.
+
+
+
+
+ Encodes a capability pointer.
+
+ capability index
+
+
+
diff --git a/Capnp.Net.Runtime/Capnp.Net.Runtime.csproj b/Capnp.Net.Runtime/Capnp.Net.Runtime.csproj
new file mode 100644
index 0000000..8dc8bcb
--- /dev/null
+++ b/Capnp.Net.Runtime/Capnp.Net.Runtime.csproj
@@ -0,0 +1,34 @@
+
+
+
+ netstandard2.0;netcoreapp2.1
+ Capnp
+ 7.2
+ Capnp.Net.Runtime
+ Capnp.Net.Runtime
+ true
+ Christian Köllner and contributors
+ A Cap'n Proto implementation for .NET Standard & Core
+ capnproto-dotnetcore
+ Christian Köllner and contributors
+
+ https://github.com/c80k/capnproto-dotnetcore
+ https://github.com/c80k/capnproto-dotnetcore
+ MIT
+ Git
+ capnp "Cap'n Proto" RPC serialization cerealization
+
+
+
+ TRACE
+
+
+
+ F:\Repos\capnproto-dotnetcore\Capnp.Net.Runtime\Capnp.Net.Runtime.Std20.xml
+
+
+
+
+
+
+
diff --git a/Capnp.Net.sln b/Capnp.Net.sln
index f2ecd9c..e12ef97 100644
--- a/Capnp.Net.sln
+++ b/Capnp.Net.sln
@@ -3,15 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29001.49
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Capnp.Net.Runtime.Std20", "Capnp.Net.Runtime\Capnp.Net.Runtime.Std20.csproj", "{D4326221-63C9-4AC5-805A-B4D8CA47546A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Capnp.Net.Runtime", "Capnp.Net.Runtime\Capnp.Net.Runtime.csproj", "{D4326221-63C9-4AC5-805A-B4D8CA47546A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "capnpc-csharp", "capnpc-csharp\capnpc-csharp.csproj", "{D19E5EA7-D35B-4A1F-99CB-ED136316B577}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Capnp.Net.Runtime.Tests.Std20", "Capnp.Net.Runtime.Tests\Capnp.Net.Runtime.Tests.Std20.csproj", "{9ED38750-F83F-4B10-B3A3-4FD6183F9E86}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Capnp.Net.Runtime.Core21", "Capnp.Net.Runtime.Core21\Capnp.Net.Runtime.Core21.csproj", "{B9EE68D1-0474-4697-A121-D21D1B76DB47}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Capnp.Net.Runtime.Tests.Core21", "Capnp.Net.Runtime.Tests.Core21\Capnp.Net.Runtime.Tests.Core21.csproj", "{58E8FFC8-D207-4B0F-842A-58ED9D3D9EEF}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Capnp.Net.Runtime.Tests.Core21", "Capnp.Net.Runtime.Tests.Core21\Capnp.Net.Runtime.Tests.Core21.csproj", "{58E8FFC8-D207-4B0F-842A-58ED9D3D9EEF}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -31,10 +29,6 @@ Global
{9ED38750-F83F-4B10-B3A3-4FD6183F9E86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9ED38750-F83F-4B10-B3A3-4FD6183F9E86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9ED38750-F83F-4B10-B3A3-4FD6183F9E86}.Release|Any CPU.Build.0 = Release|Any CPU
- {B9EE68D1-0474-4697-A121-D21D1B76DB47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B9EE68D1-0474-4697-A121-D21D1B76DB47}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B9EE68D1-0474-4697-A121-D21D1B76DB47}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B9EE68D1-0474-4697-A121-D21D1B76DB47}.Release|Any CPU.Build.0 = Release|Any CPU
{58E8FFC8-D207-4B0F-842A-58ED9D3D9EEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{58E8FFC8-D207-4B0F-842A-58ED9D3D9EEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{58E8FFC8-D207-4B0F-842A-58ED9D3D9EEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
diff --git a/capnpc-csharp/capnpc-csharp.csproj b/capnpc-csharp/capnpc-csharp.csproj
index 2c210b9..76ee9e5 100644
--- a/capnpc-csharp/capnpc-csharp.csproj
+++ b/capnpc-csharp/capnpc-csharp.csproj
@@ -17,7 +17,7 @@
-
+