Files
mROA/mROA.Codegen/RemoteTypeBinder.cstmpl
2026-07-07 22:30:46 +03:00

50 lines
1.8 KiB
Plaintext

// <auto-generated/>
using System.Collections.Generic;
using System.Reflection;
using System;
using mROA.Abstract;
using mROA.Implementation.Backend;
using mROA.Implementation;
namespace mROA.Codegen
{
public sealed class RemoteTypeBinder
{
static RemoteTypeBinder(){
InstanceRepository.EventBinders = new object[] {
<!I eventBinder r sep typesSep><!D typesSep>,
<!D>
<!T objectBinderTemplate>
new EventBinder<<!L type>>
{
BindAction = (instance, context, representationProducer, index) =>
{
var ownerId = context.OwnerId;
var module = representationProducer.Produce(ownerId);
<!I eventBinder r sep typesSep><!D typesSep>
<!D>
<!T eventBinderTemplate>
(instance as <!L type>).<!L eventName> += (<!L parametersDeclaration>) =>
{
<!I callFilter>
Console.WriteLine("Sending event...");
var request = new CallRequest
{
Id = RequestId.Generate(),
CommandId = <!L commandId>,
ObjectId = new ComplexObjectIdentifier(index, ownerId),
Parameters = new object[] { <!L transferParameters> }
};
module.PostCallMessageAsync(request.Id, EMessageType.EventRequest, request, context);
};
<!T>
}
}
<!T>
};
}
}
}