public void GenerateCommandSchemas()

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);
                        }
                    }
                }
            }
        }