Prepare for zero-copy sending
This commit is contained in:
@@ -23,6 +23,7 @@ namespace mROA.Codegen
|
||||
ReturnType = typeof(<!L returnType>),
|
||||
ParameterTypes = new Type[] { <!L parametersType> },
|
||||
SuitableType = typeof(<!L suitableType>),
|
||||
RequireCancellation = <!L cancellation>,
|
||||
Invoking = (i, parameters, special, post) => <!L funcInvoking>,
|
||||
}<!T>
|
||||
<!T syncInvoker>
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace mROA.Codegen.Templates
|
||||
private const string ParametersTypeTag = "parametersType";
|
||||
private const string SuitableTypeTag = "suitableType";
|
||||
private const string FuncInvokingTag = "funcInvoking";
|
||||
private const string CancellationTag = "cancellation";
|
||||
private const string IsTrustedTag = "isTrusted";
|
||||
|
||||
public InvokerTemplate(TemplateDocument template) : base(template) { }
|
||||
@@ -42,5 +43,10 @@ namespace mROA.Codegen.Templates
|
||||
{
|
||||
Define(IsTrustedTag, value);
|
||||
}
|
||||
|
||||
public void DefineCancellation(string value)
|
||||
{
|
||||
Define(CancellationTag, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -316,11 +316,14 @@ namespace mROA.Codegen
|
||||
|
||||
var parametersInsertList = new List<string>();
|
||||
|
||||
var useCancellationToken = false;
|
||||
|
||||
foreach (var parameter in method.Parameters)
|
||||
switch (parameter.Type.Name)
|
||||
{
|
||||
case "CancellationToken":
|
||||
parametersInsertList.Add("(CancellationToken)special[1]");
|
||||
useCancellationToken = true;
|
||||
break;
|
||||
case "RequestContext":
|
||||
parametersInsertList.Add("(RequestContext)special[0]");
|
||||
@@ -359,6 +362,7 @@ namespace mROA.Codegen
|
||||
invokerTemplate.DefineSuitableType(baseInterface.ToUnityString());
|
||||
invokerTemplate.DefineFuncInvoking(funcInvoking);
|
||||
invokerTemplate.DefineIsTrusted((!isUntrusted).ToString().ToLower());
|
||||
invokerTemplate.DefineCancellation(useCancellationToken.ToString().ToLower());
|
||||
backend = invokerTemplate.Compile();
|
||||
}
|
||||
else
|
||||
@@ -370,6 +374,7 @@ namespace mROA.Codegen
|
||||
invokerTemplate.DefineSuitableType(baseInterface.ToUnityString());
|
||||
invokerTemplate.DefineFuncInvoking(funcInvoking);
|
||||
invokerTemplate.DefineIsTrusted((!isUntrusted).ToString().ToLower());
|
||||
|
||||
backend = invokerTemplate.Compile();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user