1234567891011121314151617181920212223242526272829303132 |
- using System;
- using InABox.Core;
- namespace InABox.IPC
- {
-
- public interface IRPCCommand<TProperties,TResult> { }
-
- public interface IRPCCommandHandler
- {
- String? Execute(object sender, String? parameters);
- }
-
- public abstract class RPCCommandHandler<TSender, TParameters, TResult> : IRPCCommandHandler where TSender : class
- {
- private TSender _sender;
- public RPCCommandHandler(TSender sender)
- {
- _sender = sender ?? throw new ArgumentNullException(nameof(sender));
- }
- public abstract TResult? Execute(TSender sender, TParameters? parameters);
- public String? Execute(object sender, String? parameters)
- {
- var props = Serialization.Deserialize<TParameters>(parameters);
- var result = Execute(_sender, props);
- return Serialization.Serialize(result);
- }
- }
- }
|