Skip to content

Commit

Permalink
SAI proto gen part 3 (#224)
Browse files Browse the repository at this point in the history
  • Loading branch information
DanG100 authored Aug 11, 2023
1 parent 9afc143 commit 26802d6
Show file tree
Hide file tree
Showing 3 changed files with 325 additions and 127 deletions.
22 changes: 14 additions & 8 deletions dataplane/standalone/apigen/apigen.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
"runtime"
"strings"

strcase "github.com/stoewer/go-strcase"
cc "modernc.org/cc/v4"
)

Expand Down Expand Up @@ -197,6 +196,12 @@ func generate() error {
return err
}

apis := make(map[string]*protoAPITmplData)
common, err := populateCommonTypes(xmlInfo)
if err != nil {
return err
}

for _, iface := range sai.ifaces {
nameTrimmed := strings.TrimSuffix(strings.TrimPrefix(iface.name, "sai_"), "_api_t")
ccData := ccTemplateData{
Expand All @@ -205,15 +210,11 @@ func generate() error {
APIType: iface.name,
APIName: nameTrimmed,
}
protoData := &protoTmplData{
ServiceName: strcase.UpperCamelCase(nameTrimmed),
Enums: make(map[string]protoEnum),
}
for _, fn := range iface.funcs {
tf, isSwitchScoped, entry := createCCData(sai, fn)
ccData.Funcs = append(ccData.Funcs, *tf)

err := populateTmplDataFromFunc(protoData, tf.Name, entry, tf.Operation, tf.TypeName, iface.name, isSwitchScoped, xmlInfo)
err := populateTmplDataFromFunc(apis, xmlInfo, tf.Name, entry, tf.Operation, tf.TypeName, iface.name, isSwitchScoped)
if err != nil {
return err
}
Expand All @@ -237,11 +238,16 @@ func generate() error {
if err := ccTmpl.Execute(impl, ccData); err != nil {
return err
}
if err := protoTmpl.Execute(proto, protoData); err != nil {
if err := protoTmpl.Execute(proto, apis[iface.name]); err != nil {
return err
}
}
return nil
protoCommonFile, err := os.Create(filepath.Join(protoOutDir, "common.proto"))
if err != nil {
return err
}

return protoCommonTmpl.Execute(protoCommonFile, common)
}

func main() {
Expand Down
2 changes: 1 addition & 1 deletion dataplane/standalone/apigen/ccgen.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func createCCData(sai *saiAPI, fn typeDecl) (*templateFunc, bool, string) {
if strings.Contains(param.typ, "entry") {
tf.Entry = fmt.Sprintf("common_entry_t entry = {.%s = %s};", name, name)
name = "entry"
entryType = trimSAIName(strings.TrimPrefix(param.typ, "const"), true, false)
entryType = trimSAIName(strings.TrimPrefix(param.typ, "const "), true, false)
}
if i == 1 && param.name == "switch_id" {
isSwitchScoped = true
Expand Down
Loading

0 comments on commit 26802d6

Please sign in to comment.