diff --git a/samples/ChatApp/ChatApp.Unity/.gitignore b/samples/ChatApp/ChatApp.Unity/.gitignore
index ea7c5897c..4c1463048 100644
--- a/samples/ChatApp/ChatApp.Unity/.gitignore
+++ b/samples/ChatApp/ChatApp.Unity/.gitignore
@@ -54,3 +54,18 @@ sysinfo.txt
# Crashlytics generated file
crashlytics-build.properties
+
+# gRPC Plugins
+# https://packages.grpc.io/
+[Aa]ssets/Plugins/Google.Protobuf/
+[Aa]ssets/Plugins/Google.Protobuf.meta
+[Aa]ssets/Plugins/Grpc.Core/
+[Aa]ssets/Plugins/Grpc.Core.meta
+[Aa]ssets/Plugins/Grpc.Core.Api/
+[Aa]ssets/Plugins/Grpc.Core.Api.meta
+[Aa]ssets/Plugins/System.Buffers/
+[Aa]ssets/Plugins/System.Buffers.meta
+[Aa]ssets/Plugins/System.Memory/
+[Aa]ssets/Plugins/System.Memory.meta
+[Aa]ssets/Plugins/System.Runtime.CompilerServices.Unsafe/
+[Aa]ssets/Plugins/System.Runtime.CompilerServices.Unsafe.meta
\ No newline at end of file
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions.meta
similarity index 77%
rename from samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll.meta
rename to samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions.meta
index afbfc4e34..8710ad10d 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: a92779ef1fc382642824da79d6112a17
+guid: f3f8be61e41745a45a255e2bd3c6bbac
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib.meta
similarity index 77%
rename from samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib.meta
rename to samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib.meta
index 985a9269d..1d3109ba8 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 5ab1abd8b5b29ca4888d5c62f8e7249c
+guid: 943e13d8bc53e714dbb8e7445c7d255a
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45.meta
similarity index 77%
rename from samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45.meta
rename to samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45.meta
index 15daa1f16..c293841b0 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 993567c626a06344fbd3fe354f6c562e
+guid: ae164409aecbc0746aeb5604ddc760d1
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45/System.Threading.Tasks.Extensions.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45/System.Threading.Tasks.Extensions.dll
new file mode 100644
index 000000000..a99c9077b
Binary files /dev/null and b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45/System.Threading.Tasks.Extensions.dll differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45/System.Threading.Tasks.Extensions.dll.meta
similarity index 93%
rename from samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.dll.meta
rename to samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45/System.Threading.Tasks.Extensions.dll.meta
index ded26efbd..7aa0b924f 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.dll.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/System.Threading.Tasks.Extensions/lib/net45/System.Threading.Tasks.Extensions.dll.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: d131af712e306d64bbfe6a54a9a44dc5
+guid: 6ab57ed387abdcf4c8e8f4d08e2e0017
PluginImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf.meta
deleted file mode 100644
index c9d3ca96b..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4b6ebd913ac610041b63fc847ee96302
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib.meta
deleted file mode 100644
index d415abf6d..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: e4ab5b3f8a676a84a9eb3ffcf1e8138d
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45.meta
deleted file mode 100644
index b7670b6f7..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4c50e24955a9a294b99ad097ae2e252a
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45/Google.Protobuf.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45/Google.Protobuf.dll
deleted file mode 100644
index 53c3b64df..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45/Google.Protobuf.dll and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45/Google.Protobuf.dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45/Google.Protobuf.dll.meta
deleted file mode 100644
index d6a537838..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Google.Protobuf/lib/net45/Google.Protobuf.dll.meta
+++ /dev/null
@@ -1,30 +0,0 @@
-fileFormatVersion: 2
-guid: 286edf5aec6aae64697e5e8b7ab9b60e
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- isPreloaded: 0
- isOverridable: 0
- platformData:
- - first:
- Any:
- second:
- enabled: 1
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.dll
deleted file mode 100644
index 7b32fe5f2..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.dll and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.meta
deleted file mode 100644
index 00e8e63e3..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: e4d1287c8e9a5dc449db4da624149ab7
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml
deleted file mode 100644
index b0400cbe9..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml
+++ /dev/null
@@ -1,1067 +0,0 @@
-
-
-
- Grpc.Core.Api
-
-
-
-
- Authentication context for a call.
- AuthContext is the only reliable source of truth when it comes to authenticating calls.
- Using any other call/context properties for authentication purposes is wrong and inherently unsafe.
- Note: experimental API that can change or be removed without any prior notice.
-
-
-
-
- Initializes a new instance of the class.
-
- Peer identity property name.
- Multimap of auth properties by name.
-
-
-
- Returns true if the peer is authenticated.
-
-
-
-
- Gets the name of the property that indicates the peer identity. Returns null
- if the peer is not authenticated.
-
-
-
-
- Gets properties that represent the peer identity (there can be more than one). Returns an empty collection
- if the peer is not authenticated.
-
-
-
-
- Gets the auth properties of this context.
-
-
-
-
- Returns the auth properties with given name (there can be more than one).
- If no properties of given name exist, an empty collection will be returned.
-
-
-
-
- A property of an .
- Note: experimental API that can change or be removed without any prior notice.
-
-
-
-
- Gets the name of the property.
-
-
-
-
- Gets the string value of the property.
-
-
-
-
- Gets the binary value of the property.
-
-
-
-
- Creates an instance of AuthProperty.
-
- the name
- the binary value of the property
-
-
-
- Gets the binary value of the property (without making a defensive copy).
-
-
-
-
- Creates and instance of AuthProperty without making a defensive copy of valueBytes.
-
-
-
-
- Options for .
-
-
-
-
- The context propagation options that will be used by default.
-
-
-
-
- Creates new context propagation options.
-
- If set to true parent call's deadline will be propagated to the child call.
- If set to true parent call's cancellation token will be propagated to the child call.
-
-
- true if parent call's deadline should be propagated to the child call.
-
-
- true if parent call's cancellation token should be propagated to the child call.
-
-
-
- Token for propagating context of server side handlers to child calls.
- In situations when a backend is making calls to another backend,
- it makes sense to propagate properties like deadline and cancellation
- token of the server call to the child call.
- Underlying gRPC implementation may provide other "opaque" contexts (like tracing context) that
- are not explicitly accesible via the public C# API, but this token still allows propagating them.
-
-
-
-
- Provides access to the payload being deserialized when deserializing messages.
-
-
-
-
- Get the total length of the payload in bytes.
-
-
-
-
- Gets the entire payload as a newly allocated byte array.
- Once the byte array is returned, the byte array becomes owned by the caller and won't be ever accessed or reused by gRPC again.
- NOTE: Obtaining the buffer as a newly allocated byte array is the simplest way of accessing the payload,
- but it can have important consequences in high-performance scenarios.
- In particular, using this method usually requires copying of the entire buffer one extra time.
- Also, allocating a new buffer each time can put excessive pressure on GC, especially if
- the payload is more than 86700 bytes large (which means the newly allocated buffer will be placed in LOH,
- and LOH object can only be garbage collected via a full ("stop the world") GC run).
- NOTE: Deserializers are expected not to call this method more than once per received message
- (as there is no practical reason for doing so) and DeserializationContext implementations are free to assume so.
-
- byte array containing the entire payload.
-
-
-
- A stream of messages to be read.
- Messages can be awaited await reader.MoveNext(), that returns true
- if there is a message available and false if there are no more messages
- (i.e. the stream has been closed).
-
- On the client side, the last invocation of MoveNext() either returns false
- if the call has finished successfully or throws RpcException if call finished
- with an error. Once the call finishes, subsequent invocations of MoveNext() will
- continue yielding the same result (returning false or throwing an exception).
-
-
- On the server side, MoveNext() does not throw exceptions.
- In case of a failure, the request stream will appear to be finished
- (MoveNext will return false) and the CancellationToken
- associated with the call will be cancelled to signal the failure.
-
-
- MoveNext() operations can be cancelled via a cancellation token. Cancelling
- an individual read operation has the same effect as cancelling the entire call
- (which will also result in the read operation returning prematurely), but the per-read cancellation
- tokens passed to MoveNext() only result in cancelling the call if the read operation haven't finished
- yet.
-
-
- The message type.
-
-
-
- A writable stream of messages.
-
- The message type.
-
-
-
- Writes a single asynchronously. Only one write can be pending at a time.
-
- the message to be written. Cannot be null.
-
-
-
- Write options that will be used for the next write.
- If null, default options will be used.
- Once set, this property maintains its value across subsequent
- writes.
-
-
-
-
- A writable stream of messages that is used in server-side handlers.
-
-
-
-
- Encapsulates the logic for serializing and deserializing messages.
-
-
-
-
- Initializes a new marshaller from simple serialize/deserialize functions.
-
- Function that will be used to serialize messages.
- Function that will be used to deserialize messages.
-
-
-
- Initializes a new marshaller from serialize/deserialize fuctions that can access serialization and deserialization
- context. Compared to the simple serializer/deserializer functions, using the contextual version provides more
- flexibility and can lead to increased efficiency (and better performance).
- Note: This constructor is part of an experimental API that can change or be removed without any prior notice.
-
- Function that will be used to serialize messages.
- Function that will be used to deserialize messages.
-
-
-
- Gets the serializer function.
-
-
-
-
- Gets the deserializer function.
-
-
-
-
- Gets the serializer function.
- Note: experimental API that can change or be removed without any prior notice.
-
-
-
-
- Gets the serializer function.
- Note: experimental API that can change or be removed without any prior notice.
-
-
-
-
- Utilities for creating marshallers.
-
-
-
-
- Creates a marshaller from specified serializer and deserializer.
-
-
-
-
- Creates a marshaller from specified contextual serializer and deserializer.
- Note: This method is part of an experimental API that can change or be removed without any prior notice.
-
-
-
-
- Returns a marshaller for string type. This is useful for testing.
-
-
-
-
- A collection of metadata entries that can be exchanged during a call.
- gRPC supports these types of metadata:
-
- - Request headersare sent by the client at the beginning of a remote call before any request messages are sent.
- - Response headersare sent by the server at the beginning of a remote call handler before any response messages are sent.
- - Response trailersare sent by the server at the end of a remote call along with resulting call status.
-
-
-
-
-
- All binary headers should have this suffix.
-
-
-
-
- An read-only instance of metadata containing no entries.
-
-
-
-
- To be used in initial metadata to request specific compression algorithm
- for given call. Direct selection of compression algorithms is an internal
- feature and is not part of public API.
-
-
-
-
- Initializes a new instance of Metadata.
-
-
-
-
- Makes this object read-only.
-
- this object
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Adds a new ASCII-valued metadata entry. See Metadata.Entry constructor for params.
-
-
-
-
- Adds a new binary-valued metadata entry. See Metadata.Entry constructor for params.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Metadata entry
-
-
-
-
- Initializes a new instance of the struct with a binary value.
-
- Metadata key. Gets converted to lowercase. Needs to have suffix indicating a binary valued metadata entry. Can only contain lowercase alphanumeric characters, underscores, hyphens and dots.
- Value bytes.
-
-
-
- Initializes a new instance of the struct with an ASCII value.
-
- Metadata key. Gets converted to lowercase. Must not use suffix indicating a binary valued metadata entry. Can only contain lowercase alphanumeric characters, underscores, hyphens and dots.
- Value string. Only ASCII characters are allowed.
-
-
-
- Gets the metadata entry key.
-
-
-
-
- Gets the binary value of this metadata entry.
-
-
-
-
- Gets the string value of this metadata entry.
-
-
-
-
- Returns true if this entry is a binary-value entry.
-
-
-
-
- Returns a that represents the current .
-
-
-
-
- Gets the serialized value for this entry. For binary metadata entries, this leaks
- the internal valueBytes byte array and caller must not change contents of it.
-
-
-
-
- Creates a binary value or ascii value metadata entry from data received from the native layer.
- We trust C core to give us well-formed data, so we don't perform any checks or defensive copying.
-
-
-
-
- Returns true if the key has "-bin" binary header suffix.
-
-
-
-
- Method types supported by gRPC.
-
-
-
- Single request sent from client, single response received from server.
-
-
- Stream of request sent from client, single response received from server.
-
-
- Single request sent from client, stream of responses received from server.
-
-
- Both server and client can stream arbitrary number of requests and responses simultaneously.
-
-
-
- A non-generic representation of a remote method.
-
-
-
-
- Gets the type of the method.
-
-
-
-
- Gets the name of the service to which this method belongs.
-
-
-
-
- Gets the unqualified name of the method.
-
-
-
-
- Gets the fully qualified name of the method. On the server side, methods are dispatched
- based on this name.
-
-
-
-
- A description of a remote method.
-
- Request message type for this method.
- Response message type for this method.
-
-
-
- Initializes a new instance of the Method class.
-
- Type of method.
- Name of service this method belongs to.
- Unqualified name of the method.
- Marshaller used for request messages.
- Marshaller used for response messages.
-
-
-
- Gets the type of the method.
-
-
-
-
- Gets the name of the service to which this method belongs.
-
-
-
-
- Gets the unqualified name of the method.
-
-
-
-
- Gets the marshaller used for request messages.
-
-
-
-
- Gets the marshaller used for response messages.
-
-
-
-
- Gets the fully qualified name of the method. On the server side, methods are dispatched
- based on this name.
-
-
-
-
- Gets full name of the method including the service name.
-
-
-
-
- Thrown when remote procedure call fails. Every RpcException is associated with a resulting of the call.
-
-
-
-
- Creates a new RpcException associated with given status.
-
- Resulting status of a call.
-
-
-
- Creates a new RpcException associated with given status and message.
-
- Resulting status of a call.
- The exception message.
-
-
-
- Creates a new RpcException associated with given status and trailing response metadata.
-
- Resulting status of a call.
- Response trailing metadata.
-
-
-
- Creates a new RpcException associated with given status, message and trailing response metadata.
-
- Resulting status of a call.
- Response trailing metadata.
- The exception message.
-
-
-
- Resulting status of the call.
-
-
-
-
- Returns the status code of the call, as a convenient alternative to Status.StatusCode.
-
-
-
-
- Gets the call trailing metadata.
- Trailers only have meaningful content for client-side calls (in which case they represent the trailing metadata sent by the server when closing the call).
- Instances of RpcException thrown by the server-side part of the stack will have trailers always set to empty.
-
-
-
-
- Provides storage for payload when serializing a message.
-
-
-
-
- Use the byte array as serialized form of current message and mark serialization process as complete.
- Complete() can only be called once. By calling this method the caller gives up the ownership of the
- payload which must not be accessed afterwards.
-
- the serialized form of current message
-
-
-
- Context for a server-side call.
-
-
-
-
- Creates a new instance of ServerCallContext.
-
-
-
-
- Asynchronously sends response headers for the current call to the client. This method may only be invoked once for each call and needs to be invoked
- before any response messages are written. Writing the first response message implicitly sends empty response headers if WriteResponseHeadersAsync haven't
- been called yet.
-
- The response headers to send.
- The task that finished once response headers have been written.
-
-
-
- Creates a propagation token to be used to propagate call context to a child call.
-
-
-
- Name of method called in this RPC.
-
-
- Name of host called in this RPC.
-
-
- Address of the remote endpoint in URI format.
-
-
- Deadline for this RPC.
-
-
- Initial metadata sent by client.
-
-
- Cancellation token signals when call is cancelled.
-
-
- Trailers to send back to client after RPC finishes.
-
-
- Status to send back to client after RPC finishes.
-
-
-
- Allows setting write options for the following write.
- For streaming response calls, this property is also exposed as on IServerStreamWriter for convenience.
- Both properties are backed by the same underlying value.
-
-
-
-
- Gets the AuthContext associated with this call.
- Note: Access to AuthContext is an experimental API that can change without any prior notice.
-
-
-
-
- Gets a dictionary that can be used by the various interceptors and handlers of this
- call to store arbitrary state.
-
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
- Provides implementation of a non-virtual public member.
-
-
-
- Server-side handler for unary call.
-
- Request message type for this method.
- Response message type for this method.
-
-
-
- Server-side handler for client streaming call.
-
- Request message type for this method.
- Response message type for this method.
-
-
-
- Server-side handler for server streaming call.
-
- Request message type for this method.
- Response message type for this method.
-
-
-
- Server-side handler for bidi streaming call.
-
- Request message type for this method.
- Response message type for this method.
-
-
-
- Stores mapping of methods to server call handlers.
- Normally, the ServerServiceDefinition objects will be created by the BindService factory method
- that is part of the autogenerated code for a protocol buffers service definition.
-
-
-
-
- Forwards all the previously stored AddMethod calls to the service binder.
-
-
-
-
- Creates a new builder object for ServerServiceDefinition.
-
- The builder object.
-
-
-
- Builder class for .
-
-
-
-
- Creates a new instance of builder.
-
-
-
-
- Adds a definition for a single request - single response method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
- This builder instance.
-
-
-
- Adds a definition for a client streaming method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
- This builder instance.
-
-
-
- Adds a definition for a server streaming method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
- This builder instance.
-
-
-
- Adds a definition for a bidirectional streaming method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
- This builder instance.
-
-
-
- Creates an immutable ServerServiceDefinition from this builder.
-
- The ServerServiceDefinition object.
-
-
-
- Allows binding server-side method implementations in alternative serving stacks.
- Instances of this class are usually populated by the BindService method
- that is part of the autogenerated code for a protocol buffers service definition.
-
-
-
-
- Adds a definition for a single request - single response method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
-
-
-
- Adds a definition for a client streaming method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
-
-
-
- Adds a definition for a server streaming method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
-
-
-
- Adds a definition for a bidirectional streaming method.
-
- The request message class.
- The response message class.
- The method.
- The method handler.
-
-
-
- Represents RPC result, which consists of and an optional detail string.
-
-
-
-
- Default result of a successful RPC. StatusCode=OK, empty details message.
-
-
-
-
- Default result of a cancelled RPC. StatusCode=Cancelled, empty details message.
-
-
-
-
- Creates a new instance of Status.
-
- Status code.
- Detail.
-
-
-
- Gets the gRPC status code. OK indicates success, all other values indicate an error.
-
-
-
-
- Gets the detail.
-
-
-
-
- Returns a that represents the current .
-
-
-
-
- Result of a remote procedure call.
- Based on grpc_status_code from grpc/status.h
-
-
-
- Not an error; returned on success.
-
-
- The operation was cancelled (typically by the caller).
-
-
-
- Unknown error. An example of where this error may be returned is
- if a Status value received from another address space belongs to
- an error-space that is not known in this address space. Also
- errors raised by APIs that do not return enough error information
- may be converted to this error.
-
-
-
-
- Client specified an invalid argument. Note that this differs
- from FAILED_PRECONDITION. INVALID_ARGUMENT indicates arguments
- that are problematic regardless of the state of the system
- (e.g., a malformed file name).
-
-
-
-
- Deadline expired before operation could complete. For operations
- that change the state of the system, this error may be returned
- even if the operation has completed successfully. For example, a
- successful response from a server could have been delayed long
- enough for the deadline to expire.
-
-
-
- Some requested entity (e.g., file or directory) was not found.
-
-
- Some entity that we attempted to create (e.g., file or directory) already exists.
-
-
-
- The caller does not have permission to execute the specified
- operation. PERMISSION_DENIED must not be used for rejections
- caused by exhausting some resource (use RESOURCE_EXHAUSTED
- instead for those errors). PERMISSION_DENIED must not be
- used if the caller can not be identified (use UNAUTHENTICATED
- instead for those errors).
-
-
-
- The request does not have valid authentication credentials for the operation.
-
-
-
- Some resource has been exhausted, perhaps a per-user quota, or
- perhaps the entire file system is out of space.
-
-
-
-
- Operation was rejected because the system is not in a state
- required for the operation's execution. For example, directory
- to be deleted may be non-empty, an rmdir operation is applied to
- a non-directory, etc.
-
-
-
-
- The operation was aborted, typically due to a concurrency issue
- like sequencer check failures, transaction aborts, etc.
-
-
-
-
- Operation was attempted past the valid range. E.g., seeking or
- reading past end of file.
-
-
-
- Operation is not implemented or not supported/enabled in this service.
-
-
-
- Internal errors. Means some invariants expected by underlying
- system has been broken. If you see one of these errors,
- something is very broken.
-
-
-
-
- The service is currently unavailable. This is a most likely a
- transient condition and may be corrected by retrying with
- a backoff.
-
-
-
- Unrecoverable data loss or corruption.
-
-
-
- Utility methods to simplify checking preconditions in the code.
-
-
-
-
- Throws if condition is false.
-
- The condition.
-
-
-
- Throws with given message if condition is false.
-
- The condition.
- The error message.
-
-
-
- Throws if reference is null.
-
- The reference.
-
-
-
- Throws if reference is null.
-
- The reference.
- The parameter name.
-
-
-
- Throws if condition is false.
-
- The condition.
-
-
-
- Throws with given message if condition is false.
-
- The condition.
- The error message.
-
-
-
- Flags for write operations.
-
-
-
-
- Hint that the write may be buffered and need not go out on the wire immediately.
- gRPC is free to buffer the message until the next non-buffered
- write, or until write stream completion, but it need not buffer completely or at all.
-
-
-
-
- Force compression to be disabled for a particular write.
-
-
-
-
- Options for write operations.
-
-
-
-
- Default write options.
-
-
-
-
- Initializes a new instance of WriteOptions class.
-
- The write flags.
-
-
-
- Gets the write flags.
-
-
-
-
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml.meta
deleted file mode 100644
index 99d838802..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.Api/lib/net45/Grpc.Core.Api.xml.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: a4bc46817d2da2c44892a8694b28cbae
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.dll
deleted file mode 100644
index bb2aa6452..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.dll and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.dll.meta
deleted file mode 100644
index 28327f779..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.dll.meta
+++ /dev/null
@@ -1,32 +0,0 @@
-fileFormatVersion: 2
-guid: d69fb9c98159f174abc0ab3acbf0faaa
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- Any:
- second:
- enabled: 1
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.meta
deleted file mode 100644
index d5da6069b..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: cec97935215440549a638f37a905a159
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib.meta
deleted file mode 100644
index 3c4d17f44..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: c9999db9d714f7142b693f5b254424f2
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45.meta
deleted file mode 100644
index 4ed6a6964..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: b06d1a5d4e0798e438b47589132d089e
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45/Grpc.Core.xml b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45/Grpc.Core.xml
deleted file mode 100644
index 45eec3036..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45/Grpc.Core.xml
+++ /dev/null
@@ -1,3322 +0,0 @@
-
-
-
- Grpc.Core
-
-
-
-
- Asynchronous authentication interceptor for .
-
- The interceptor context.
- Metadata to populate with entries that will be added to outgoing call's headers.
-
-
-
-
- Context for an RPC being intercepted by .
-
-
-
-
- Initializes a new instance of AuthInterceptorContext.
-
-
-
-
- The fully qualified service URL for the RPC being called.
-
-
-
-
- The method name of the RPC being called.
-
-
-
-
- Return type for client streaming calls.
-
- Request message type for this call.
- Response message type for this call.
-
-
-
- Creates a new AsyncClientStreamingCall object with the specified properties.
-
- Stream of request values.
- The response of the asynchronous call.
- Response headers of the asynchronous call.
- Delegate returning the status of the call.
- Delegate returning the trailing metadata of the call.
- Delegate to invoke when Dispose is called on the call object.
-
-
-
- Asynchronous call result.
-
-
-
-
- Asynchronous access to response headers.
-
-
-
-
- Async stream to send streaming requests.
-
-
-
-
- Allows awaiting this object directly.
-
-
-
-
-
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Provides means to cleanup after the call.
- If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything.
- Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call.
- As a result, all resources being used by the call should be released eventually.
-
-
- Normally, there is no need for you to dispose the call unless you want to utilize the
- "Cancel" semantics of invoking Dispose.
-
-
-
-
- Return type for bidirectional streaming calls.
-
- Request message type for this call.
- Response message type for this call.
-
-
-
- Creates a new AsyncDuplexStreamingCall object with the specified properties.
-
- Stream of request values.
- Stream of response values.
- Response headers of the asynchronous call.
- Delegate returning the status of the call.
- Delegate returning the trailing metadata of the call.
- Delegate to invoke when Dispose is called on the call object.
-
-
-
- Async stream to read streaming responses.
-
-
-
-
- Async stream to send streaming requests.
-
-
-
-
- Asynchronous access to response headers.
-
-
-
-
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Provides means to cleanup after the call.
- If the call has already finished normally (request stream has been completed and response stream has been fully read), doesn't do anything.
- Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call.
- As a result, all resources being used by the call should be released eventually.
-
-
- Normally, there is no need for you to dispose the call unless you want to utilize the
- "Cancel" semantics of invoking Dispose.
-
-
-
-
- Return type for server streaming calls.
-
- Response message type for this call.
-
-
-
- Creates a new AsyncDuplexStreamingCall object with the specified properties.
-
- Stream of response values.
- Response headers of the asynchronous call.
- Delegate returning the status of the call.
- Delegate returning the trailing metadata of the call.
- Delegate to invoke when Dispose is called on the call object.
-
-
-
- Async stream to read streaming responses.
-
-
-
-
- Asynchronous access to response headers.
-
-
-
-
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Provides means to cleanup after the call.
- If the call has already finished normally (response stream has been fully read), doesn't do anything.
- Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call.
- As a result, all resources being used by the call should be released eventually.
-
-
- Normally, there is no need for you to dispose the call unless you want to utilize the
- "Cancel" semantics of invoking Dispose.
-
-
-
-
- Return type for single request - single response call.
-
- Response message type for this call.
-
-
-
- Creates a new AsyncUnaryCall object with the specified properties.
-
- The response of the asynchronous call.
- Response headers of the asynchronous call.
- Delegate returning the status of the call.
- Delegate returning the trailing metadata of the call.
- Delegate to invoke when Dispose is called on the call object.
-
-
-
- Asynchronous call result.
-
-
-
-
- Asynchronous access to response headers.
-
-
-
-
- Allows awaiting this object directly.
-
-
-
-
- Gets the call status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Gets the call trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Provides means to cleanup after the call.
- If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything.
- Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call.
- As a result, all resources being used by the call should be released eventually.
-
-
- Normally, there is no need for you to dispose the call unless you want to utilize the
- "Cancel" semantics of invoking Dispose.
-
-
-
-
- Client-side call credentials. Provide authorization with per-call granularity.
-
-
-
-
- Composes multiple multiple CallCredentials objects into
- a single CallCredentials object.
-
- credentials to compose
- The new CompositeCallCredentials
-
-
-
- Creates a new instance of CallCredentials class from an
- interceptor that can attach metadata to outgoing calls.
-
- authentication interceptor
-
-
-
- Creates native object for the credentials.
-
- The native credentials.
-
-
-
- Client-side credentials that delegate metadata based auth to an interceptor.
- The interceptor is automatically invoked for each remote call that uses MetadataCredentials.
-
-
-
-
- Initializes a new instance of MetadataCredentials class.
-
- authentication interceptor
-
-
-
- Credentials that allow composing multiple credentials objects into one object.
-
-
-
-
- Initializes a new instance of CompositeCallCredentials class.
- The resulting credentials object will be composite of all the credentials specified as parameters.
-
- credentials to compose
-
-
-
- Details about a client-side call to be invoked.
-
- Request message type for the call.
- Response message type for the call.
-
-
-
- Initializes a new instance of the struct.
-
- Channel to use for this call.
- Method to call.
- Call options.
-
-
-
- Initializes a new instance of the struct.
-
- Channel to use for this call.
- Method to call.
- Host that contains the method. if null, default host will be used.
- Call options.
-
-
-
- Initializes a new instance of the struct.
-
- Channel to use for this call.
- Qualified method name.
- Host that contains the method.
- Request marshaller.
- Response marshaller.
- Call options.
-
-
-
- Get channel associated with this call.
-
-
-
-
- Gets name of method to be called.
-
-
-
-
- Get name of host.
-
-
-
-
- Gets marshaller used to serialize requests.
-
-
-
-
- Gets marshaller used to deserialized responses.
-
-
-
-
- Gets the call options.
-
-
-
-
- Returns new instance of with
- Options set to the value provided. Values of all other fields are preserved.
-
-
-
-
- Abstraction of client-side RPC invocation.
-
-
-
-
-
- Invokes a simple remote call in a blocking fashion.
-
-
-
-
- Invokes a simple remote call asynchronously.
-
-
-
-
- Invokes a server streaming call asynchronously.
- In server streaming scenario, client sends on request and server responds with a stream of responses.
-
-
-
-
- Invokes a client streaming call asynchronously.
- In client streaming scenario, client sends a stream of requests and server responds with a single response.
-
-
-
-
- Invokes a duplex streaming call asynchronously.
- In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses.
- The response stream is completely independent and both side can be sending messages at the same time.
-
-
-
-
- Options for calls made by client.
-
-
-
-
- Creates a new instance of CallOptions struct.
-
- Headers to be sent with the call.
- Deadline for the call to finish. null means no deadline.
- Can be used to request cancellation of the call.
- Write options that will be used for this call.
- Context propagation token obtained from .
- Credentials to use for this call.
-
-
-
- Headers to send at the beginning of the call.
-
-
-
-
- Call deadline.
-
-
-
-
- Token that can be used for cancelling the call on the client side.
- Cancelling the token will request cancellation
- of the remote call. Best effort will be made to deliver the cancellation
- notification to the server and interaction of the call with the server side
- will be terminated. Unless the call finishes before the cancellation could
- happen (there is an inherent race),
- the call will finish with StatusCode.Cancelled status.
-
-
-
-
- Write options that will be used for this call.
-
-
-
-
- Token for propagating parent call context.
-
-
-
-
- Credentials to use for this call.
-
-
-
-
- If true and and channel is in ChannelState.TransientFailure, the call will attempt waiting for the channel to recover
- instead of failing immediately (which is the default "FailFast" semantics).
- Note: experimental API that can change or be removed without any prior notice.
-
-
-
-
- Flags to use for this call.
-
-
-
-
- Returns new instance of with
- Headers set to the value provided. Values of all other fields are preserved.
-
- The headers.
-
-
-
- Returns new instance of with
- Deadline set to the value provided. Values of all other fields are preserved.
-
- The deadline.
-
-
-
- Returns new instance of with
- CancellationToken set to the value provided. Values of all other fields are preserved.
-
- The cancellation token.
-
-
-
- Returns new instance of with
- WriteOptions set to the value provided. Values of all other fields are preserved.
-
- The write options.
-
-
-
- Returns new instance of with
- PropagationToken set to the value provided. Values of all other fields are preserved.
-
- The context propagation token.
-
-
-
- Returns new instance of with
- Credentials set to the value provided. Values of all other fields are preserved.
-
- The call credentials.
-
-
-
- Returns new instance of with "WaitForReady" semantics enabled/disabled.
- .
- Note: experimental API that can change or be removed without any prior notice.
-
-
-
-
- Returns new instance of with
- Flags set to the value provided. Values of all other fields are preserved.
-
- The call flags.
-
-
-
- Returns a new instance of with
- all previously unset values set to their defaults and deadline and cancellation
- token propagated when appropriate.
-
-
-
-
- Helper methods for generated clients to make RPC calls.
- Most users will use this class only indirectly and will be
- making calls using client object generated from protocol
- buffer definition files.
-
-
-
-
- Invokes a simple remote call in a blocking fashion.
-
- The response.
- The call defintion.
- Request message.
- Type of request message.
- The of response message.
-
-
-
- Invokes a simple remote call asynchronously.
-
- An awaitable call object providing access to the response.
- The call defintion.
- Request message.
- Type of request message.
- The of response message.
-
-
-
- Invokes a server streaming call asynchronously.
- In server streaming scenario, client sends on request and server responds with a stream of responses.
-
- A call object providing access to the asynchronous response stream.
- The call defintion.
- Request message.
- Type of request message.
- The of response messages.
-
-
-
- Invokes a client streaming call asynchronously.
- In client streaming scenario, client sends a stream of requests and server responds with a single response.
-
- The call defintion.
- An awaitable call object providing access to the response.
- Type of request messages.
- The of response message.
-
-
-
- Invokes a duplex streaming call asynchronously.
- In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses.
- The response stream is completely independent and both side can be sending messages at the same time.
-
- A call object providing access to the asynchronous request and response streams.
- The call definition.
- Type of request messages.
- Type of reponse messages.
-
-
-
- Represents a gRPC channel. Channels are an abstraction of long-lived connections to remote servers.
- More client objects can reuse the same channel. Creating a channel is an expensive operation compared to invoking
- a remote call so in general you should reuse a single channel for as many calls as possible.
-
-
-
-
- Creates a channel that connects to a specific host.
- Port will default to 80 for an unsecure channel and to 443 for a secure channel.
-
- Target of the channel.
- Credentials to secure the channel.
-
-
-
- Creates a channel that connects to a specific host.
- Port will default to 80 for an unsecure channel and to 443 for a secure channel.
-
- Target of the channel.
- Credentials to secure the channel.
- Channel options.
-
-
-
- Creates a channel that connects to a specific host and port.
-
- The name or IP address of the host.
- The port.
- Credentials to secure the channel.
-
-
-
- Creates a channel that connects to a specific host and port.
-
- The name or IP address of the host.
- The port.
- Credentials to secure the channel.
- Channel options.
-
-
-
- Gets current connectivity state of this channel.
- After channel is has been shutdown, ChannelState.Shutdown will be returned.
-
-
-
-
- Returned tasks completes once channel state has become different from
- given lastObservedState.
- If deadline is reached or and error occurs, returned task is cancelled.
-
-
-
-
- Returned tasks completes once channel state has become different from
- given lastObservedState (true is returned) or if the wait has timed out (false is returned).
-
-
-
- Resolved address of the remote endpoint in URI format.
-
-
- The original target used to create the channel.
-
-
-
- Returns a token that gets cancelled once ShutdownAsync is invoked.
-
-
-
-
- Allows explicitly requesting channel to connect without starting an RPC.
- Returned task completes once state Ready was seen. If the deadline is reached,
- or channel enters the Shutdown state, the task is cancelled.
- There is no need to call this explicitly unless your use case requires that.
- Starting an RPC on a new channel will request connection implicitly.
-
- The deadline. null indicates no deadline.
-
-
-
- Shuts down the channel cleanly. It is strongly recommended to shutdown
- all previously created channels before exiting from the process.
-
-
- This method doesn't wait for all calls on this channel to finish (nor does
- it explicitly cancel all outstanding calls). It is user's responsibility to make sure
- all the calls on this channel have finished (successfully or with an error)
- before shutting down the channel to ensure channel shutdown won't impact
- the outcome of those remote calls.
-
-
-
-
- Client-side channel credentials. Used for creation of a secure channel.
-
-
-
-
- Creates a new instance of channel credentials
-
-
-
-
- Returns instance of credentials that provides no security and
- will result in creating an unsecure channel with no encryption whatsoever.
-
-
-
-
- Creates a new instance of ChannelCredentials class by composing
- given channel credentials with call credentials.
-
- Channel credentials.
- Call credentials.
- The new composite ChannelCredentials
-
-
-
- Gets native object for the credentials, creating one if it already doesn't exist. May return null if insecure channel
- should be created. Caller must not call Dispose() on the returned native credentials as their lifetime
- is managed by this class (and instances of native credentials are cached).
-
- The native credentials.
-
-
-
- Creates a new native object for the credentials. May return null if insecure channel
- should be created. For internal use only, use instead.
-
- The native credentials.
-
-
-
- Returns true if this credential type allows being composed by CompositeCredentials.
-
-
-
-
- Client-side SSL credentials.
-
-
-
-
- Creates client-side SSL credentials loaded from
- disk file pointed to by the GRPC_DEFAULT_SSL_ROOTS_FILE_PATH environment variable.
- If that fails, gets the roots certificates from a well known place on disk.
-
-
-
-
- Creates client-side SSL credentials from
- a string containing PEM encoded root certificates.
-
-
-
-
- Creates client-side SSL credentials.
-
- string containing PEM encoded server root certificates.
- a key certificate pair.
-
-
-
- PEM encoding of the server root certificates.
-
-
-
-
- Client side key and certificate pair.
- If null, client will not use key and certificate pair.
-
-
-
-
- Credentials that allow composing one object and
- one or more objects into a single .
-
-
-
-
- Initializes a new instance of CompositeChannelCredentials class.
- The resulting credentials object will be composite of all the credentials specified as parameters.
-
- channelCredentials to compose
- channelCredentials to compose
-
-
-
- Channel option specified when creating a channel.
- Corresponds to grpc_channel_args from grpc/grpc.h.
- Commonly used channel option names are defined in ChannelOptions,
- but any of the GRPC_ARG_* channel options names defined in grpc_types.h can be used.
-
-
-
-
- Type of ChannelOption.
-
-
-
-
- Channel option with integer value.
-
-
-
-
- Channel option with string value.
-
-
-
-
- Creates a channel option with a string value.
-
- Name.
- String value.
-
-
-
- Creates a channel option with an integer value.
-
- Name.
- Integer value.
-
-
-
- Gets the type of the ChannelOption.
-
-
-
-
- Gets the name of the ChannelOption.
-
-
-
-
- Gets the integer value the ChannelOption.
-
-
-
-
- Gets the string value the ChannelOption.
-
-
-
-
- Determines whether the specified object is equal to the current object.
-
-
-
-
- Determines whether the specified object is equal to the current object.
-
-
-
-
- A hash code for the current object.
-
-
-
-
- Equality operator.
-
-
-
-
- Inequality operator.
-
-
-
-
- Defines names of most commonly used channel options.
- Other supported options names can be found in grpc_types.h (GRPC_ARG_* definitions)
-
-
-
- Override SSL target check. Only to be used for testing.
-
-
- Enable census for tracing and stats collection
-
-
- Maximum number of concurrent incoming streams to allow on a http2 connection
-
-
- Maximum message length that the channel can receive
-
-
- Maximum message length that the channel can send
-
-
- Obsolete, for backward compatibility only.
-
-
- Initial sequence number for http2 transports
-
-
- Default authority for calls.
-
-
- Primary user agent: goes at the start of the user-agent metadata
-
-
- Secondary user agent: goes at the end of the user-agent metadata
-
-
- If non-zero, allow the use of SO_REUSEPORT for server if it's available (default 1)
-
-
-
- Creates native object for a collection of channel options.
-
- The native channel arguments.
-
-
-
- Connectivity state of a channel.
- Based on grpc_connectivity_state from grpc/grpc.h
-
-
-
-
- Channel is idle
-
-
-
-
- Channel is connecting
-
-
-
-
- Channel is ready for work
-
-
-
-
- Channel has seen a failure but expects to recover
-
-
-
-
- Channel has seen a failure that it cannot recover from
-
-
-
-
- Generic base class for client-side stubs.
-
-
-
-
- Initializes a new instance of ClientBase class that
- throws NotImplementedException upon invocation of any RPC.
- This constructor is only provided to allow creation of test doubles
- for client classes (e.g. mocking requires a parameterless constructor).
-
-
-
-
- Initializes a new instance of ClientBase class.
-
- The configuration.
-
-
-
- Initializes a new instance of ClientBase class.
-
- The channel to use for remote call invocation.
-
-
-
- Initializes a new instance of ClientBase class.
-
- The CallInvoker for remote call invocation.
-
-
-
- Creates a new client that sets host field for calls explicitly.
- gRPC supports multiple "hosts" being served by a single server.
- By default (if a client was not created by calling this method),
- host null with the meaning "use default host" is used.
-
-
-
-
- Creates a new instance of client from given ClientBaseConfiguration.
-
-
-
-
- Base class for client-side stubs.
-
-
-
-
- Initializes a new instance of ClientBase class that
- throws NotImplementedException upon invocation of any RPC.
- This constructor is only provided to allow creation of test doubles
- for client classes (e.g. mocking requires a parameterless constructor).
-
-
-
-
- Initializes a new instance of ClientBase class.
-
- The configuration.
-
-
-
- Initializes a new instance of ClientBase class.
-
- The channel to use for remote call invocation.
-
-
-
- Initializes a new instance of ClientBase class.
-
- The CallInvoker for remote call invocation.
-
-
-
- Gets the call invoker.
-
-
-
-
- Gets the configuration.
-
-
-
-
- Represents configuration of ClientBase. The class itself is visible to
- subclasses, but contents are marked as internal to make the instances opaque.
- The verbose name of this class was chosen to make name clash in generated code
- less likely.
-
-
-
-
- Creates a new instance of ClientBaseConfigurationInterceptor given the specified header and host interceptor function.
-
-
-
-
- Compression level based on grpc_compression_level from grpc/compression.h
-
-
-
-
- No compression.
-
-
-
-
- Low compression.
-
-
-
-
- Medium compression.
-
-
-
-
- High compression.
-
-
-
-
- Invokes client RPCs using .
-
-
-
-
- Initializes a new instance of the class.
-
- Channel to use.
-
-
-
- Invokes a simple remote call in a blocking fashion.
-
-
-
-
- Invokes a simple remote call asynchronously.
-
-
-
-
- Invokes a server streaming call asynchronously.
- In server streaming scenario, client sends on request and server responds with a stream of responses.
-
-
-
-
- Invokes a client streaming call asynchronously.
- In client streaming scenario, client sends a stream of requests and server responds with a single response.
-
-
-
-
- Invokes a duplex streaming call asynchronously.
- In duplex streaming scenario, client sends a stream of requests and server responds with a stream of responses.
- The response stream is completely independent and both side can be sending messages at the same time.
-
-
-
- Creates call invocation details for given method.
-
-
-
- Encapsulates initialization and shutdown of gRPC library.
-
-
-
-
- Returns a reference-counted instance of initialized gRPC environment.
- Subsequent invocations return the same instance unless reference count has dropped to zero previously.
-
-
-
-
- Decrements the reference count for currently active environment and asynchronously shuts down the gRPC environment if reference count drops to zero.
-
-
-
-
- Requests shutdown of all channels created by the current process.
-
-
-
-
- Requests immediate shutdown of all servers created by the current process.
-
-
-
-
- Gets application-wide logger used by gRPC.
-
- The logger.
-
-
-
- Sets the application-wide logger that should be used by gRPC.
-
-
-
-
- Sets the number of threads in the gRPC thread pool that polls for internal RPC events.
- Can be only invoked before the GrpcEnviroment is started and cannot be changed afterwards.
- Setting thread pool size is an advanced setting and you should only use it if you know what you are doing.
- Most users should rely on the default value provided by gRPC library.
- Note: this method is part of an experimental API that can change or be removed without any prior notice.
-
-
-
-
- Sets the number of completion queues in the gRPC thread pool that polls for internal RPC events.
- Can be only invoked before the GrpcEnviroment is started and cannot be changed afterwards.
- Setting the number of completions queues is an advanced setting and you should only use it if you know what you are doing.
- Most users should rely on the default value provided by gRPC library.
- Note: this method is part of an experimental API that can change or be removed without any prior notice.
-
-
-
-
- By default, gRPC's internal event handlers get offloaded to .NET default thread pool thread (inlineHandlers=false).
- Setting inlineHandlers to true will allow scheduling the event handlers directly to
- GrpcThreadPool internal threads. That can lead to significant performance gains in some situations,
- but requires user to never block in async code (incorrectly written code can easily lead to deadlocks).
- Inlining handlers is an advanced setting and you should only use it if you know what you are doing.
- Most users should rely on the default value provided by gRPC library.
- Note: this method is part of an experimental API that can change or be removed without any prior notice.
- Note: inlineHandlers=true was the default in gRPC C# v1.4.x and earlier.
-
-
-
-
- Sets the parameters for a pool that caches batch context instances. Reusing batch context instances
- instead of creating a new one for every C core operation helps reducing the GC pressure.
- Can be only invoked before the GrpcEnviroment is started and cannot be changed afterwards.
- This is an advanced setting and you should only use it if you know what you are doing.
- Most users should rely on the default value provided by gRPC library.
- Note: this method is part of an experimental API that can change or be removed without any prior notice.
-
-
-
-
- Sets the parameters for a pool that caches request call context instances. Reusing request call context instances
- instead of creating a new one for every requested call in C core helps reducing the GC pressure.
- Can be only invoked before the GrpcEnviroment is started and cannot be changed afterwards.
- This is an advanced setting and you should only use it if you know what you are doing.
- Most users should rely on the default value provided by gRPC library.
- Note: this method is part of an experimental API that can change or be removed without any prior notice.
-
-
-
-
- Occurs when GrpcEnvironment is about the start the shutdown logic.
- If GrpcEnvironment is later initialized and shutdown, the event will be fired again (unless unregistered first).
-
-
-
-
- Creates gRPC environment.
-
-
-
-
- Gets the completion queues used by this gRPC environment.
-
-
-
-
- Picks a completion queue in a round-robin fashion.
- Shouldn't be invoked on a per-call basis (used at per-channel basis).
-
-
-
-
- Gets the completion queue used by this gRPC environment.
-
-
-
-
- Gets version of gRPC C core.
-
-
-
-
- Shuts down this environment.
-
-
-
-
- Handler for AppDomain.DomainUnload, AppDomain.ProcessExit and AssemblyLoadContext.Unloading hooks.
-
-
-
-
- Client-side writable stream of messages with Close capability.
-
- The message type.
-
-
-
- Completes/closes the stream. Can only be called once there is no pending write. No writes should follow calling this.
-
-
-
-
- Extends the CallInvoker class to provide the interceptor facility on the client side.
-
-
-
-
- Returns a instance that intercepts
- the invoker with the given interceptor.
-
- The underlying invoker to intercept.
- The interceptor to intercept calls to the invoker with.
-
- Multiple interceptors can be added on top of each other by calling
- "invoker.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c".
- Interceptors can be later added to an existing intercepted CallInvoker, effectively
- building a chain like "invoker.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Returns a instance that intercepts
- the invoker with the given interceptors.
-
- The channel to intercept.
-
- An array of interceptors to intercept the calls to the invoker with.
- Control is passed to the interceptors in the order specified.
-
-
- Multiple interceptors can be added on top of each other by calling
- "invoker.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c".
- Interceptors can be later added to an existing intercepted CallInvoker, effectively
- building a chain like "invoker.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Returns a instance that intercepts
- the invoker with the given interceptor.
-
- The underlying invoker to intercept.
-
- An interceptor delegate that takes the request metadata to be sent with an outgoing call
- and returns a instance that will replace the existing
- invocation metadata.
-
-
- Multiple interceptors can be added on top of each other by
- building a chain like "invoker.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Creates a new instance of MetadataInterceptor given the specified interceptor function.
-
-
-
-
- Provides extension methods to make it easy to register interceptors on Channel objects.
-
-
-
-
- Returns a instance that intercepts
- the channel with the given interceptor.
-
- The channel to intercept.
- The interceptor to intercept the channel with.
-
- Multiple interceptors can be added on top of each other by calling
- "channel.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c".
- Interceptors can be later added to an existing intercepted channel, effectively
- building a chain like "channel.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Returns a instance that intercepts
- the channel with the given interceptors.
-
- The channel to intercept.
-
- An array of interceptors to intercept the channel with.
- Control is passed to the interceptors in the order specified.
-
-
- Multiple interceptors can be added on top of each other by calling
- "channel.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c".
- Interceptors can be later added to an existing intercepted channel, effectively
- building a chain like "channel.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Returns a instance that intercepts
- the invoker with the given interceptor.
-
- The channel to intercept.
-
- An interceptor delegate that takes the request metadata to be sent with an outgoing call
- and returns a instance that will replace the existing
- invocation metadata.
-
-
- Multiple interceptors can be added on top of each other by
- building a chain like "channel.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Carries along the context associated with intercepted invocations on the client side.
-
-
-
-
- Creates a new instance of
- with the specified method, host, and call options.
-
- A object representing the method to be invoked.
- The host to dispatch the current call to.
- A instance containing the call options of the current call.
-
-
-
- Gets the instance
- representing the method to be invoked.
-
-
-
-
- Gets the host that the currect invocation will be dispatched to.
-
-
-
-
- Gets the structure representing the
- call options associated with the current invocation.
-
-
-
-
- Decorates an underlying to
- intercept calls through a given interceptor.
-
-
-
-
- Creates a new instance of
- with the given underlying invoker and interceptor instances.
-
-
-
-
- Intercepts a simple blocking call with the registered interceptor.
-
-
-
-
- Intercepts a simple asynchronous call with the registered interceptor.
-
-
-
-
- Intercepts an asynchronous server streaming call with the registered interceptor.
-
-
-
-
- Intercepts an asynchronous client streaming call with the registered interceptor.
-
-
-
-
- Intercepts an asynchronous duplex streaming call with the registered interceptor.
-
-
-
-
- Serves as the base class for gRPC interceptors.
-
-
-
-
- Represents a continuation for intercepting simple blocking invocations.
- A delegate of this type is passed to the BlockingUnaryCall method
- when an outgoing invocation is being intercepted and calling the
- delegate will invoke the next interceptor in the chain, or the underlying
- call invoker if called from the last interceptor. The interceptor is
- allowed to call it zero, one, or multiple times, passing it the appropriate
- context and request values as it sees fit.
-
- Request message type for this invocation.
- Response message type for this invocation.
- The request value to continue the invocation with.
-
- The
- instance to pass to the next step in the invocation process.
-
-
- The response value of the invocation to return to the caller.
- The interceptor can choose to return the return value of the
- continuation delegate or an arbitrary value as it sees fit.
-
-
-
-
- Represents a continuation for intercepting simple asynchronous invocations.
- A delegate of this type is passed to the AsyncUnaryCall method
- when an outgoing invocation is being intercepted and calling the
- delegate will invoke the next interceptor in the chain, or the underlying
- call invoker if called from the last interceptor. The interceptor is
- allowed to call it zero, one, or multiple times, passing it the appropriate
- request value and context as it sees fit.
-
- Request message type for this invocation.
- Response message type for this invocation.
- The request value to continue the invocation with.
-
- The
- instance to pass to the next step in the invocation process.
-
-
- An instance of
- representing an asynchronous invocation of a unary RPC.
- The interceptor can choose to return the same object returned from
- the continuation delegate or an arbitrarily constructed instance as it sees fit.
-
-
-
-
- Represents a continuation for intercepting asynchronous server-streaming invocations.
- A delegate of this type is passed to the AsyncServerStreamingCall method
- when an outgoing invocation is being intercepted and calling the
- delegate will invoke the next interceptor in the chain, or the underlying
- call invoker if called from the last interceptor. The interceptor is
- allowed to call it zero, one, or multiple times, passing it the appropriate
- request value and context as it sees fit.
-
- Request message type for this invocation.
- Response message type for this invocation.
- The request value to continue the invocation with.
-
- The
- instance to pass to the next step in the invocation process.
-
-
- An instance of
- representing an asynchronous invocation of a server-streaming RPC.
- The interceptor can choose to return the same object returned from
- the continuation delegate or an arbitrarily constructed instance as it sees fit.
-
-
-
-
- Represents a continuation for intercepting asynchronous client-streaming invocations.
- A delegate of this type is passed to the AsyncClientStreamingCall method
- when an outgoing invocation is being intercepted and calling the
- delegate will invoke the next interceptor in the chain, or the underlying
- call invoker if called from the last interceptor. The interceptor is
- allowed to call it zero, one, or multiple times, passing it the appropriate
- request value and context as it sees fit.
-
- Request message type for this invocation.
- Response message type for this invocation.
-
- The
- instance to pass to the next step in the invocation process.
-
-
- An instance of
- representing an asynchronous invocation of a client-streaming RPC.
- The interceptor can choose to return the same object returned from
- the continuation delegate or an arbitrarily constructed instance as it sees fit.
-
-
-
-
- Represents a continuation for intercepting asynchronous duplex invocations.
- A delegate of this type is passed to the AsyncDuplexStreamingCall method
- when an outgoing invocation is being intercepted and calling the
- delegate will invoke the next interceptor in the chain, or the underlying
- call invoker if called from the last interceptor. The interceptor is
- allowed to call it zero, one, or multiple times, passing it the appropriate
- request value and context as it sees fit.
-
-
- The
- instance to pass to the next step in the invocation process.
-
-
- An instance of
- representing an asynchronous invocation of a duplex-streaming RPC.
- The interceptor can choose to return the same object returned from
- the continuation delegate or an arbitrarily constructed instance as it sees fit.
-
-
-
-
- Intercepts a blocking invocation of a simple remote call.
-
- The request message of the invocation.
-
- The
- associated with the current invocation.
-
-
- The callback that continues the invocation process.
- This can be invoked zero or more times by the interceptor.
- The interceptor can invoke the continuation passing the given
- request value and context arguments, or substitute them as it sees fit.
-
-
- The response message of the current invocation.
- The interceptor can simply return the return value of the
- continuation delegate passed to it intact, or an arbitrary
- value as it sees fit.
-
-
-
-
- Intercepts an asynchronous invocation of a simple remote call.
-
- The request message of the invocation.
-
- The
- associated with the current invocation.
-
-
- The callback that continues the invocation process.
- This can be invoked zero or more times by the interceptor.
- The interceptor can invoke the continuation passing the given
- request value and context arguments, or substitute them as it sees fit.
-
-
- An instance of
- representing an asynchronous unary invocation.
- The interceptor can simply return the return value of the
- continuation delegate passed to it intact, or construct its
- own substitute as it sees fit.
-
-
-
-
- Intercepts an asynchronous invocation of a streaming remote call.
-
- The request message of the invocation.
-
- The
- associated with the current invocation.
-
-
- The callback that continues the invocation process.
- This can be invoked zero or more times by the interceptor.
- The interceptor can invoke the continuation passing the given
- request value and context arguments, or substitute them as it sees fit.
-
-
- An instance of
- representing an asynchronous server-streaming invocation.
- The interceptor can simply return the return value of the
- continuation delegate passed to it intact, or construct its
- own substitute as it sees fit.
-
-
-
-
- Intercepts an asynchronous invocation of a client streaming call.
-
-
- The
- associated with the current invocation.
-
-
- The callback that continues the invocation process.
- This can be invoked zero or more times by the interceptor.
- The interceptor can invoke the continuation passing the given
- context argument, or substitute as it sees fit.
-
-
- An instance of
- representing an asynchronous client-streaming invocation.
- The interceptor can simply return the return value of the
- continuation delegate passed to it intact, or construct its
- own substitute as it sees fit.
-
-
-
-
- Intercepts an asynchronous invocation of a duplex streaming call.
-
-
- The
- associated with the current invocation.
-
-
- The callback that continues the invocation process.
- This can be invoked zero or more times by the interceptor.
- The interceptor can invoke the continuation passing the given
- context argument, or substitute as it sees fit.
-
-
- An instance of
- representing an asynchronous duplex-streaming invocation.
- The interceptor can simply return the return value of the
- continuation delegate passed to it intact, or construct its
- own substitute as it sees fit.
-
-
-
-
- Server-side handler for intercepting and incoming unary call.
-
- Request message type for this method.
- Response message type for this method.
- The request value of the incoming invocation.
-
- An instance of representing
- the context of the invocation.
-
-
- A delegate that asynchronously proceeds with the invocation, calling
- the next interceptor in the chain, or the service request handler,
- in case of the last interceptor and return the response value of
- the RPC. The interceptor can choose to call it zero or more times
- at its discretion.
-
-
- A future representing the response value of the RPC. The interceptor
- can simply return the return value from the continuation intact,
- or an arbitrary response value as it sees fit.
-
-
-
-
- Server-side handler for intercepting client streaming call.
-
- Request message type for this method.
- Response message type for this method.
- The request stream of the incoming invocation.
-
- An instance of representing
- the context of the invocation.
-
-
- A delegate that asynchronously proceeds with the invocation, calling
- the next interceptor in the chain, or the service request handler,
- in case of the last interceptor and return the response value of
- the RPC. The interceptor can choose to call it zero or more times
- at its discretion.
-
-
- A future representing the response value of the RPC. The interceptor
- can simply return the return value from the continuation intact,
- or an arbitrary response value as it sees fit. The interceptor has
- the ability to wrap or substitute the request stream when calling
- the continuation.
-
-
-
-
- Server-side handler for intercepting server streaming call.
-
- Request message type for this method.
- Response message type for this method.
- The request value of the incoming invocation.
- The response stream of the incoming invocation.
-
- An instance of representing
- the context of the invocation.
-
-
- A delegate that asynchronously proceeds with the invocation, calling
- the next interceptor in the chain, or the service request handler,
- in case of the last interceptor and the interceptor can choose to
- call it zero or more times at its discretion. The interceptor has
- the ability to wrap or substitute the request value and the response stream
- when calling the continuation.
-
-
-
-
- Server-side handler for intercepting bidirectional streaming calls.
-
- Request message type for this method.
- Response message type for this method.
- The request stream of the incoming invocation.
- The response stream of the incoming invocation.
-
- An instance of representing
- the context of the invocation.
-
-
- A delegate that asynchronously proceeds with the invocation, calling
- the next interceptor in the chain, or the service request handler,
- in case of the last interceptor and the interceptor can choose to
- call it zero or more times at its discretion. The interceptor has
- the ability to wrap or substitute the request and response streams
- when calling the continuation.
-
-
-
-
- Extends the ServerServiceDefinition class to add methods used to register interceptors on the server side.
-
-
-
-
- Returns a instance that
- intercepts incoming calls to the underlying service handler through the given interceptor.
-
- The instance to register interceptors on.
- The interceptor to intercept the incoming invocations with.
-
- Multiple interceptors can be added on top of each other by calling
- "serverServiceDefinition.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c".
- Interceptors can be later added to an existing intercepted service definition, effectively
- building a chain like "serverServiceDefinition.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Returns a instance that
- intercepts incoming calls to the underlying service handler through the given interceptors.
-
- The instance to register interceptors on.
-
- An array of interceptors to intercept the incoming invocations with.
- Control is passed to the interceptors in the order specified.
-
-
- Multiple interceptors can be added on top of each other by calling
- "serverServiceDefinition.Intercept(a, b, c)". The order of invocation will be "a", "b", and then "c".
- Interceptors can be later added to an existing intercepted service definition, effectively
- building a chain like "serverServiceDefinition.Intercept(c).Intercept(b).Intercept(a)". Note that
- in this case, the last interceptor added will be the first to take control.
-
-
-
-
- Helper for creating ServerServiceDefinition with intercepted handlers.
-
-
-
-
- Manages client side native call lifecycle.
-
-
-
-
- This constructor should only be used for testing.
-
-
-
-
- Blocking unary request - unary response call.
-
-
-
-
- Starts a unary request - unary response call.
-
-
-
-
- Starts a streamed request - unary response call.
- Use StartSendMessage and StartSendCloseFromClient to stream requests.
-
-
-
-
- Starts a unary request - streamed response call.
-
-
-
-
- Starts a streaming request - streaming response call.
- Use StartSendMessage and StartSendCloseFromClient to stream requests.
-
-
-
-
- Sends a streaming request. Only one pending send action is allowed at any given time.
-
-
-
-
- Receives a streaming response. Only one pending read action is allowed at any given time.
-
-
-
-
- Sends halfclose, indicating client is done with streaming requests.
- Only one pending send action is allowed at any given time.
-
-
-
-
- Get the task that completes once if streaming response call finishes with ok status and throws RpcException with given status otherwise.
-
-
-
-
- Get the task that completes once response headers are received.
-
-
-
-
- Gets the resulting status if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Gets the trailing metadata if the call has already finished.
- Throws InvalidOperationException otherwise.
-
-
-
-
- Gets WriteFlags set in callDetails.Options.WriteOptions
-
-
-
-
- Handles receive status completion for calls with streaming response.
-
-
-
-
- Handler for unary response completion.
-
-
-
-
- Handles receive status completion for calls with streaming response.
-
-
-
-
- Base for handling both client side and server side calls.
- Manages native call lifecycle and provides convenience methods.
-
-
-
-
- Requests cancelling the call.
-
-
-
-
- Requests cancelling the call with given status.
-
-
-
-
- Initiates sending a message. Only one send operation can be active at a time.
-
-
-
-
- Initiates reading a message. Only one read operation can be active at a time.
-
-
-
-
- If there are no more pending actions and no new actions can be started, releases
- the underlying native resources.
-
-
-
-
- Returns an exception to throw for a failed send operation.
- It is only allowed to call this method for a call that has already finished.
-
-
-
-
- Checks if sending is allowed and possibly returns a Task that allows short-circuiting the send
- logic by directly returning the write operation result task. Normally, null is returned.
-
-
-
-
- Handles send completion (including SendCloseFromClient).
-
-
-
-
- Handles send status from server completion.
-
-
-
-
- Handles streaming read completion.
-
-
-
-
- Manages server side native call lifecycle.
-
-
-
-
- Only for testing purposes.
-
-
-
-
- Starts a server side call.
-
-
-
-
- Sends a streaming response. Only one pending send action is allowed at any given time.
-
-
-
-
- Receives a streaming request. Only one pending read action is allowed at any given time.
-
-
-
-
- Initiates sending a initial metadata.
- Even though C-core allows sending metadata in parallel to sending messages, we will treat sending metadata as a send message operation
- to make things simpler.
-
-
-
-
- Sends call result status, indicating we are done with writes.
- Sending a status different from StatusCode.OK will also implicitly cancel the call.
-
-
-
-
- Gets cancellation token that gets cancelled once close completion
- is received and the cancelled flag is set.
-
-
-
-
- Handles the server side close completion.
-
-
-
-
- grpc_auth_context
-
-
-
-
- Copies contents of the native auth context into a new AuthContext instance.
-
-
-
-
- grpc_auth_property
-
-
-
-
- grpc_auth_property_iterator
-
-
-
-
- grpcsharp_batch_context
-
-
-
-
- grpc_call_credentials from grpc/grpc_security.h
-
-
-
-
- grpc_call_error from grpc/grpc.h
-
-
-
-
- Checks the call API invocation's result is OK.
-
-
-
-
- Flags to enable special call behaviors (client-side only).
-
-
-
-
- The call is idempotent (retrying the call doesn't change the outcome of the operation).
-
-
-
-
- If channel is in ChannelState.TransientFailure, attempt waiting for the channel to recover
- instead of failing the call immediately.
-
-
-
-
- The call is cacheable. gRPC is free to use GET verb */
-
-
-
-
- grpc_call from grpc/grpc.h
-
-
-
-
- Only for testing.
-
-
-
-
- grpc_channel_args from grpc/grpc.h
-
-
-
-
- grpc_channel_credentials from grpc/grpc_security.h
-
-
-
-
- grpc_channel from grpc/grpc.h
-
-
-
-
- Writes requests asynchronously to an underlying AsyncCall object.
-
-
-
-
- Status + metadata received on client side when call finishes.
- (when receive_status_on_client operation finishes).
-
-
-
-
- gpr_clock_type from grpc/support/time.h
-
-
-
-
- grpc_event from grpc/grpc.h
-
-
-
-
- grpc_completion_type from grpc/grpc.h
-
-
-
-
- grpc_completion_queue from grpc/grpc.h
-
-
-
-
- Create a completion queue that can only be used for Pluck operations.
-
-
-
-
- Create a completion queue that can only be used for Next operations.
-
-
-
-
- Creates a new usage scope for this completion queue. Once successfully created,
- the completion queue won't be shutdown before scope.Dispose() is called.
-
-
-
-
- Completion registry associated with this completion queue.
- Doesn't need to be set if only using Pluck() operations.
-
-
-
-
- For testing purposes only. NOT threadsafe.
-
-
-
-
- IntPtr doesn't implement IEquatable{IntPtr} so we need to use custom comparer to avoid boxing.
-
-
-
-
- Context propagation flags from grpc/grpc.h.
-
-
-
-
- Implementation of ContextPropagationToken that carries
- all fields needed for context propagation by C-core based implementation of gRPC.
- Instances of ContextPropagationToken that are not of this
- type will be recognized as "foreign" and will be silently ignored
- (treated as if null).
-
-
-
-
- Default propagation mask used by C core.
-
-
-
-
- Default propagation mask used by C# - we want to propagate deadline
- and cancellation token by our own means, everything else will be propagated
- by C core automatically (according to DefaultCoreMask).
-
-
-
-
- Gets the native handle of the parent call.
-
-
-
-
- Gets the parent call's deadline.
-
-
-
-
- Gets the parent call's cancellation token.
-
-
-
-
- Get the context propagation options.
-
-
-
-
- Converts given ContextPropagationToken to ContextPropagationTokenImpl
- if possible or returns null.
- Being able to convert means that the context propagation token is recognized as
- "ours" (was created by this implementation).
-
-
-
-
- Owned char* object.
-
-
-
-
- Checks the debug stats and take action for any inconsistency found.
-
-
-
-
- Pool of objects that combines a shared pool and a thread local pool.
-
-
-
-
- Initializes a new instance of DefaultObjectPool with given shared capacity and thread local capacity.
- Thread local capacity should be significantly smaller than the shared capacity as we don't guarantee immediately
- disposing the objects in the thread local pool after this pool is disposed (they will eventually be garbage collected
- after the thread that owns them has finished).
- On average, the shared pool will only be accessed approx. once for every threadLocalCapacity / 2 rent or lease
- operations.
-
-
-
-
- Leases an item from the pool or creates a new instance if the pool is empty.
- Attempts to retrieve the item from the thread local pool first.
- If the thread local pool is empty, the item is taken from the shared pool
- along with more items that are moved to the thread local pool to avoid
- prevent acquiring the lock for shared pool too often.
- The methods should not be called after the pool is disposed, but it won't
- results in an error to do so (after depleting the items potentially left
- in the thread local pool, it will continue returning new objects created by the factory).
-
-
-
-
- Returns an item to the pool.
- Attempts to add the item to the thread local pool first.
- If the thread local pool is full, item is added to a shared pool,
- along with half of the items for the thread local pool, which
- should prevent acquiring the lock for shared pool too often.
- If called after the pool is disposed, we make best effort not to
- add anything to the thread local pool and we guarantee not to add
- anything to the shared pool (items will be disposed instead).
-
-
-
-
- Overrides the content of default SSL roots.
-
-
-
-
- Overrides C core's default roots with roots.pem loaded as embedded resource.
-
-
-
-
- Pool of threads polling on a set of completions queues.
-
-
-
-
- Creates a thread pool threads polling on a set of completions queues.
-
- Environment.
- Pool size.
- Completion queue count.
- Handler inlining.
-
-
-
- Returns true if there is at least one thread pool thread that hasn't
- already stopped.
- Threads can either stop because all completion queues shut down or
- because all foreground threads have already shutdown and process is
- going to exit.
-
-
-
-
- Body of the polling thread.
-
-
-
-
- Abstraction of a native call object.
-
-
-
-
- Pool of objects.
-
-
-
-
- An object that can be pooled in IObjectPool.
-
-
-
-
-
- Set the action that will be invoked to return a leased object to the pool.
-
-
-
-
- Exposes non-generic members of ServerReponseStream.
-
-
-
-
- Asynchronously sends response headers for the current call to the client. See ServerCallContext.WriteResponseHeadersAsync for exact semantics.
-
-
-
-
- Gets or sets the write options.
-
-
-
-
- Useful methods for native/managed marshalling.
-
-
-
-
- Converts IntPtr pointing to a UTF-8 encoded byte array to string.
-
-
-
-
- Returns byte array containing UTF-8 encoding of given string.
-
-
-
-
- Get string from a UTF8 encoded byte array.
-
-
-
-
- grpc_metadata_array from grpc/grpc.h
-
-
-
-
- Reads metadata from pointer to grpc_metadata_array
-
-
-
-
- Takes care of loading C# native extension and provides access to PInvoke calls the library exports.
-
-
-
-
- Gets singleton instance of this class.
- The native extension is loaded when called for the first time.
-
-
-
-
- Provides access to the exported native methods.
-
-
-
-
- Detects which configuration of native extension to load and load it.
-
-
-
-
- Loads native extension and return native methods delegates.
-
-
-
-
- Return native method delegates when running on Unity platform.
- Unity does not use standard NuGet packages and the native library is treated
- there as a "native plugin" which is (provided it has the right metadata)
- automatically made available to [DllImport] loading logic.
- WARNING: Unity support is experimental and work-in-progress. Don't expect it to work.
-
-
-
-
- Return native method delegates when running on the Xamarin platform.
- WARNING: Xamarin support is experimental and work-in-progress. Don't expect it to work.
-
-
-
-
- Logs from gRPC C core library can get lost if your application is not a console app.
- This class allows redirection of logs to gRPC logger.
-
-
-
-
- Redirects logs from native gRPC C core library to a general logger.
-
-
-
-
- Use this attribute to mark methods that will be called back from P/Invoke calls.
- iOS (and probably other AOT platforms) needs to have delegates registered.
- Instead of depending on Xamarin.iOS for this, we can just create our own,
- the iOS runtime just checks for the type name.
- See: https://docs.microsoft.com/en-gb/xamarin/ios/internals/limitations#reverse-callbacks
-
-
-
-
- Provides access to all native methods provided by NativeExtension.
- An extra level of indirection is added to P/Invoke calls to allow intelligent loading
- of the right configuration of the native extension based on current platform, architecture etc.
-
-
-
-
- Gets singleton instance of this class.
-
-
-
-
- Delegate types for all published native methods. Declared under inner class to prevent scope pollution.
-
-
-
-
- grpc_csharp_ext used as a static library (e.g Unity iOS).
-
-
-
-
- grpc_csharp_ext used a shared library (e.g on Unity Standalone and Android).
-
-
-
-
- Utility methods for detecting platform and architecture.
-
-
-
-
- true if running on Unity platform.
-
-
-
-
- true if running on Unity iOS, false otherwise.
-
-
-
-
- true if running on a Xamarin platform (either Xamarin.Android or Xamarin.iOS),
- false otherwise.
-
-
-
-
- true if running on Xamarin.iOS, false otherwise.
-
-
-
-
- true if running on Xamarin.Android, false otherwise.
-
-
-
-
- true if running on .NET Core (CoreCLR), false otherwise.
-
-
-
-
- Returns UnityEngine.Application.platform as a string.
- See https://docs.unity3d.com/ScriptReference/Application-platform.html for possible values.
- Value is obtained via reflection to avoid compile-time dependency on Unity.
- This method should only be called if IsUnity is true.
-
-
-
-
- grpcsharp_request_call_context
-
-
-
-
- Safe handle to wrap native objects.
-
-
-
-
- Handler used for unimplemented method.
-
-
-
-
- grpc_server_credentials from grpc/grpc_security.h
-
-
-
-
- Writes responses asynchronously to an underlying AsyncCallServer object.
-
-
-
-
- Details of a newly received RPC.
-
-
-
-
- grpc_server from grpc/grpc.h
-
-
-
-
- Maps methods from ServerServiceDefinition to server call handlers.
-
-
-
-
- Helper for converting ServerServiceDefinition to server call handlers.
-
-
-
-
- gpr_timespec from grpc/support/time.h
-
-
-
-
- Timespec a long time in the future.
-
-
-
-
- Timespec a long time in the past.
-
-
-
-
- Return Timespec representing the current time.
-
-
-
-
- Seconds since unix epoch.
-
-
-
-
- The nanoseconds part of timeval.
-
-
-
-
- Converts the timespec to desired clock type.
-
-
-
-
- Converts Timespec to DateTime.
- Timespec needs to be of type GPRClockType.Realtime and needs to represent a legal value.
- DateTime has lower resolution (100ns), so rounding can occurs.
- Value are always rounded up to the nearest DateTime value in the future.
-
- For Timespec.InfFuture or if timespec is after the largest representable DateTime, DateTime.MaxValue is returned.
- For Timespec.InfPast or if timespec is before the lowest representable DateTime, DateTime.MinValue is returned.
-
- Unless DateTime.MaxValue or DateTime.MinValue is returned, the resulting DateTime is always in UTC
- (DateTimeKind.Utc)
-
-
-
-
- Creates DateTime to Timespec.
- DateTime has to be in UTC (DateTimeKind.Utc) unless it's DateTime.MaxValue or DateTime.MinValue.
- For DateTime.MaxValue of date time after the largest representable Timespec, Timespec.InfFuture is returned.
- For DateTime.MinValue of date time before the lowest representable Timespec, Timespec.InfPast is returned.
-
- The date time.
- Date time.
-
-
-
- Gets current timestamp using GPRClockType.Precise.
- Only available internally because core needs to be compiled with
- GRPC_TIMERS_RDTSC support for this to use RDTSC.
-
-
-
-
- Call invoker that throws NotImplementedException for all requests.
-
-
-
-
- Represents a dynamically loaded unmanaged library in a (partially) platform independent manner.
- First, the native library is loaded using dlopen (on Unix systems) or using LoadLibrary (on Windows).
- dlsym or GetProcAddress are then used to obtain symbol addresses. Marshal.GetDelegateForFunctionPointer
- transforms the addresses into delegates to native methods.
- See http://stackoverflow.com/questions/13461989/p-invoke-to-dynamically-loaded-library-on-mono.
-
-
-
-
- Loads symbol in a platform specific way.
-
-
-
-
-
-
- Loads library in a platform specific way.
-
-
-
-
- On Linux systems, using using dlopen and dlsym results in
- DllNotFoundException("libdl.so not found") if libc6-dev
- is not installed. As a workaround, we load symbols for
- dlopen and dlsym from the current process as on Linux
- Mono sure is linked against these symbols.
-
-
-
-
- Similarly as for Mono on Linux, we load symbols for
- dlopen and dlsym from the "libcoreclr.so",
- to avoid the dependency on libc-dev Linux.
-
-
-
-
- Default implementation of ServerCallContext.
-
-
-
-
- Creates a new instance of ServerCallContext.
- To allow reuse of ServerCallContext API by different gRPC implementations, the implementation of some members is provided externally.
- To provide state, this ServerCallContext instance and extraData will be passed to the member implementations.
-
-
-
-
- Key certificate pair (in PEM encoding).
-
-
-
-
- Creates a new certificate chain - private key pair.
-
- PEM encoded certificate chain.
- PEM encoded private key.
-
-
-
- PEM encoded certificate chain.
-
-
-
-
- PEM encoded private key.
-
-
-
- Logger that logs to System.Console.
-
-
- Creates a console logger not associated to any specific type.
-
-
- Creates a console logger that logs messsage specific for given type.
-
-
-
- Returns a logger associated with the specified type.
-
-
-
- For logging messages.
-
-
- Returns a logger associated with the specified type.
-
-
- Logs a message with severity Debug.
-
-
- Logs a formatted message with severity Debug.
-
-
- Logs a message with severity Info.
-
-
- Logs a formatted message with severity Info.
-
-
- Logs a message with severity Warning.
-
-
- Logs a formatted message with severity Warning.
-
-
- Logs a message and an associated exception with severity Warning.
-
-
- Logs a message with severity Error.
-
-
- Logs a formatted message with severity Error.
-
-
- Logs a message and an associated exception with severity Error.
-
-
- Standard logging levels.
-
-
-
- Debug severity.
-
-
-
-
- Info severity.
-
-
-
-
- Warning severity.
-
-
-
-
- Error severity.
-
-
-
-
- Logging is off.
-
-
-
- Logger that filters out messages below certain log level.
-
-
-
- Creates and instance of LogLevelFilter.
-
-
-
-
- Creates and instance of LogLevelFilter.
- The fromEnvironmentVariable parameter allows looking up "GRPC_VERBOSITY" setting provided by C-core
- and uses the same log level for C# logs. Using this setting is recommended as it can prevent unintentionally hiding
- C core logs requested by "GRPC_VERBOSITY" environment variable (which could happen if C# logger's log level was set to a more restrictive value).
-
- the logger to forward filtered logs to.
- the default log level, unless overriden by env variable.
- if true, override log level with setting from environment variable.
-
-
-
- Returns a logger associated with the specified type.
-
-
-
- Logs a message with severity Debug.
-
-
- Logs a formatted message with severity Debug.
-
-
- Logs a message with severity Info.
-
-
- Logs a formatted message with severity Info.
-
-
- Logs a message with severity Warning.
-
-
- Logs a formatted message with severity Warning.
-
-
- Logs a message and an associated exception with severity Warning.
-
-
- Logs a message with severity Error.
-
-
- Logs a formatted message with severity Error.
-
-
- Logs a message and an associated exception with severity Error.
-
-
- Get log level based on a default and lookup of GRPC_VERBOSITY environment variable.
-
-
-
- Logger which doesn't log any information anywhere.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- Returns a reference to the instance on which the method is called, as
- instances aren't associated with specific types.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
-
- As with all logging calls on this logger, this method is a no-op.
-
-
-
- Logger that logs to an arbitrary System.IO.TextWriter.
-
-
-
- Creates a console logger not associated to any specific type and writes to given System.IO.TextWriter.
- User is responsible for providing an instance of TextWriter that is thread-safe.
-
-
-
-
- Creates a console logger not associated to any specific type and writes to a System.IO.TextWriter obtained from given provider.
- User is responsible for providing an instance of TextWriter that is thread-safe.
-
-
-
- Creates a console logger that logs messsage specific for given type.
-
-
-
- Returns a logger associated with the specified type.
-
-
-
- Logs a message with severity Debug.
-
-
- Logs a formatted message with severity Debug.
-
-
- Logs a message with severity Info.
-
-
- Logs a formatted message with severity Info.
-
-
- Logs a message with severity Warning.
-
-
- Logs a formatted message with severity Warning.
-
-
- Logs a message and an associated exception with severity Warning.
-
-
- Logs a message with severity Error.
-
-
- Logs a formatted message with severity Error.
-
-
- Logs a message and an associated exception with severity Error.
-
-
- Gets the type associated with this logger.
-
-
-
- gRPC server. A single server can serve an arbitrary number of services and can listen on more than one port.
-
-
-
-
- Creates a new server.
-
-
-
-
- Creates a new server.
-
- Channel options.
-
-
-
- Services that will be exported by the server once started. Register a service with this
- server by adding its definition to this collection.
-
-
-
-
- Ports on which the server will listen once started. Register a port with this
- server by adding its definition to this collection.
-
-
-
-
- To allow awaiting termination of the server.
-
-
-
-
- Experimental API. Might anytime change without prior notice.
- Number or calls requested via grpc_server_request_call at any given time for each completion queue.
-
-
-
-
- Starts the server.
- Throws IOException if not successful.
-
-
-
-
- Requests server shutdown and when there are no more calls being serviced,
- cleans up used resources. The returned task finishes when shutdown procedure
- is complete.
-
-
- It is strongly recommended to shutdown all previously created servers before exiting from the process.
-
-
-
-
- Requests server shutdown while cancelling all the in-progress calls.
- The returned task finishes when shutdown procedure is complete.
-
-
- It is strongly recommended to shutdown all previously created servers before exiting from the process.
-
-
-
-
- Shuts down the server.
-
-
-
-
- In case the environment's threadpool becomes dead, the shutdown completion will
- never be delivered, but we need to release the environment's handle anyway.
-
-
-
-
- Adds a service definition.
-
-
-
-
- Adds a listening port.
-
-
-
-
- Allows one new RPC call to be received by server.
-
-
-
-
- Checks that all ports have been bound successfully.
-
-
-
-
- Selects corresponding handler for given call and handles the call.
-
-
-
-
- Handles the native callback.
-
-
-
-
- Handles native callback.
-
-
-
-
- Collection of service definitions.
-
-
-
-
- Adds a service definition to the server. This is how you register
- handlers for a service with the server. Only call this before Start().
-
-
-
-
- Gets enumerator for this collection.
-
-
-
-
- Collection of server ports.
-
-
-
-
- Adds a new port on which server should listen.
- Only call this before Start().
- The port on which server will be listening.
-
-
-
-
- Adds a new port on which server should listen.
- The port on which server will be listening.
-
- the host
- the port. If zero, an unused port is chosen automatically.
- credentials to use to secure this port.
-
-
-
- Gets enumerator for this collection.
-
-
-
-
- Server side credentials.
-
-
-
-
- Returns instance of credential that provides no security and
- will result in creating an unsecure server port with no encryption whatsoever.
-
-
-
-
- Creates native object for the credentials.
-
- The native credentials.
-
-
-
- Modes of requesting client's SSL certificate by the server.
- Corresponds to grpc_ssl_client_certificate_request_type.
-
-
-
-
- Server does not request client certificate.
- The certificate presented by the client is not checked by the server at
- all. (A client may present a self signed or signed certificate or not
- present a certificate at all and any of those option would be accepted)
-
-
-
-
- Server requests client certificate but does not enforce that the client
- presents a certificate.
- If the client presents a certificate, the client authentication is left to
- the application (the necessary metadata will be available to the
- application via authentication context properties, see grpc_auth_context).
- The client's key certificate pair must be valid for the SSL connection to
- be established.
-
-
-
-
- Server requests client certificate but does not enforce that the client
- presents a certificate.
- If the client presents a certificate, the client authentication is done by
- the gRPC framework. (For a successful connection the client needs to either
- present a certificate that can be verified against the root certificate
- configured by the server or not present a certificate at all)
- The client's key certificate pair must be valid for the SSL connection to
- be established.
-
-
-
-
- Server requests client certificate and enforces that the client presents a
- certificate.
- If the client presents a certificate, the client authentication is left to
- the application (the necessary metadata will be available to the
- application via authentication context properties, see grpc_auth_context).
- The client's key certificate pair must be valid for the SSL connection to
- be established.
-
-
-
-
- Server requests client certificate and enforces that the client presents a
- certificate.
- The cerificate presented by the client is verified by the gRPC framework.
- (For a successful connection the client needs to present a certificate that
- can be verified against the root certificate configured by the server)
- The client's key certificate pair must be valid for the SSL connection to
- be established.
-
-
-
-
- Server-side SSL credentials.
-
-
-
-
- Creates server-side SSL credentials.
-
- Key-certificates to use.
- PEM encoded client root certificates used to authenticate client.
- Deprecated, use clientCertificateRequest overload instead.
-
-
-
- Creates server-side SSL credentials.
-
- Key-certificates to use.
- PEM encoded client root certificates used to authenticate client.
- Options for requesting and verifying client certificate.
-
-
-
- Creates server-side SSL credentials.
- This constructor should be used if you do not wish to authenticate the client.
- (client certificate won't be requested and checked by the server at all).
-
- Key-certificates to use.
-
-
-
- Key-certificate pairs.
-
-
-
-
- PEM encoded client root certificates.
-
-
-
-
- Deprecated. If true, the authenticity of client check will be enforced.
-
-
-
-
- Mode of requesting certificate from client by the server.
-
-
-
-
- A port exposed by a server.
-
-
-
-
- Pass this value as port to have the server choose an unused listening port for you.
- Ports added to a server will contain the bound port in their property.
-
-
-
-
- Creates a new port on which server should listen.
-
- The port on which server will be listening.
- the host
- the port. If zero, an unused port is chosen automatically.
- credentials to use to secure this port.
-
-
-
- Creates a port from an existing ServerPort instance and boundPort value.
-
-
-
- The host.
-
-
- The port.
-
-
- The server credentials.
-
-
-
- The port actually bound by the server. This is useful if you let server
- pick port automatically.
-
-
-
-
- Extension methods that simplify work with gRPC streaming calls.
-
-
-
-
- Reads the entire stream and executes an async action for each element.
-
-
-
-
- Reads the entire stream and creates a list containing all the elements read.
-
-
-
-
- Writes all elements from given enumerable to the stream.
- Completes the stream afterwards unless close = false.
-
-
-
-
- Writes all elements from given enumerable to the stream.
-
-
-
-
- Utility methods to run microbenchmarks.
-
-
-
-
- Runs a simple benchmark preceded by warmup phase.
-
-
-
-
- Utility methods for task parallel library.
-
-
-
-
- Framework independent equivalent of Task.CompletedTask.
-
-
-
-
- Provides info about current version of gRPC.
- See https://codingforsmarties.wordpress.com/2016/01/21/how-to-version-assemblies-destined-for-nuget/
- for rationale about assembly versioning.
-
-
-
-
- Current AssemblyVersion attribute of gRPC C# assemblies
-
-
-
-
- Current AssemblyFileVersion of gRPC C# assemblies
-
-
-
-
- Current version of gRPC C#
-
-
-
-
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45/Grpc.Core.xml.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45/Grpc.Core.xml.meta
deleted file mode 100644
index 7caa6a471..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/lib/net45/Grpc.Core.xml.meta
+++ /dev/null
@@ -1,7 +0,0 @@
-fileFormatVersion: 2
-guid: ae507c463b7e9bd41a873710bd117c77
-TextScriptImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes.meta
deleted file mode 100644
index 26ff25e39..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 719cb7390a2334340899d033be0c9ed7
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android.meta
deleted file mode 100644
index 552f3cfc3..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 19085da10af75c34eb5b773541b324c7
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a.meta
deleted file mode 100644
index 0167658f5..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: fc6c36e6a88065c4ba3d152d213099f1
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so
deleted file mode 100644
index b3594dfff..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so.meta
deleted file mode 100644
index a146d550c..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/arm64-v8a/libgrpc_csharp_ext.so.meta
+++ /dev/null
@@ -1,104 +0,0 @@
-fileFormatVersion: 2
-guid: 4b1915f388989e647a1598ca39c65b1d
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 0
- Exclude Editor: 1
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXUniversal: 1
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 1
- settings:
- CPU: ARM64
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- AddToEmbeddedBinaries: false
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a.meta
deleted file mode 100644
index c42533552..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 03083ac0c369abb44816d6c1119818ee
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so
deleted file mode 100644
index bb80fb120..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so.meta
deleted file mode 100644
index a6616ec5a..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/armeabi-v7a/libgrpc_csharp_ext.so.meta
+++ /dev/null
@@ -1,104 +0,0 @@
-fileFormatVersion: 2
-guid: e136233e2c34ebe4b94981c327eea6d6
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 0
- Exclude Editor: 1
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXUniversal: 1
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 1
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- AddToEmbeddedBinaries: false
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86.meta
deleted file mode 100644
index b09468fdb..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4cdd72fe80daa704db3ab9d526e4e21c
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so
deleted file mode 100644
index 1115dd21f..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so.meta
deleted file mode 100644
index 32596dcb9..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/android/x86/libgrpc_csharp_ext.so.meta
+++ /dev/null
@@ -1,104 +0,0 @@
-fileFormatVersion: 2
-guid: 292548348aa559f479129bc725447242
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 0
- Exclude Editor: 1
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXUniversal: 1
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- AddToEmbeddedBinaries: false
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/grpc_csharp_ext_dummy_stubs.c b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/grpc_csharp_ext_dummy_stubs.c
deleted file mode 100644
index 200dd022b..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/grpc_csharp_ext_dummy_stubs.c
+++ /dev/null
@@ -1,404 +0,0 @@
-
-// Copyright 2019 The gRPC Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// When building for Unity Android with il2cpp backend, Unity tries to link
-// the __Internal PInvoke definitions (which are required by iOS) even though
-// the .so/.dll will be actually used. This file provides dummy stubs to
-// make il2cpp happy.
-// See https://github.com/grpc/grpc/issues/16012
-
-#include
-#include
-
-void grpcsharp_init() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_shutdown() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_version_string() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_initial_metadata() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_message_length() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_message_to_buffer() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_status_on_client_status() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_status_on_client_details() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_status_on_client_trailing_metadata() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_recv_close_on_server_cancelled() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_reset() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_batch_context_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_call() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_method() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_host() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_deadline() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_request_metadata() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_reset() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_request_call_context_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_composite_call_credentials_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_credentials_release() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_cancel() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_cancel_with_status() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_start_unary() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_start_client_streaming() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_start_server_streaming() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_start_duplex_streaming() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_send_message() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_send_close_from_client() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_send_status_from_server() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_recv_message() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_recv_initial_metadata() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_start_serverside() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_send_initial_metadata() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_set_credentials() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_get_peer() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_args_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_args_set_string() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_args_set_integer() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_args_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_override_default_ssl_roots() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_ssl_credentials_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_composite_channel_credentials_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_credentials_release() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_insecure_channel_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_secure_channel_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_create_call() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_check_connectivity_state() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_watch_connectivity_state() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_get_target() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_channel_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_sizeof_grpc_event() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_completion_queue_create_async() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_completion_queue_create_sync() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_completion_queue_shutdown() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_completion_queue_next() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_completion_queue_pluck() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_completion_queue_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void gprsharp_free() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_array_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_array_add() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_array_count() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_array_get_key() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_array_get_value() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_array_destroy_full() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_redirect_log() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_credentials_create_from_plugin() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_metadata_credentials_notify_from_plugin() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_ssl_server_credentials_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_credentials_release() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_create() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_register_completion_queue() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_add_insecure_http2_port() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_add_secure_http2_port() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_start() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_request_call() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_cancel_all_calls() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_shutdown_and_notify_callback() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_server_destroy() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_call_auth_context() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_auth_context_peer_identity_property_name() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_auth_context_property_iterator() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_auth_property_iterator_next() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_auth_context_release() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void gprsharp_now() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void gprsharp_inf_future() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void gprsharp_inf_past() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void gprsharp_convert_clock_type() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void gprsharp_sizeof_timespec() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_test_callback() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_test_nop() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
-void grpcsharp_test_override_method() {
- fprintf(stderr, "Should never reach here");
- abort();
-}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/grpc_csharp_ext_dummy_stubs.c.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/grpc_csharp_ext_dummy_stubs.c.meta
deleted file mode 100644
index 0519606d4..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/grpc_csharp_ext_dummy_stubs.c.meta
+++ /dev/null
@@ -1,95 +0,0 @@
-fileFormatVersion: 2
-guid: 21d341064c060fa43862a04ac37aa796
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 0
- Exclude Editor: 1
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXUniversal: 1
- Exclude Win: 0
- Exclude Win64: 0
- - first:
- Android: Android
- second:
- enabled: 1
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios.meta
deleted file mode 100644
index 0e5396370..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 34b113123c549d34ba33e6becf161057
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc.a b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc.a
deleted file mode 100644
index 8f90134b8..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc.a and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc.a.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc.a.meta
deleted file mode 100644
index e0937dc83..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc.a.meta
+++ /dev/null
@@ -1,97 +0,0 @@
-fileFormatVersion: 2
-guid: 368c9eb93ebf14b45a96d9a85f6a11fe
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Editor: 1
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXUniversal: 1
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 0
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 1
- settings:
- AddToEmbeddedBinaries: false
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a
deleted file mode 100644
index 6ea8964a3..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a.meta
deleted file mode 100644
index 83359daa2..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/ios/libgrpc_csharp_ext.a.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: 1fd84527c3c9a8b489519a60578eb8ff
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 1
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXIntel: 1
- Exclude OSXIntel64: 1
- Exclude OSXUniversal: 1
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 0
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- DefaultValueInitialized: true
- OS: AnyOS
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 1
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux.meta
deleted file mode 100644
index a513f6039..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 7e570af7dbc37e241a64522a1e149a0a
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64.meta
deleted file mode 100644
index d03e08690..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 28e7ea4803dd9c849ae171aea5cdc18c
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so
deleted file mode 100644
index b1e7d0094..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so.meta
deleted file mode 100644
index 60ad2cf74..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x64/libgrpc_csharp_ext.so.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: 03ed9ecb1cd4c594a818db4649654bf3
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 1
- Exclude Linux64: 0
- Exclude LinuxUniversal: 0
- Exclude OSXIntel: 1
- Exclude OSXIntel64: 1
- Exclude OSXUniversal: 1
- Exclude Win: 0
- Exclude Win64: 0
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86_64
- DefaultValueInitialized: true
- OS: Linux
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Linux64
- second:
- enabled: 1
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 1
- settings:
- CPU: x86_64
- - first:
- Standalone: OSXIntel
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86.meta
deleted file mode 100644
index d247ed2ee..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4e89bb4e1ff292c46b57bd0f56815910
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86/libgrpc_csharp_ext.so b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86/libgrpc_csharp_ext.so
deleted file mode 100644
index b99e4e80b..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86/libgrpc_csharp_ext.so and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86/libgrpc_csharp_ext.so.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86/libgrpc_csharp_ext.so.meta
deleted file mode 100644
index cefe1ee16..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/linux/x86/libgrpc_csharp_ext.so.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: 4fa53034236b6c74f8652de3c8866f76
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 0
- Exclude Linux64: 1
- Exclude LinuxUniversal: 0
- Exclude OSXIntel: 1
- Exclude OSXIntel64: 1
- Exclude OSXUniversal: 1
- Exclude Win: 0
- Exclude Win64: 0
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86
- DefaultValueInitialized: true
- OS: Linux
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: OSXIntel
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx.meta
deleted file mode 100644
index 4d009de9f..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 0395c85e391d96546b5607bcce9f6301
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64.meta
deleted file mode 100644
index fcea2c3c7..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: bb4375411690b4442bd9f2a5563bad7a
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle
deleted file mode 100644
index b783c90f5..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle.meta
deleted file mode 100644
index 04873fde8..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x64/grpc_csharp_ext.bundle.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: ff19aadd8cbe8924c96ab2720f69d96f
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXIntel: 1
- Exclude OSXIntel64: 0
- Exclude OSXUniversal: 0
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86_64
- DefaultValueInitialized: true
- OS: OSX
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 1
- settings:
- CPU: x86_64
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86.meta
deleted file mode 100644
index 67be91db2..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: b99c57e9974576942ac2b6cbcd1168b7
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86/grpc_csharp_ext.bundle b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86/grpc_csharp_ext.bundle
deleted file mode 100644
index 4cc955fc5..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86/grpc_csharp_ext.bundle and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86/grpc_csharp_ext.bundle.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86/grpc_csharp_ext.bundle.meta
deleted file mode 100644
index 34e20d9e2..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/osx/x86/grpc_csharp_ext.bundle.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: f742c99b4f3134e4983fa90ad7d15950
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 1
- Exclude Linux64: 1
- Exclude LinuxUniversal: 1
- Exclude OSXIntel: 0
- Exclude OSXIntel64: 1
- Exclude OSXUniversal: 0
- Exclude Win: 1
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86
- DefaultValueInitialized: true
- OS: OSX
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 0
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 0
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXIntel
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win.meta
deleted file mode 100644
index 84f6d2b1f..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 1cb8ba24abfe2e34e8ac3cbfe3ca2598
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64.meta
deleted file mode 100644
index 6c7c7790b..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8b136e2c5cde8cb4e9b25ae33b1a0766
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll
deleted file mode 100644
index bad909062..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll.meta
deleted file mode 100644
index d5eeeced9..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x64/grpc_csharp_ext.dll.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: bffe8c93e47c91e40b441a26e674bbf1
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 0
- Exclude Linux64: 0
- Exclude LinuxUniversal: 0
- Exclude OSXIntel: 0
- Exclude OSXIntel64: 0
- Exclude OSXUniversal: 0
- Exclude Win: 1
- Exclude Win64: 0
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86_64
- DefaultValueInitialized: true
- OS: Windows
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Linux
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 1
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Win64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86.meta
deleted file mode 100644
index 80da79c63..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4a0ea55e4ca1b394ca133956a8fa9958
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll
deleted file mode 100644
index 34acadb0f..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll.meta
deleted file mode 100644
index 139e998a3..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/Grpc.Core/runtimes/win/x86/grpc_csharp_ext.dll.meta
+++ /dev/null
@@ -1,117 +0,0 @@
-fileFormatVersion: 2
-guid: 852fa75b7275f344f8b9b5fa27cf134b
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- '': Any
- second:
- enabled: 0
- settings:
- Exclude Android: 1
- Exclude Editor: 0
- Exclude Linux: 0
- Exclude Linux64: 0
- Exclude LinuxUniversal: 0
- Exclude OSXIntel: 0
- Exclude OSXIntel64: 0
- Exclude OSXUniversal: 0
- Exclude Win: 0
- Exclude Win64: 1
- Exclude iOS: 1
- - first:
- Android: Android
- second:
- enabled: 0
- settings:
- CPU: ARMv7
- - first:
- Any:
- second:
- enabled: 0
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 1
- settings:
- CPU: x86
- DefaultValueInitialized: true
- OS: Windows
- - first:
- Facebook: Win
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- - first:
- Facebook: Win64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- Standalone: Linux
- second:
- enabled: 1
- settings:
- CPU: x86
- - first:
- Standalone: Linux64
- second:
- enabled: 1
- settings:
- CPU: x86_64
- - first:
- Standalone: LinuxUniversal
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXIntel64
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: OSXUniversal
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win
- second:
- enabled: 1
- settings:
- CPU: AnyCPU
- - first:
- Standalone: Win64
- second:
- enabled: 0
- settings:
- CPU: None
- - first:
- iPhone: iOS
- second:
- enabled: 0
- settings:
- CompileFlags:
- FrameworkDependencies:
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/System.Interactive.Async.dll b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/System.Interactive.Async.dll
deleted file mode 100644
index 5a6652740..000000000
Binary files a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/System.Interactive.Async.dll and /dev/null differ
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/System.Interactive.Async.dll.meta b/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/System.Interactive.Async.dll.meta
deleted file mode 100644
index 1f39ba250..000000000
--- a/samples/ChatApp/ChatApp.Unity/Assets/Plugins/dll/System.Interactive.Async.dll.meta
+++ /dev/null
@@ -1,32 +0,0 @@
-fileFormatVersion: 2
-guid: 9605e098e1d8a8542a187bcf3edb89d6
-PluginImporter:
- externalObjects: {}
- serializedVersion: 2
- iconMap: {}
- executionOrder: {}
- defineConstraints: []
- isPreloaded: 0
- isOverridable: 0
- isExplicitlyReferenced: 0
- platformData:
- - first:
- Any:
- second:
- enabled: 1
- settings: {}
- - first:
- Editor: Editor
- second:
- enabled: 0
- settings:
- DefaultValueInitialized: true
- - first:
- Windows Store Apps: WindowsStoreApps
- second:
- enabled: 0
- settings:
- CPU: AnyCPU
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/ChatComponent.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/ChatComponent.cs
index b7679f82f..cce2fa9ed 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/ChatComponent.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/ChatComponent.cs
@@ -179,7 +179,7 @@ public async void GenerateException()
await this.streamingClient.GenerateException("client exception(streaminghub)!");
}
- public async void SampleMethod()
+ public void SampleMethod()
{
throw new System.NotImplementedException();
}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MagicOnion.Generated.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MagicOnion.Generated.cs
index 692b6f85c..ca8319ded 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MagicOnion.Generated.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MagicOnion.Generated.cs
@@ -1,9 +1,9 @@
-#pragma warning disable 618
-#pragma warning disable 612
-#pragma warning disable 414
-#pragma warning disable 219
-#pragma warning disable 168
-
+#pragma warning disable 618
+#pragma warning disable 612
+#pragma warning disable 414
+#pragma warning disable 219
+#pragma warning disable 168
+
namespace MagicOnion
{
using global::System;
@@ -16,39 +16,39 @@ public static partial class MagicOnionInitializer
{
static bool isRegistered = false;
- [UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.BeforeSceneLoad)]
- public static void Register()
- {
- if(isRegistered) return;
- isRegistered = true;
-
- MagicOnionClientRegistry.Register((x, y) => new ChatApp.Shared.Services.IChatServiceClient(x, y));
-
- StreamingHubClientRegistry.Register((a, _, b, c, d, e) => new ChatApp.Shared.Hubs.IChatHubClient(a, b, c, d, e));
- }
- }
-}
-
-#pragma warning restore 168
-#pragma warning restore 219
-#pragma warning restore 414
-#pragma warning restore 612
-#pragma warning restore 618
-#pragma warning disable 618
-#pragma warning disable 612
-#pragma warning disable 414
-#pragma warning disable 219
-#pragma warning disable 168
-
-namespace MagicOnion.Resolvers
-{
- using System;
- using MessagePack;
-
- public class MagicOnionResolver : global::MessagePack.IFormatterResolver
- {
- public static readonly global::MessagePack.IFormatterResolver Instance = new MagicOnionResolver();
-
+ [UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.BeforeSceneLoad)]
+ public static void Register()
+ {
+ if(isRegistered) return;
+ isRegistered = true;
+
+ MagicOnionClientRegistry.Register((x, y, z) => new ChatApp.Shared.Services.IChatServiceClient(x, y, z));
+
+ StreamingHubClientRegistry.Register((a, _, b, c, d, e) => new ChatApp.Shared.Hubs.IChatHubClient(a, b, c, d, e));
+ }
+ }
+}
+
+#pragma warning restore 168
+#pragma warning restore 219
+#pragma warning restore 414
+#pragma warning restore 612
+#pragma warning restore 618
+#pragma warning disable 618
+#pragma warning disable 612
+#pragma warning disable 414
+#pragma warning disable 219
+#pragma warning disable 168
+
+namespace MagicOnion.Resolvers
+{
+ using System;
+ using MessagePack;
+
+ public class MagicOnionResolver : global::MessagePack.IFormatterResolver
+ {
+ public static readonly global::MessagePack.IFormatterResolver Instance = new MagicOnionResolver();
+
MagicOnionResolver()
{
@@ -74,17 +74,17 @@ static FormatterCache()
}
}
- internal static class MagicOnionResolverGetFormatterHelper
- {
- static readonly global::System.Collections.Generic.Dictionary lookup;
-
- static MagicOnionResolverGetFormatterHelper()
- {
- lookup = new global::System.Collections.Generic.Dictionary(3)
- {
- {typeof(global::MagicOnion.DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>), 0 },
- {typeof(global::System.Collections.Generic.Dictionary), 1 },
- {typeof(global::System.Collections.Generic.List), 2 },
+ internal static class MagicOnionResolverGetFormatterHelper
+ {
+ static readonly global::System.Collections.Generic.Dictionary lookup;
+
+ static MagicOnionResolverGetFormatterHelper()
+ {
+ lookup = new global::System.Collections.Generic.Dictionary(3)
+ {
+ {typeof(global::MagicOnion.DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>), 0 },
+ {typeof(global::System.Collections.Generic.Dictionary), 1 },
+ {typeof(global::System.Collections.Generic.List), 2 },
};
}
@@ -98,162 +98,174 @@ internal static object GetFormatter(Type t)
switch (key)
{
- case 0: return new global::MagicOnion.DynamicArgumentTupleFormatter, global::System.Collections.Generic.Dictionary>(default(global::System.Collections.Generic.List), default(global::System.Collections.Generic.Dictionary));
- case 1: return new global::MessagePack.Formatters.DictionaryFormatter();
- case 2: return new global::MessagePack.Formatters.ListFormatter();
- default: return null;
- }
- }
- }
-}
-
-#pragma warning restore 168
-#pragma warning restore 219
-#pragma warning restore 414
-#pragma warning restore 612
-#pragma warning restore 618
-#pragma warning disable 618
-#pragma warning disable 612
-#pragma warning disable 414
-#pragma warning disable 219
-#pragma warning disable 168
-
-namespace ChatApp.Shared.Services {
- using MagicOnion;
- using MagicOnion.Client;
- using Grpc.Core;
- using MessagePack;
-
- public class IChatServiceClient : MagicOnionClientBase, global::ChatApp.Shared.Services.IChatService
- {
- static readonly Method GenerateExceptionMethod;
- static readonly Method SendReportAsyncMethod;
-
- static IChatServiceClient()
- {
- GenerateExceptionMethod = new Method(MethodType.Unary, "IChatService", "GenerateException", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller);
- SendReportAsyncMethod = new Method(MethodType.Unary, "IChatService", "SendReportAsync", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller);
- }
-
- IChatServiceClient()
- {
- }
-
- public IChatServiceClient(CallInvoker callInvoker, IFormatterResolver resolver)
- : base(callInvoker, resolver)
- {
- }
-
- protected override MagicOnionClientBase Clone()
- {
+ case 0: return new global::MagicOnion.DynamicArgumentTupleFormatter, global::System.Collections.Generic.Dictionary>(default(global::System.Collections.Generic.List), default(global::System.Collections.Generic.Dictionary));
+ case 1: return new global::MessagePack.Formatters.DictionaryFormatter();
+ case 2: return new global::MessagePack.Formatters.ListFormatter();
+ default: return null;
+ }
+ }
+ }
+}
+
+#pragma warning restore 168
+#pragma warning restore 219
+#pragma warning restore 414
+#pragma warning restore 612
+#pragma warning restore 618
+#pragma warning disable 618
+#pragma warning disable 612
+#pragma warning disable 414
+#pragma warning disable 219
+#pragma warning disable 168
+
+namespace ChatApp.Shared.Services {
+ using System;
+ using MagicOnion;
+ using MagicOnion.Client;
+ using Grpc.Core;
+ using MessagePack;
+
+ public class IChatServiceClient : MagicOnionClientBase, global::ChatApp.Shared.Services.IChatService
+ {
+ static readonly Method GenerateExceptionMethod;
+ static readonly Func GenerateExceptionDelegate;
+ static readonly Method SendReportAsyncMethod;
+ static readonly Func SendReportAsyncDelegate;
+
+ static IChatServiceClient()
+ {
+ GenerateExceptionMethod = new Method(MethodType.Unary, "IChatService", "GenerateException", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller);
+ GenerateExceptionDelegate = _GenerateException;
+ SendReportAsyncMethod = new Method(MethodType.Unary, "IChatService", "SendReportAsync", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller);
+ SendReportAsyncDelegate = _SendReportAsync;
+ }
+
+ IChatServiceClient()
+ {
+ }
+
+ public IChatServiceClient(CallInvoker callInvoker, IFormatterResolver resolver, IClientFilter[] filters)
+ : base(callInvoker, resolver, filters)
+ {
+ }
+
+ protected override MagicOnionClientBase Clone()
+ {
var clone = new IChatServiceClient();
clone.host = this.host;
clone.option = this.option;
clone.callInvoker = this.callInvoker;
clone.resolver = this.resolver;
+ clone.filters = filters;
return clone;
}
- public new IChatService WithHeaders(Metadata headers)
- {
- return base.WithHeaders(headers);
- }
-
- public new IChatService WithCancellationToken(System.Threading.CancellationToken cancellationToken)
- {
- return base.WithCancellationToken(cancellationToken);
- }
-
- public new IChatService WithDeadline(System.DateTime deadline)
- {
- return base.WithDeadline(deadline);
- }
-
- public new IChatService WithHost(string host)
- {
- return base.WithHost(host);
- }
-
- public new IChatService WithOptions(CallOptions option)
- {
- return base.WithOptions(option);
- }
-
- public global::MagicOnion.UnaryResult GenerateException(string message)
- {
- var __request = LZ4MessagePackSerializer.Serialize(message, base.resolver);
- var __callResult = callInvoker.AsyncUnaryCall(GenerateExceptionMethod, base.host, base.option, __request);
- return new UnaryResult(__callResult, base.resolver);
- }
- public global::MagicOnion.UnaryResult SendReportAsync(string message)
- {
- var __request = LZ4MessagePackSerializer.Serialize(message, base.resolver);
- var __callResult = callInvoker.AsyncUnaryCall(SendReportAsyncMethod, base.host, base.option, __request);
- return new UnaryResult(__callResult, base.resolver);
- }
- }
-}
-
-#pragma warning restore 168
-#pragma warning restore 219
-#pragma warning restore 414
-#pragma warning restore 618
-#pragma warning restore 612
-#pragma warning disable 618
-#pragma warning disable 612
-#pragma warning disable 414
-#pragma warning disable 219
-#pragma warning disable 168
-
-namespace ChatApp.Shared.Hubs {
- using Grpc.Core;
- using Grpc.Core.Logging;
- using MagicOnion;
- using MagicOnion.Client;
- using MessagePack;
- using System;
- using System.Threading.Tasks;
-
- public class IChatHubClient : StreamingHubClientBase, global::ChatApp.Shared.Hubs.IChatHub
- {
- static readonly Method method = new Method(MethodType.DuplexStreaming, "IChatHub", "Connect", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller);
-
- protected override Method DuplexStreamingAsyncMethod { get { return method; } }
-
- readonly global::ChatApp.Shared.Hubs.IChatHub __fireAndForgetClient;
-
+ public new IChatService WithHeaders(Metadata headers)
+ {
+ return base.WithHeaders(headers);
+ }
+
+ public new IChatService WithCancellationToken(System.Threading.CancellationToken cancellationToken)
+ {
+ return base.WithCancellationToken(cancellationToken);
+ }
+
+ public new IChatService WithDeadline(System.DateTime deadline)
+ {
+ return base.WithDeadline(deadline);
+ }
+
+ public new IChatService WithHost(string host)
+ {
+ return base.WithHost(host);
+ }
+
+ public new IChatService WithOptions(CallOptions option)
+ {
+ return base.WithOptions(option);
+ }
+
+ static ResponseContext _GenerateException(RequestContext __context)
+ {
+ return CreateResponseContext(__context, GenerateExceptionMethod);
+ }
+
+ public global::MagicOnion.UnaryResult GenerateException(string message)
+ {
+ return InvokeAsync("IChatService/GenerateException", message, GenerateExceptionDelegate);
+ }
+ static ResponseContext _SendReportAsync(RequestContext __context)
+ {
+ return CreateResponseContext(__context, SendReportAsyncMethod);
+ }
+
+ public global::MagicOnion.UnaryResult SendReportAsync(string message)
+ {
+ return InvokeAsync("IChatService/SendReportAsync", message, SendReportAsyncDelegate);
+ }
+ }
+}
+
+#pragma warning restore 168
+#pragma warning restore 219
+#pragma warning restore 414
+#pragma warning restore 612
+#pragma warning restore 618
+#pragma warning disable 618
+#pragma warning disable 612
+#pragma warning disable 414
+#pragma warning disable 219
+#pragma warning disable 168
+
+namespace ChatApp.Shared.Hubs {
+ using Grpc.Core;
+ using Grpc.Core.Logging;
+ using MagicOnion;
+ using MagicOnion.Client;
+ using MessagePack;
+ using System;
+ using System.Threading.Tasks;
+
+ public class IChatHubClient : StreamingHubClientBase, global::ChatApp.Shared.Hubs.IChatHub
+ {
+ static readonly Method method = new Method(MethodType.DuplexStreaming, "IChatHub", "Connect", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller);
+
+ protected override Method DuplexStreamingAsyncMethod { get { return method; } }
+
+ readonly global::ChatApp.Shared.Hubs.IChatHub __fireAndForgetClient;
+
public IChatHubClient(CallInvoker callInvoker, string host, CallOptions option, IFormatterResolver resolver, ILogger logger)
: base(callInvoker, host, option, resolver, logger)
{
this.__fireAndForgetClient = new FireAndForgetClient(this);
}
- public global::ChatApp.Shared.Hubs.IChatHub FireAndForget()
- {
- return __fireAndForgetClient;
- }
-
- protected override Task OnBroadcastEvent(int methodId, ArraySegment data)
- {
- switch (methodId)
- {
- case -1297457280: // OnJoin
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- receiver.OnJoin(result); return Task.CompletedTask;
- }
- case 532410095: // OnLeave
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- receiver.OnLeave(result); return Task.CompletedTask;
- }
- case -552695459: // OnSendMessage
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- receiver.OnSendMessage(result); return Task.CompletedTask;
- }
+ public global::ChatApp.Shared.Hubs.IChatHub FireAndForget()
+ {
+ return __fireAndForgetClient;
+ }
+
+ protected override void OnBroadcastEvent(int methodId, ArraySegment data)
+ {
+ switch (methodId)
+ {
+ case -1297457280: // OnJoin
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ receiver.OnJoin(result); break;
+ }
+ case 532410095: // OnLeave
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ receiver.OnLeave(result); break;
+ }
+ case -552695459: // OnSendMessage
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ receiver.OnSendMessage(result); break;
+ }
default:
- return Task.CompletedTask;
+ break;
}
}
@@ -261,76 +273,76 @@ protected override void OnResponseEvent(int methodId, object taskCompletionSourc
{
switch (methodId)
{
- case -733403293: // JoinAsync
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
- break;
- }
- case 1368362116: // LeaveAsync
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
- break;
- }
- case -601690414: // SendMessageAsync
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
- break;
- }
- case 517938971: // GenerateException
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
- break;
- }
- case -852153394: // SampleMethod
- {
- var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
- ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
- break;
- }
- default:
- break;
- }
- }
-
- public global::System.Threading.Tasks.Task JoinAsync(global::ChatApp.Shared.MessagePackObjects.JoinRequest request)
- {
- return WriteMessageWithResponseAsync(-733403293, request);
- }
-
- public global::System.Threading.Tasks.Task LeaveAsync()
- {
- return WriteMessageWithResponseAsync(1368362116, Nil.Default);
- }
-
- public global::System.Threading.Tasks.Task SendMessageAsync(string message)
- {
- return WriteMessageWithResponseAsync(-601690414, message);
- }
-
- public global::System.Threading.Tasks.Task GenerateException(string message)
- {
- return WriteMessageWithResponseAsync(517938971, message);
- }
-
- public global::System.Threading.Tasks.Task SampleMethod(global::System.Collections.Generic.List sampleList, global::System.Collections.Generic.Dictionary sampleDictionary)
- {
- return WriteMessageWithResponseAsync, global::System.Collections.Generic.Dictionary>, Nil>(-852153394, new DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>(sampleList, sampleDictionary));
- }
-
-
- class FireAndForgetClient : global::ChatApp.Shared.Hubs.IChatHub
- {
- readonly IChatHubClient __parent;
-
- public FireAndForgetClient(IChatHubClient parentClient)
- {
- this.__parent = parentClient;
- }
-
+ case -733403293: // JoinAsync
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
+ break;
+ }
+ case 1368362116: // LeaveAsync
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
+ break;
+ }
+ case -601690414: // SendMessageAsync
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
+ break;
+ }
+ case 517938971: // GenerateException
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
+ break;
+ }
+ case -852153394: // SampleMethod
+ {
+ var result = LZ4MessagePackSerializer.Deserialize(data, resolver);
+ ((TaskCompletionSource)taskCompletionSource).TrySetResult(result);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ public global::System.Threading.Tasks.Task JoinAsync(global::ChatApp.Shared.MessagePackObjects.JoinRequest request)
+ {
+ return WriteMessageWithResponseAsync(-733403293, request);
+ }
+
+ public global::System.Threading.Tasks.Task LeaveAsync()
+ {
+ return WriteMessageWithResponseAsync(1368362116, Nil.Default);
+ }
+
+ public global::System.Threading.Tasks.Task SendMessageAsync(string message)
+ {
+ return WriteMessageWithResponseAsync(-601690414, message);
+ }
+
+ public global::System.Threading.Tasks.Task GenerateException(string message)
+ {
+ return WriteMessageWithResponseAsync(517938971, message);
+ }
+
+ public global::System.Threading.Tasks.Task SampleMethod(global::System.Collections.Generic.List sampleList, global::System.Collections.Generic.Dictionary sampleDictionary)
+ {
+ return WriteMessageWithResponseAsync, global::System.Collections.Generic.Dictionary>, Nil>(-852153394, new DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>(sampleList, sampleDictionary));
+ }
+
+
+ class FireAndForgetClient : global::ChatApp.Shared.Hubs.IChatHub
+ {
+ readonly IChatHubClient __parent;
+
+ public FireAndForgetClient(IChatHubClient parentClient)
+ {
+ this.__parent = parentClient;
+ }
+
public global::ChatApp.Shared.Hubs.IChatHub FireAndForget()
{
throw new NotSupportedException();
@@ -346,37 +358,37 @@ public Task WaitForDisconnect()
throw new NotSupportedException();
}
- public global::System.Threading.Tasks.Task JoinAsync(global::ChatApp.Shared.MessagePackObjects.JoinRequest request)
- {
- return __parent.WriteMessageAsync(-733403293, request);
- }
-
- public global::System.Threading.Tasks.Task LeaveAsync()
- {
- return __parent.WriteMessageAsync(1368362116, Nil.Default);
- }
-
- public global::System.Threading.Tasks.Task SendMessageAsync(string message)
- {
- return __parent.WriteMessageAsync(-601690414, message);
- }
-
- public global::System.Threading.Tasks.Task GenerateException(string message)
- {
- return __parent.WriteMessageAsync(517938971, message);
- }
-
- public global::System.Threading.Tasks.Task SampleMethod(global::System.Collections.Generic.List sampleList, global::System.Collections.Generic.Dictionary sampleDictionary)
- {
- return __parent.WriteMessageAsync, global::System.Collections.Generic.Dictionary>>(-852153394, new DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>(sampleList, sampleDictionary));
- }
-
- }
- }
-}
-
-#pragma warning restore 168
-#pragma warning restore 219
-#pragma warning restore 414
-#pragma warning restore 618
-#pragma warning restore 612
+ public global::System.Threading.Tasks.Task JoinAsync(global::ChatApp.Shared.MessagePackObjects.JoinRequest request)
+ {
+ return __parent.WriteMessageAsync(-733403293, request);
+ }
+
+ public global::System.Threading.Tasks.Task LeaveAsync()
+ {
+ return __parent.WriteMessageAsync(1368362116, Nil.Default);
+ }
+
+ public global::System.Threading.Tasks.Task SendMessageAsync(string message)
+ {
+ return __parent.WriteMessageAsync(-601690414, message);
+ }
+
+ public global::System.Threading.Tasks.Task GenerateException(string message)
+ {
+ return __parent.WriteMessageAsync(517938971, message);
+ }
+
+ public global::System.Threading.Tasks.Task SampleMethod(global::System.Collections.Generic.List sampleList, global::System.Collections.Generic.Dictionary sampleDictionary)
+ {
+ return __parent.WriteMessageAsync, global::System.Collections.Generic.Dictionary>>(-852153394, new DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>(sampleList, sampleDictionary));
+ }
+
+ }
+ }
+}
+
+#pragma warning restore 168
+#pragma warning restore 219
+#pragma warning restore 414
+#pragma warning restore 618
+#pragma warning restore 612
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MessagePack.Generated.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MessagePack.Generated.cs
index a56999270..2e626ec35 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MessagePack.Generated.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/Generated/MessagePack.Generated.cs
@@ -1,202 +1,202 @@
-#pragma warning disable 618
-#pragma warning disable 612
-#pragma warning disable 414
-#pragma warning disable 168
-
-namespace MessagePack.Resolvers
-{
- using System;
- using MessagePack;
-
- public class GeneratedResolver : global::MessagePack.IFormatterResolver
- {
- public static readonly global::MessagePack.IFormatterResolver Instance = new GeneratedResolver();
-
- GeneratedResolver()
- {
-
- }
-
- public global::MessagePack.Formatters.IMessagePackFormatter GetFormatter()
- {
- return FormatterCache.formatter;
- }
-
- static class FormatterCache
- {
- public static readonly global::MessagePack.Formatters.IMessagePackFormatter formatter;
-
- static FormatterCache()
- {
- var f = GeneratedResolverGetFormatterHelper.GetFormatter(typeof(T));
- if (f != null)
- {
- formatter = (global::MessagePack.Formatters.IMessagePackFormatter)f;
- }
- }
- }
- }
-
- internal static class GeneratedResolverGetFormatterHelper
- {
- static readonly global::System.Collections.Generic.Dictionary lookup;
-
- static GeneratedResolverGetFormatterHelper()
- {
- lookup = new global::System.Collections.Generic.Dictionary(2)
- {
- {typeof(global::ChatApp.Shared.MessagePackObjects.JoinRequest), 0 },
- {typeof(global::ChatApp.Shared.MessagePackObjects.MessageResponse), 1 },
- };
- }
-
- internal static object GetFormatter(Type t)
- {
- int key;
- if (!lookup.TryGetValue(t, out key)) return null;
-
- switch (key)
- {
- case 0: return new MessagePack.Formatters.ChatApp.Shared.MessagePackObjects.JoinRequestFormatter();
- case 1: return new MessagePack.Formatters.ChatApp.Shared.MessagePackObjects.MessageResponseFormatter();
- default: return null;
- }
- }
- }
-}
-
-#pragma warning restore 168
-#pragma warning restore 414
-#pragma warning restore 618
-#pragma warning restore 612
-
-
-
-#pragma warning disable 618
-#pragma warning disable 612
-#pragma warning disable 414
-#pragma warning disable 168
-
-namespace MessagePack.Formatters.ChatApp.Shared.MessagePackObjects
-{
- using System;
- using MessagePack;
-
-
- public sealed class JoinRequestFormatter : global::MessagePack.Formatters.IMessagePackFormatter
- {
-
- public int Serialize(ref byte[] bytes, int offset, global::ChatApp.Shared.MessagePackObjects.JoinRequest value, global::MessagePack.IFormatterResolver formatterResolver)
- {
-
- var startOffset = offset;
- offset += global::MessagePack.MessagePackBinary.WriteFixedArrayHeaderUnsafe(ref bytes, offset, 2);
- offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.RoomName, formatterResolver);
- offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.UserName, formatterResolver);
- return offset - startOffset;
- }
-
- public global::ChatApp.Shared.MessagePackObjects.JoinRequest Deserialize(byte[] bytes, int offset, global::MessagePack.IFormatterResolver formatterResolver, out int readSize)
- {
- if (global::MessagePack.MessagePackBinary.IsNil(bytes, offset))
- {
- throw new InvalidOperationException("typecode is null, struct not supported");
- }
-
- var startOffset = offset;
- var length = global::MessagePack.MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize);
- offset += readSize;
-
- var __RoomName__ = default(string);
- var __UserName__ = default(string);
-
- for (int i = 0; i < length; i++)
- {
- var key = i;
-
- switch (key)
- {
- case 0:
- __RoomName__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
- break;
- case 1:
- __UserName__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
- break;
- default:
- readSize = global::MessagePack.MessagePackBinary.ReadNextBlock(bytes, offset);
- break;
- }
- offset += readSize;
- }
-
- readSize = offset - startOffset;
-
- var ____result = new global::ChatApp.Shared.MessagePackObjects.JoinRequest();
- ____result.RoomName = __RoomName__;
- ____result.UserName = __UserName__;
- return ____result;
- }
- }
-
-
- public sealed class MessageResponseFormatter : global::MessagePack.Formatters.IMessagePackFormatter
- {
-
- public int Serialize(ref byte[] bytes, int offset, global::ChatApp.Shared.MessagePackObjects.MessageResponse value, global::MessagePack.IFormatterResolver formatterResolver)
- {
-
- var startOffset = offset;
- offset += global::MessagePack.MessagePackBinary.WriteFixedArrayHeaderUnsafe(ref bytes, offset, 2);
- offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.UserName, formatterResolver);
- offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.Message, formatterResolver);
- return offset - startOffset;
- }
-
- public global::ChatApp.Shared.MessagePackObjects.MessageResponse Deserialize(byte[] bytes, int offset, global::MessagePack.IFormatterResolver formatterResolver, out int readSize)
- {
- if (global::MessagePack.MessagePackBinary.IsNil(bytes, offset))
- {
- throw new InvalidOperationException("typecode is null, struct not supported");
- }
-
- var startOffset = offset;
- var length = global::MessagePack.MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize);
- offset += readSize;
-
- var __UserName__ = default(string);
- var __Message__ = default(string);
-
- for (int i = 0; i < length; i++)
- {
- var key = i;
-
- switch (key)
- {
- case 0:
- __UserName__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
- break;
- case 1:
- __Message__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
- break;
- default:
- readSize = global::MessagePack.MessagePackBinary.ReadNextBlock(bytes, offset);
- break;
- }
- offset += readSize;
- }
-
- readSize = offset - startOffset;
-
- var ____result = new global::ChatApp.Shared.MessagePackObjects.MessageResponse();
- ____result.UserName = __UserName__;
- ____result.Message = __Message__;
- return ____result;
- }
- }
-
-}
-
-#pragma warning restore 168
-#pragma warning restore 414
-#pragma warning restore 618
-#pragma warning restore 612
+#pragma warning disable 618
+#pragma warning disable 612
+#pragma warning disable 414
+#pragma warning disable 168
+
+namespace MessagePack.Resolvers
+{
+ using System;
+ using MessagePack;
+
+ public class GeneratedResolver : global::MessagePack.IFormatterResolver
+ {
+ public static readonly global::MessagePack.IFormatterResolver Instance = new GeneratedResolver();
+
+ GeneratedResolver()
+ {
+
+ }
+
+ public global::MessagePack.Formatters.IMessagePackFormatter GetFormatter()
+ {
+ return FormatterCache.formatter;
+ }
+
+ static class FormatterCache
+ {
+ public static readonly global::MessagePack.Formatters.IMessagePackFormatter formatter;
+
+ static FormatterCache()
+ {
+ var f = GeneratedResolverGetFormatterHelper.GetFormatter(typeof(T));
+ if (f != null)
+ {
+ formatter = (global::MessagePack.Formatters.IMessagePackFormatter)f;
+ }
+ }
+ }
+ }
+
+ internal static class GeneratedResolverGetFormatterHelper
+ {
+ static readonly global::System.Collections.Generic.Dictionary lookup;
+
+ static GeneratedResolverGetFormatterHelper()
+ {
+ lookup = new global::System.Collections.Generic.Dictionary(2)
+ {
+ {typeof(global::ChatApp.Shared.MessagePackObjects.JoinRequest), 0 },
+ {typeof(global::ChatApp.Shared.MessagePackObjects.MessageResponse), 1 },
+ };
+ }
+
+ internal static object GetFormatter(Type t)
+ {
+ int key;
+ if (!lookup.TryGetValue(t, out key)) return null;
+
+ switch (key)
+ {
+ case 0: return new MessagePack.Formatters.ChatApp.Shared.MessagePackObjects.JoinRequestFormatter();
+ case 1: return new MessagePack.Formatters.ChatApp.Shared.MessagePackObjects.MessageResponseFormatter();
+ default: return null;
+ }
+ }
+ }
+}
+
+#pragma warning restore 168
+#pragma warning restore 414
+#pragma warning restore 618
+#pragma warning restore 612
+
+
+
+#pragma warning disable 618
+#pragma warning disable 612
+#pragma warning disable 414
+#pragma warning disable 168
+
+namespace MessagePack.Formatters.ChatApp.Shared.MessagePackObjects
+{
+ using System;
+ using MessagePack;
+
+
+ public sealed class JoinRequestFormatter : global::MessagePack.Formatters.IMessagePackFormatter
+ {
+
+ public int Serialize(ref byte[] bytes, int offset, global::ChatApp.Shared.MessagePackObjects.JoinRequest value, global::MessagePack.IFormatterResolver formatterResolver)
+ {
+
+ var startOffset = offset;
+ offset += global::MessagePack.MessagePackBinary.WriteFixedArrayHeaderUnsafe(ref bytes, offset, 2);
+ offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.RoomName, formatterResolver);
+ offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.UserName, formatterResolver);
+ return offset - startOffset;
+ }
+
+ public global::ChatApp.Shared.MessagePackObjects.JoinRequest Deserialize(byte[] bytes, int offset, global::MessagePack.IFormatterResolver formatterResolver, out int readSize)
+ {
+ if (global::MessagePack.MessagePackBinary.IsNil(bytes, offset))
+ {
+ throw new InvalidOperationException("typecode is null, struct not supported");
+ }
+
+ var startOffset = offset;
+ var length = global::MessagePack.MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize);
+ offset += readSize;
+
+ var __RoomName__ = default(string);
+ var __UserName__ = default(string);
+
+ for (int i = 0; i < length; i++)
+ {
+ var key = i;
+
+ switch (key)
+ {
+ case 0:
+ __RoomName__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
+ break;
+ case 1:
+ __UserName__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
+ break;
+ default:
+ readSize = global::MessagePack.MessagePackBinary.ReadNextBlock(bytes, offset);
+ break;
+ }
+ offset += readSize;
+ }
+
+ readSize = offset - startOffset;
+
+ var ____result = new global::ChatApp.Shared.MessagePackObjects.JoinRequest();
+ ____result.RoomName = __RoomName__;
+ ____result.UserName = __UserName__;
+ return ____result;
+ }
+ }
+
+
+ public sealed class MessageResponseFormatter : global::MessagePack.Formatters.IMessagePackFormatter
+ {
+
+ public int Serialize(ref byte[] bytes, int offset, global::ChatApp.Shared.MessagePackObjects.MessageResponse value, global::MessagePack.IFormatterResolver formatterResolver)
+ {
+
+ var startOffset = offset;
+ offset += global::MessagePack.MessagePackBinary.WriteFixedArrayHeaderUnsafe(ref bytes, offset, 2);
+ offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.UserName, formatterResolver);
+ offset += formatterResolver.GetFormatterWithVerify().Serialize(ref bytes, offset, value.Message, formatterResolver);
+ return offset - startOffset;
+ }
+
+ public global::ChatApp.Shared.MessagePackObjects.MessageResponse Deserialize(byte[] bytes, int offset, global::MessagePack.IFormatterResolver formatterResolver, out int readSize)
+ {
+ if (global::MessagePack.MessagePackBinary.IsNil(bytes, offset))
+ {
+ throw new InvalidOperationException("typecode is null, struct not supported");
+ }
+
+ var startOffset = offset;
+ var length = global::MessagePack.MessagePackBinary.ReadArrayHeader(bytes, offset, out readSize);
+ offset += readSize;
+
+ var __UserName__ = default(string);
+ var __Message__ = default(string);
+
+ for (int i = 0; i < length; i++)
+ {
+ var key = i;
+
+ switch (key)
+ {
+ case 0:
+ __UserName__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
+ break;
+ case 1:
+ __Message__ = formatterResolver.GetFormatterWithVerify().Deserialize(bytes, offset, formatterResolver, out readSize);
+ break;
+ default:
+ readSize = global::MessagePack.MessagePackBinary.ReadNextBlock(bytes, offset);
+ break;
+ }
+ offset += readSize;
+ }
+
+ readSize = offset - startOffset;
+
+ var ____result = new global::ChatApp.Shared.MessagePackObjects.MessageResponse();
+ ____result.UserName = __UserName__;
+ ____result.Message = __Message__;
+ return ____result;
+ }
+ }
+
+}
+
+#pragma warning restore 168
+#pragma warning restore 414
+#pragma warning restore 618
+#pragma warning restore 612
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/AsyncStreamReaderExtensions.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/AsyncStreamReaderExtensions.cs
index 654f6aa0d..b5e519973 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/AsyncStreamReaderExtensions.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/AsyncStreamReaderExtensions.cs
@@ -12,9 +12,9 @@ public static class AsyncStreamReaderExtensions
{
public static async Task ForEachAsync(this IAsyncStreamReader stream, Action action, CancellationToken cancellation = default(CancellationToken))
{
- using (stream)
+ using (stream as IDisposable)
{
- while (!cancellation.IsCancellationRequested && await stream.MoveNext())
+ while (!cancellation.IsCancellationRequested && await stream.MoveNext(cancellation))
{
action(stream.Current);
}
@@ -23,33 +23,13 @@ public static class AsyncStreamReaderExtensions
public static async Task ForEachAsync(this IAsyncStreamReader stream, Func asyncAction, CancellationToken cancellation = default(CancellationToken))
{
- using (stream)
+ using (stream as IDisposable)
{
- while (!cancellation.IsCancellationRequested && await stream.MoveNext())
+ while (!cancellation.IsCancellationRequested && await stream.MoveNext(cancellation))
{
await asyncAction(stream.Current);
}
}
}
-
- public static IAsyncEnumerable AsAsyncEnumerable(this IAsyncStreamReader stream)
- {
- return new EnumerableAsyncStreamReader(stream);
- }
-
- class EnumerableAsyncStreamReader : IAsyncEnumerable
- {
- readonly IAsyncStreamReader stream;
-
- public EnumerableAsyncStreamReader(IAsyncStreamReader stream)
- {
- this.stream = stream;
- }
-
- public IAsyncEnumerator GetEnumerator()
- {
- return this.stream;
- }
- }
}
}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/ClientFilter.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/ClientFilter.cs
new file mode 100644
index 000000000..76d0bfd5e
--- /dev/null
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/ClientFilter.cs
@@ -0,0 +1,213 @@
+using Grpc.Core;
+using MessagePack;
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MagicOnion.Client
+{
+ public interface IClientFilter
+ {
+ ValueTask SendAsync(RequestContext context, Func> next);
+ }
+
+ public abstract class RequestContext
+ {
+ static readonly Func DefaultMutator = xs => xs;
+
+ public string MethodPath { get; }
+ public CallOptions CallOptions { get; }
+ public Type ResponseType { get; }
+ public abstract Type RequestType { get; }
+ public Func RequestMutator { get; private set; }
+ public Func ResponseMutator { get; private set; }
+
+ Dictionary items;
+ public IDictionary Items
+ {
+ get
+ {
+ if (items == null)
+ {
+ items = new Dictionary();
+ }
+ return items;
+ }
+ }
+
+ // internal use to avoid lambda capture.
+ internal MagicOnionClientBase Client { get; }
+ internal IClientFilter[] Filters { get; }
+ internal Func RequestMethod { get; }
+
+ internal RequestContext(MagicOnionClientBase client, string methodPath, CallOptions callOptions, Type responseType, IClientFilter[] filters, Func requestMethod)
+ {
+ this.Client = client;
+ this.MethodPath = methodPath;
+ this.CallOptions = callOptions;
+ this.ResponseType = responseType;
+ this.Filters = filters;
+ this.RequestMethod = requestMethod;
+ this.RequestMutator = DefaultMutator;
+ this.ResponseMutator = DefaultMutator;
+ }
+
+ public void SetRequestMutator(Func mutator)
+ {
+ this.RequestMutator = mutator;
+ }
+
+ public void SetResponseMutator(Func mutator)
+ {
+ this.ResponseMutator = mutator;
+ }
+ }
+
+ public class RequestContext : RequestContext
+ {
+ public T Request { get; }
+ public override Type RequestType => typeof(T);
+
+ public RequestContext(T request, MagicOnionClientBase client, string methodPath, CallOptions callOptions, Type responseType, IClientFilter[] filters, Func requestMethod)
+ : base(client, methodPath, callOptions, responseType, filters, requestMethod)
+ {
+ this.Request = request;
+ }
+ }
+
+ public abstract class ResponseContext : IDisposable
+ {
+ static readonly Func DefaultMutator = xs => xs;
+
+ public abstract Task ResponseHeadersAsync { get; }
+ public abstract Status GetStatus();
+ public abstract Metadata GetTrailers();
+ public abstract void Dispose();
+ public abstract Type ResponseType { get; }
+ public Func ResponseMutator { get; private set; }
+
+ public abstract Task WaitResponseAsync();
+
+ public ResponseContext As()
+ {
+ return this as ResponseContext;
+ }
+
+ public Task GetResponseAs()
+ {
+ var t = this as ResponseContext;
+ if (t == null) return Task.FromResult(default(T));
+
+ return t.ResponseAsync;
+ }
+
+ public ResponseContext()
+ {
+ this.ResponseMutator = DefaultMutator;
+ }
+
+ public void SetResponseMutator(Func mutator)
+ {
+ this.ResponseMutator = mutator;
+ }
+ }
+
+ public sealed class ResponseContext : ResponseContext
+ {
+ readonly AsyncUnaryCall inner;
+ readonly IFormatterResolver resolver;
+ readonly bool isMock;
+ bool deserialized;
+
+ T responseObject; // cache value.
+
+ // mock
+ readonly Metadata trailers;
+ readonly Metadata responseHeaders;
+ readonly Status status;
+
+ public ResponseContext(AsyncUnaryCall inner, IFormatterResolver resolver)
+ : base()
+ {
+ this.isMock = false;
+ this.inner = inner;
+ this.resolver = resolver;
+ }
+
+ public ResponseContext(T responseObject)
+ : this(responseObject, new Metadata(), new Metadata(), Status.DefaultSuccess)
+ {
+ }
+
+ public ResponseContext(T responseObject, Metadata trailers, Metadata responseHeaders, Status status)
+ : base()
+ {
+ this.isMock = true;
+ this.responseObject = responseObject;
+ this.trailers = trailers;
+ this.responseHeaders = responseHeaders;
+ this.status = status;
+ }
+
+ async Task Deserialize()
+ {
+ if (deserialized)
+ {
+ return responseObject;
+ }
+ else
+ {
+ var bytes = await inner.ResponseAsync.ConfigureAwait(false);
+ responseObject = LZ4MessagePackSerializer.Deserialize(this.ResponseMutator(bytes), resolver);
+ deserialized = true;
+ return responseObject;
+ }
+ }
+
+ public Task ResponseAsync => !isMock ? Deserialize() : Task.FromResult(responseObject);
+
+ public override async Task WaitResponseAsync()
+ {
+ await ResponseAsync;
+ return this;
+ }
+
+ public override Type ResponseType => typeof(T);
+
+ public override Task ResponseHeadersAsync => !isMock ? inner.ResponseHeadersAsync : Task.FromResult(responseHeaders);
+
+ public override void Dispose()
+ {
+ if (!isMock)
+ {
+ inner.Dispose();
+ }
+ }
+
+ public override Status GetStatus()
+ {
+ return !isMock ? inner.GetStatus() : status;
+ }
+
+ public override Metadata GetTrailers()
+ {
+ return !isMock ? inner.GetTrailers() : trailers;
+ }
+
+ public ResponseContext WithNewResult(T result)
+ {
+ if (isMock)
+ {
+ return new ResponseContext(result, trailers, responseHeaders, status);
+ }
+ else
+ {
+ var newContext = new ResponseContext(inner, resolver);
+ newContext.deserialized = true;
+ newContext.responseObject = result;
+ return newContext;
+ }
+ }
+ }
+}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Unity/AsyncStreamReaderExtensions.cs.meta b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/ClientFilter.cs.meta
similarity index 83%
rename from samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Unity/AsyncStreamReaderExtensions.cs.meta
rename to samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/ClientFilter.cs.meta
index d3b3ea268..043460c04 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Unity/AsyncStreamReaderExtensions.cs.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/ClientFilter.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 291e91a7a9253524e80e4bcfefb18d7a
+guid: d0190394f8c415b4b84aa1b95b993369
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs
index 21e13a56d..34d0b7d2d 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs
@@ -12,7 +12,12 @@
namespace MagicOnion.Client
{
- internal static class DynamicClientAssemblyHolder
+#if ENABLE_SAVE_ASSEMBLY
+ public
+#else
+ internal
+#endif
+ static class DynamicClientAssemblyHolder
{
public const string ModuleName = "MagicOnion.Client.DynamicClient";
@@ -34,7 +39,13 @@ public static AssemblyBuilder Save()
#endif
}
- internal static class DynamicClientBuilder
+#if ENABLE_SAVE_ASSEMBLY
+ public
+#else
+ internal
+#endif
+ static class DynamicClientBuilder
+ where T : IService
{
public static readonly Type ClientType;
static readonly Type bytesMethod = typeof(Method<,>).MakeGenericType(new[] { typeof(byte[]), typeof(byte[]) });
@@ -130,11 +141,52 @@ static void DefineStaticConstructor(TypeBuilder typeBuilder, Type interfaceType,
il.Emit(OpCodes.Ldsfld, throughMarshaller);
il.Emit(OpCodes.Newobj, bytesMethod.GetConstructors()[0]);
il.Emit(OpCodes.Stsfld, def.FieldMethod);
+
+ if (def.MethodType == MethodType.Unary)
+ {
+ DefineUnaryRequestDelegate(il, typeBuilder, interfaceType, def);
+ }
}
il.Emit(OpCodes.Ret);
}
+ static void DefineUnaryRequestDelegate(ILGenerator staticContructorGenerator, TypeBuilder typeBuilder, Type interfaceType, MethodDefinition definition)
+ {
+ // static ResponseContext _Method(RequestContext context);
+ MethodBuilder method;
+ {
+ method = typeBuilder.DefineMethod("_" + definition.MethodInfo.Name, MethodAttributes.Private | MethodAttributes.Static,
+ typeof(ResponseContext),
+ new[] { typeof(RequestContext) });
+ var il = method.GetILGenerator();
+
+ // CreateResponseContext(Context, Method);
+ var createMethod = typeof(MagicOnionClientBase)
+ .GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static)
+ .Where(x => x.Name == "CreateResponseContext")
+ .OrderByDescending(x => x.GetGenericArguments().Length)
+ .First()
+ .MakeGenericMethod(definition.RequestType, definition.ResponseType);
+
+ il.Emit(OpCodes.Ldarg_0); // context
+ il.Emit(OpCodes.Ldsfld, definition.FieldMethod); // method
+ il.Emit(OpCodes.Call, createMethod);
+ il.Emit(OpCodes.Ret);
+ }
+
+ // static readonly Func methodDelegate = _Method;
+ {
+ definition.UnaryRequestDelegate = typeBuilder.DefineField(definition.MethodInfo.Name + "Delegate", typeof(Func), FieldAttributes.Private | FieldAttributes.Static);
+
+ var il = staticContructorGenerator;
+ il.Emit(OpCodes.Ldnull);
+ il.Emit(OpCodes.Ldftn, method);
+ il.Emit(OpCodes.Newobj, typeof(Func).GetConstructors()[0]);
+ il.Emit(OpCodes.Stsfld, definition.UnaryRequestDelegate);
+ }
+ }
+
static ConstructorInfo DefineConstructors(TypeBuilder typeBuilder, MethodDefinition[] definitions)
{
ConstructorInfo emptyCtor;
@@ -150,15 +202,16 @@ static ConstructorInfo DefineConstructors(TypeBuilder typeBuilder, MethodDefinit
emptyCtor = ctor;
}
- // .ctor(CallInvoker, IFormatterResolver):base(callInvoker, resolver)
+ // .ctor(CallInvoker, IFormatterResolver, IClientFilter[]):base(callInvoker, resolver, clientFilters)
{
- var ctor = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new[] { typeof(CallInvoker), typeof(IFormatterResolver) });
+ var ctor = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new[] { typeof(CallInvoker), typeof(IFormatterResolver), typeof(IClientFilter[]) });
var il = ctor.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Ldarg_1);
il.Emit(OpCodes.Ldarg_2);
- il.Emit(OpCodes.Call, typeBuilder.BaseType.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { typeof(CallInvoker), typeof(IFormatterResolver) }, null));
+ il.Emit(OpCodes.Ldarg_3);
+ il.Emit(OpCodes.Call, typeBuilder.BaseType.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { typeof(CallInvoker), typeof(IFormatterResolver), typeof(IClientFilter[]) }, null));
il.Emit(OpCodes.Ret);
}
@@ -167,11 +220,13 @@ static ConstructorInfo DefineConstructors(TypeBuilder typeBuilder, MethodDefinit
static void DefineMethods(TypeBuilder typeBuilder, Type interfaceType, MethodDefinition[] definitions, ConstructorInfo emptyCtor)
{
+ var filedHolderType = typeof(MagicOnionClientBase);
var baseType = typeof(MagicOnionClientBase<>).MakeGenericType(interfaceType);
- var hostField = baseType.GetField("host", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
- var optionField = baseType.GetField("option", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
- var invokerField = baseType.GetField("callInvoker", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
- var resolverField = baseType.GetField("resolver", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+ var hostField = filedHolderType.GetField("host", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+ var optionField = filedHolderType.GetField("option", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+ var invokerField = filedHolderType.GetField("callInvoker", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+ var resolverField = filedHolderType.GetField("resolver", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
+ var filtersField = filedHolderType.GetField("filters", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
// Clone
{
@@ -202,6 +257,11 @@ static void DefineMethods(TypeBuilder typeBuilder, Type interfaceType, MethodDef
il.Emit(OpCodes.Ldfld, resolverField);
il.Emit(OpCodes.Stfld, resolverField);
+ il.Emit(OpCodes.Dup);
+ il.Emit(OpCodes.Ldarg_0);
+ il.Emit(OpCodes.Ldfld, filtersField);
+ il.Emit(OpCodes.Stfld, filtersField);
+
il.Emit(OpCodes.Ret);
}
// Overrides
@@ -281,81 +341,101 @@ static void DefineMethods(TypeBuilder typeBuilder, Type interfaceType, MethodDef
switch (def.MethodType)
{
case MethodType.Unary:
- case MethodType.ServerStreaming:
- il.DeclareLocal(typeof(byte[])); // request
- if (def.MethodType == MethodType.Unary)
{
- il.DeclareLocal(typeof(AsyncUnaryCall)); // callResult
+ // base.InvokeAsync/InvokeTaskAsync(string path, TRequest request, Func requestMethod)
+
+ // this.
+ il.Emit(OpCodes.Ldarg_0);
+
+ // path
+ il.Emit(OpCodes.Ldstr, def.Path);
+
+ // create request
+ for (int j = 0; j < parameters.Length; j++)
+ {
+ il.Emit(OpCodes.Ldarg, j + 1);
+ }
+ if (parameters.Length == 0)
+ {
+ // use empty byte[0]
+ il.Emit(OpCodes.Ldsfld, nilBytes);
+ }
+ else if (parameters.Length == 1)
+ {
+ // already loaded parameter.
+ }
+ else
+ {
+ // call new DynamicArgumentTuple
+ il.Emit(OpCodes.Newobj, def.RequestType.GetConstructors()[0]);
+ }
+
+ // requestMethod
+ il.Emit(OpCodes.Ldsfld, def.UnaryRequestDelegate);
+
+ // InvokeAsync/InvokeTaskAsync
+ var invokeMethod = def.ResponseIsTask
+ ? baseType.GetMethod("InvokeTaskAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.Instance)
+ : baseType.GetMethod("InvokeAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.Instance);
+ invokeMethod = invokeMethod.MakeGenericMethod(def.RequestType, def.ResponseType);
+ il.Emit(OpCodes.Callvirt, invokeMethod);
}
- else
+
+ break;
+ case MethodType.ServerStreaming:
{
+ il.DeclareLocal(typeof(byte[])); // request
il.DeclareLocal(typeof(AsyncServerStreamingCall));
- }
- // create request
- for (int j = 0; j < parameters.Length; j++)
- {
- il.Emit(OpCodes.Ldarg, j + 1);
- }
- if (parameters.Length == 0)
- {
- // use empty byte[0]
- il.Emit(OpCodes.Ldsfld, nilBytes);
- }
- else if (parameters.Length == 1)
- {
- // already loaded parameter.
+ // create request
+ for (int j = 0; j < parameters.Length; j++)
+ {
+ il.Emit(OpCodes.Ldarg, j + 1);
+ }
+ if (parameters.Length == 0)
+ {
+ // use empty byte[0]
+ il.Emit(OpCodes.Ldsfld, nilBytes);
+ }
+ else if (parameters.Length == 1)
+ {
+ // already loaded parameter.
+ il.Emit(OpCodes.Ldarg_0);
+ il.Emit(OpCodes.Ldfld, resolverField);
+ il.Emit(OpCodes.Call, callMessagePackSerialize.MakeGenericMethod(def.RequestType));
+ }
+ else
+ {
+ // call new DynamicArgumentTuple
+ il.Emit(OpCodes.Newobj, def.RequestType.GetConstructors()[0]);
+ il.Emit(OpCodes.Ldarg_0);
+ il.Emit(OpCodes.Ldfld, resolverField);
+ il.Emit(OpCodes.Call, callMessagePackSerialize.MakeGenericMethod(def.RequestType));
+ }
+ il.Emit(OpCodes.Stloc_0);
+
+ // create ***Result
il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, resolverField);
- il.Emit(OpCodes.Call, callMessagePackSerialize.MakeGenericMethod(def.RequestType));
- }
- else
- {
- // call new DynamicArgumentTuple
- il.Emit(OpCodes.Newobj, def.RequestType.GetConstructors()[0]);
+ il.Emit(OpCodes.Ldfld, invokerField);
+ il.Emit(OpCodes.Ldsfld, def.FieldMethod);
il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, resolverField);
- il.Emit(OpCodes.Call, callMessagePackSerialize.MakeGenericMethod(def.RequestType));
- }
- il.Emit(OpCodes.Stloc_0);
-
- // create ***Result
- il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, invokerField);
- il.Emit(OpCodes.Ldsfld, def.FieldMethod);
- il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, hostField);
- il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, optionField);
- il.Emit(OpCodes.Ldloc_0);
- if (def.MethodType == MethodType.Unary)
- {
- il.Emit(OpCodes.Callvirt, typeof(CallInvoker).GetMethod("AsyncUnaryCall").MakeGenericMethod(typeof(byte[]), typeof(byte[])));
- }
- else
- {
+ il.Emit(OpCodes.Ldfld, hostField);
+ il.Emit(OpCodes.Ldarg_0);
+ il.Emit(OpCodes.Ldfld, optionField);
+ il.Emit(OpCodes.Ldloc_0);
il.Emit(OpCodes.Callvirt, typeof(CallInvoker).GetMethod("AsyncServerStreamingCall").MakeGenericMethod(typeof(byte[]), typeof(byte[])));
- }
- il.Emit(OpCodes.Stloc_1);
+ il.Emit(OpCodes.Stloc_1);
- // create return result
- il.Emit(OpCodes.Ldloc_1);
- il.Emit(OpCodes.Ldarg_0);
- il.Emit(OpCodes.Ldfld, resolverField);
- Type resultType;
- if (def.MethodType == MethodType.Unary)
- {
- resultType = typeof(UnaryResult<>).MakeGenericType(def.ResponseType);
- il.Emit(OpCodes.Newobj, resultType.GetConstructors().OrderBy(x => x.GetParameters().Length).Last());
- }
- else
- {
- resultType = typeof(ServerStreamingResult<>).MakeGenericType(def.ResponseType);
+ // create return result
+ il.Emit(OpCodes.Ldloc_1);
+ il.Emit(OpCodes.Ldarg_0);
+ il.Emit(OpCodes.Ldfld, resolverField);
+ var resultType = typeof(ServerStreamingResult<>).MakeGenericType(def.ResponseType);
il.Emit(OpCodes.Newobj, resultType.GetConstructors()[0]);
- }
- if (def.ResponseIsTask)
- {
- il.Emit(OpCodes.Call, typeof(Task).GetMethod("FromResult").MakeGenericMethod(resultType));
+ if (def.ResponseIsTask)
+ {
+ il.Emit(OpCodes.Call, typeof(Task).GetMethod("FromResult").MakeGenericMethod(resultType));
+ }
}
break;
case MethodType.ClientStreaming:
@@ -481,6 +561,9 @@ class MethodDefinition
public FieldInfo FieldMethod;
public Type RequestType;
public Type ResponseType;
+
+ // unary only, set after define static fields
+ public FieldInfo UnaryRequestDelegate;
}
}
}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs.meta b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs.meta
index 32eb010cf..8b24b90bf 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/DynamicClientBuilder.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 4756b0967dbdbae4fb4cb2afb87f4101
+guid: 208a388fa997a3248820f7b2141a6517
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs
index cdb829706..1b55c9653 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs
@@ -1,6 +1,7 @@
using Grpc.Core;
using MagicOnion.Server.EmbeddedServices;
using MessagePack;
+using System;
using System.Threading.Tasks;
#if !NON_UNITY
@@ -38,7 +39,7 @@ public HeartbeatClient(Channel channel)
}
public HeartbeatClient(CallInvoker callInvoker)
- : base(callInvoker, null)
+ : base(callInvoker, null, Array.Empty())
{
}
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs.meta b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs.meta
index d4874e8ef..3b5e89d95 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/HeartbeatClient.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 3f573b388e1de364eb3cf8671cf58926
+guid: 23372752e8f03804e967e1401e3e3ab4
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs
index d2249d4bb..d2440a7f1 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs
@@ -1,6 +1,7 @@
using Grpc.Core;
using MagicOnion.Server.EmbeddedServices;
using MessagePack;
+using System;
#if !NON_UNITY
@@ -37,7 +38,7 @@ public PingClient(Channel channel)
}
public PingClient(CallInvoker callInvoker)
- : base(callInvoker, null)
+ : base(callInvoker, null, Array.Empty())
{
}
@@ -53,8 +54,13 @@ protected override MagicOnionClientBase Clone()
public UnaryResult Ping()
{
- var __callResult = callInvoker.AsyncUnaryCall(Method, base.host, base.option, MagicOnionMarshallers.UnsafeNilBytes);
- return new UnaryResult(__callResult, MessagePack.Resolvers.BuiltinResolver.Instance);
+ return InvokeAsync("IMagicOnionEmbeddedPing/Ping", MagicOnionMarshallers.UnsafeNilBytes, __ctx =>
+ {
+ var __self = (PingClient)__ctx.Client;
+ var __request = MagicOnionMarshallers.UnsafeNilBytes;
+ var __callResult = __self.callInvoker.AsyncUnaryCall(PingClient.Method, __self.host, __ctx.CallOptions, __request);
+ return new ResponseContext(__callResult, MessagePack.Resolvers.BuiltinResolver.Instance);
+ });
}
}
}
\ No newline at end of file
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs.meta b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs.meta
index 9af00d4a2..d26097bb6 100644
--- a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs.meta
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/EmbeddedServices/PingClient.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 978917e6032944a4bbc7585e1d78f8ea
+guid: 6914b68b52e42bc44a3c16fd54147eac
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/InterceptInvokeHelper.cs b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/InterceptInvokeHelper.cs
new file mode 100644
index 000000000..870155e54
--- /dev/null
+++ b/samples/ChatApp/ChatApp.Unity/Assets/Scripts/MagicOnion/Client/InterceptInvokeHelper.cs
@@ -0,0 +1,158 @@
+using System.Threading.Tasks;
+
+namespace MagicOnion.Client
+{
+ internal static class InterceptInvokeHelper
+ {
+ public static ValueTask InvokeWithFilter(RequestContext context)
+ {
+ switch (context.Filters.Length)
+ {
+ case 0:
+ return new ValueTask(context.RequestMethod(context));
+ case 1:
+ return InvokeWithFilter1(context);
+ case 2:
+ return InvokeWithFilter2(context);
+ case 3:
+ return InvokeWithFilter3(context);
+ case 4:
+ return InvokeWithFilter4(context);
+ case 5:
+ return InvokeWithFilter5(context);
+ case 6:
+ return InvokeWithFilter6(context);
+ case 7:
+ return InvokeWithFilter7(context);
+ case 8:
+ return InvokeWithFilter8(context);
+ case 9:
+ return InvokeWithFilter9(context);
+ case 10:
+ return InvokeWithFilter10(context);
+ default:
+ return InvokeRecursive(-1, context);
+ }
+ }
+
+ static ValueTask InvokeWithFilter1(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()));
+ }
+
+ static ValueTask InvokeWithFilter2(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ x1 => x1.Filters[1].SendAsync(x1,
+ ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())));
+ }
+
+ static ValueTask InvokeWithFilter3(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ x1 => x1.Filters[1].SendAsync(x1,
+ x2 => x2.Filters[2].SendAsync(x2,
+ ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))));
+ }
+
+ static ValueTask InvokeWithFilter4(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ x1 => x1.Filters[1].SendAsync(x1,
+ x2 => x2.Filters[2].SendAsync(x2,
+ x3 => x3.Filters[3].SendAsync(x3,
+ ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())))));
+ }
+
+ static ValueTask InvokeWithFilter5(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ x1 => x1.Filters[1].SendAsync(x1,
+ x2 => x2.Filters[2].SendAsync(x2,
+ x3 => x3.Filters[3].SendAsync(x3,
+ x4 => x4.Filters[4].SendAsync(x4,
+ ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))))));
+ }
+
+ static ValueTask InvokeWithFilter6(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ x1 => x1.Filters[1].SendAsync(x1,
+ x2 => x2.Filters[2].SendAsync(x2,
+ x3 => x3.Filters[3].SendAsync(x3,
+ x4 => x4.Filters[4].SendAsync(x4,
+ x5 => x5.Filters[5].SendAsync(x5,
+ ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())))))));
+ }
+
+ static ValueTask InvokeWithFilter7(RequestContext context)
+ {
+ return context.Filters[0].SendAsync(context,
+ x1 => x1.Filters[1].SendAsync(x1,
+ x2 => x2.Filters[2].SendAsync(x2,
+ x3 => x3.Filters[3].SendAsync(x3,
+ x4 => x4.Filters[4].SendAsync(x4,
+ x5 => x5.Filters[5].SendAsync(x5,
+ x6 => x6.Filters[6].SendAsync(x6,
+ ctx => new ValueTask