RPCCommandHandler.cs 673 B

1234567891011121314151617181920212223
  1. using InABox.Core;
  2. namespace InABox.IPC
  3. {
  4. public abstract class RPCCommandHandler<TSender, TParameters, TResult> : IRPCCommandHandler where TSender : class
  5. {
  6. public TSender Sender { get; }
  7. public RPCCommandHandler(TSender sender)
  8. {
  9. Sender = sender ?? throw new ArgumentNullException(nameof(sender));
  10. }
  11. public abstract TResult? Execute(TParameters? parameters);
  12. public String? Execute(String? parameters)
  13. {
  14. var props = Serialization.Deserialize<TParameters>(parameters);
  15. var result = Execute(props);
  16. return Serialization.Serialize(result);
  17. }
  18. }
  19. }