in codegen/src/Azure.Iot.Operations.ProtocolCompiler/SchemaGenerator/SchemaGenerator.cs [170:208]
public void GenerateCommandSchemas(Action<string, string, string> acceptor, int mqttVersion, CodeName? sharedPrefix)
{
foreach (KeyValuePair<string, DTCommandInfo> dtCommand in dtInterface.Commands)
{
if (dtCommand.Value.Request != null && !IsCommandPayloadTransparent(dtCommand.Value.Request, mqttVersion))
{
ITypeName reqSchema = GetRequestSchema(dtCommand.Value, mqttVersion)!;
foreach (ITemplateTransform reqSchemaTransform in SchemaTransformFactory.GetCommandSchemaTransforms(
payloadFormat, projectName, genNamespace, dtInterface.Id, reqSchema, dtCommand.Key, "request", dtCommand.Value.Request.Name, dtCommand.Value.Request.Schema, sharedPrefix, dtCommand.Value.Request.Nullable))
{
acceptor(reqSchemaTransform.TransformText(), reqSchemaTransform.FileName, reqSchemaTransform.FolderPath);
}
}
if (dtCommand.Value.Response != null && !IsCommandPayloadTransparent(dtCommand.Value.Response, mqttVersion))
{
ITypeName respSchema = GetResponseSchema(dtCommand.Value, mqttVersion)!;
string paramName = dtCommand.Value.Response.Name;
DTSchemaInfo? paramSchema = dtCommand.Value.Response.Schema;
if (IsSchemaResult(paramSchema, mqttVersion))
{
DTFieldInfo? normalField = ((DTObjectInfo)paramSchema).Fields.FirstOrDefault(f => IsFieldNormalResult(f, mqttVersion));
paramName = normalField?.Name ?? string.Empty;
paramSchema = normalField?.Schema;
}
if (paramSchema != null)
{
foreach (ITemplateTransform respSchemaTransform in SchemaTransformFactory.GetCommandSchemaTransforms(
payloadFormat, projectName, genNamespace, dtInterface.Id, respSchema, dtCommand.Key, "response", paramName, paramSchema, sharedPrefix, dtCommand.Value.Response.Nullable))
{
acceptor(respSchemaTransform.TransformText(), respSchemaTransform.FileName, respSchemaTransform.FolderPath);
}
}
}
}
}