using Capnp; using Capnp.Rpc; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace CapnpGen { [TypeId(0x8f85f6df684d47b5UL), Proxy(typeof(GenericAProxy<>)), Skeleton(typeof(GenericASkeleton<>))] public interface IGenericA : IDisposable where TT : class { Task MethodA(TT param1, CancellationToken cancellationToken_ = default); } public class GenericAProxy : Proxy, IGenericA where TT : class { public async Task MethodA(TT param1, CancellationToken cancellationToken_ = default) { var in_ = SerializerState.CreateForRpc.Params_methodA.WRITER>(); var arg_ = new CapnpGen.GenericA.Params_methodA() {Param1 = param1}; arg_.serialize(in_); var d_ = await Call(10341943558714247093UL, 0, in_.Rewrap(), false, cancellationToken_).WhenReturned; var r_ = CapnpSerializable.Create.Result_methodA>(d_); return; } } public class GenericASkeleton : Skeleton> where TT : class { public GenericASkeleton() { SetMethodTable(MethodA); } public override ulong InterfaceId => 10341943558714247093UL; async Task MethodA(DeserializerState d_, CancellationToken cancellationToken_) { var in_ = CapnpSerializable.Create.Params_methodA>(d_); await Impl.MethodA(in_.Param1, cancellationToken_); var s_ = SerializerState.CreateForRpc.Result_methodA.WRITER>(); return s_; } } public static class GenericA where TT : class { [TypeId(0xe67c3d73f913c24fUL)] public class Params_methodA : ICapnpSerializable { public const UInt64 typeId = 0xe67c3d73f913c24fUL; void ICapnpSerializable.Deserialize(DeserializerState arg_) { var reader = READER.create(arg_); Param1 = CapnpSerializable.Create(reader.Param1); applyDefaults(); } public void serialize(WRITER writer) { writer.Param1.SetObject(Param1); } void ICapnpSerializable.Serialize(SerializerState arg_) { serialize(arg_.Rewrap()); } public void applyDefaults() { } public TT Param1 { get; set; } public struct READER { readonly DeserializerState ctx; public READER(DeserializerState ctx) { this.ctx = ctx; } public static READER create(DeserializerState ctx) => new READER(ctx); public static implicit operator DeserializerState(READER reader) => reader.ctx; public static implicit operator READER(DeserializerState ctx) => new READER(ctx); public DeserializerState Param1 => ctx.StructReadPointer(0); } public class WRITER : SerializerState { public WRITER() { this.SetStruct(0, 1); } public DynamicSerializerState Param1 { get => BuildPointer(0); set => Link(0, value); } } } [TypeId(0xd6791784c41c75f3UL)] public class Result_methodA : ICapnpSerializable { public const UInt64 typeId = 0xd6791784c41c75f3UL; void ICapnpSerializable.Deserialize(DeserializerState arg_) { var reader = READER.create(arg_); applyDefaults(); } public void serialize(WRITER writer) { } void ICapnpSerializable.Serialize(SerializerState arg_) { serialize(arg_.Rewrap()); } public void applyDefaults() { } public struct READER { readonly DeserializerState ctx; public READER(DeserializerState ctx) { this.ctx = ctx; } public static READER create(DeserializerState ctx) => new READER(ctx); public static implicit operator DeserializerState(READER reader) => reader.ctx; public static implicit operator READER(DeserializerState ctx) => new READER(ctx); } public class WRITER : SerializerState { public WRITER() { this.SetStruct(0, 0); } } } } [TypeId(0xe3cd928b8338eac9UL), Proxy(typeof(B2Proxy)), Skeleton(typeof(B2Skeleton))] public interface IB2 : CapnpGen.IGenericA { Task MethodB(long param1, CancellationToken cancellationToken_ = default); } public class B2Proxy : Proxy, IB2 { public async Task MethodB(long param1, CancellationToken cancellationToken_ = default) { var in_ = SerializerState.CreateForRpc(); var arg_ = new CapnpGen.B2.Params_methodB() {Param1 = param1}; arg_.serialize(in_); var d_ = await Call(16414937344734980809UL, 0, in_.Rewrap(), false, cancellationToken_).WhenReturned; var r_ = CapnpSerializable.Create(d_); return (r_.Res); } public async Task MethodA(string param1, CancellationToken cancellationToken_ = default) { var in_ = SerializerState.CreateForRpc.Params_methodA.WRITER>(); var arg_ = new CapnpGen.GenericA.Params_methodA() {Param1 = param1}; arg_.serialize(in_); var d_ = await Call(10341943558714247093UL, 0, in_.Rewrap(), false, cancellationToken_).WhenReturned; var r_ = CapnpSerializable.Create.Result_methodA>(d_); return; } } public class B2Skeleton : Skeleton { public B2Skeleton() { SetMethodTable(MethodB); } public override ulong InterfaceId => 16414937344734980809UL; Task MethodB(DeserializerState d_, CancellationToken cancellationToken_) { var in_ = CapnpSerializable.Create(d_); return Impatient.MaybeTailCall(Impl.MethodB(in_.Param1, cancellationToken_), res => { var s_ = SerializerState.CreateForRpc(); var r_ = new CapnpGen.B2.Result_methodB{Res = res}; r_.serialize(s_); return s_; } ); } } public static class B2 { [TypeId(0xdf7b0019c911a776UL)] public class Params_methodB : ICapnpSerializable { public const UInt64 typeId = 0xdf7b0019c911a776UL; void ICapnpSerializable.Deserialize(DeserializerState arg_) { var reader = READER.create(arg_); Param1 = reader.Param1; applyDefaults(); } public void serialize(WRITER writer) { writer.Param1 = Param1; } void ICapnpSerializable.Serialize(SerializerState arg_) { serialize(arg_.Rewrap()); } public void applyDefaults() { } public long Param1 { get; set; } public struct READER { readonly DeserializerState ctx; public READER(DeserializerState ctx) { this.ctx = ctx; } public static READER create(DeserializerState ctx) => new READER(ctx); public static implicit operator DeserializerState(READER reader) => reader.ctx; public static implicit operator READER(DeserializerState ctx) => new READER(ctx); public long Param1 => ctx.ReadDataLong(0UL, 0L); } public class WRITER : SerializerState { public WRITER() { this.SetStruct(1, 0); } public long Param1 { get => this.ReadDataLong(0UL, 0L); set => this.WriteData(0UL, value, 0L); } } } [TypeId(0xea5fbbd3b20b4347UL)] public class Result_methodB : ICapnpSerializable { public const UInt64 typeId = 0xea5fbbd3b20b4347UL; void ICapnpSerializable.Deserialize(DeserializerState arg_) { var reader = READER.create(arg_); Res = reader.Res; applyDefaults(); } public void serialize(WRITER writer) { writer.Res = Res; } void ICapnpSerializable.Serialize(SerializerState arg_) { serialize(arg_.Rewrap()); } public void applyDefaults() { } public string Res { get; set; } public struct READER { readonly DeserializerState ctx; public READER(DeserializerState ctx) { this.ctx = ctx; } public static READER create(DeserializerState ctx) => new READER(ctx); public static implicit operator DeserializerState(READER reader) => reader.ctx; public static implicit operator READER(DeserializerState ctx) => new READER(ctx); public string Res => ctx.ReadText(0, ""); } public class WRITER : SerializerState { public WRITER() { this.SetStruct(0, 1); } public string Res { get => this.ReadText(0, ""); set => this.WriteText(0, value, ""); } } } } }