github.com/alkemics/goflow@v0.2.1/wrappers/types/graph/types.go (about)

     1  // Code generated by goflow DO NOT EDIT.
     2  
     3  //go:build !codeanalysis
     4  // +build !codeanalysis
     5  
     6  package main
     7  
     8  import (
     9  	"context"
    10  
    11  	"github.com/alkemics/goflow/example/constants/functions"
    12  	"github.com/alkemics/goflow/example/constants/numbers"
    13  	"github.com/alkemics/goflow/example/nodes"
    14  )
    15  
    16  /*
    17  optional: no
    18  */
    19  type Types struct{}
    20  
    21  func NewTypes() Types {
    22  	return Types{}
    23  }
    24  
    25  func newTypes(id string) Types {
    26  	return Types{}
    27  }
    28  
    29  /*
    30  optional: no
    31  */
    32  func (g *Types) Run(ctx context.Context, a uint, b []uint, c uint, no bool) (add uint, add_10 uint, forwardedInputs []uint) {
    33  
    34  	// __add_10_a outputs
    35  	var __add_10_a_aggregated uint
    36  
    37  	// __add_10_b outputs
    38  	var __add_10_b_aggregated uint
    39  
    40  	// __add_list outputs
    41  	var __add_list_aggregated []uint
    42  
    43  	// __add_reducer outputs
    44  	var __add_reducer_aggregated functions.UIntReducer
    45  
    46  	// __ctx outputs
    47  	var __ctx_ctx context.Context
    48  
    49  	// __do_not_print_values outputs
    50  	var __do_not_print_values_aggregated []interface{}
    51  
    52  	// __output_add_10_builder outputs
    53  	var __output_add_10_builder_add_10 uint
    54  
    55  	// __output_add_builder outputs
    56  	var __output_add_builder_add uint
    57  
    58  	// __output_forwardedInputs_builder outputs
    59  	var __output_forwardedInputs_builder_forwardedInputs []uint
    60  
    61  	// __print_pi_values outputs
    62  	var __print_pi_values_aggregated []interface{}
    63  
    64  	// __print_values outputs
    65  	var __print_values_aggregated []interface{}
    66  
    67  	// add outputs
    68  	var add_result uint
    69  
    70  	// add_10 outputs
    71  	var add_10_sum uint
    72  
    73  	// do_not_print outputs
    74  
    75  	// inputs outputs
    76  	var inputs_a uint
    77  	var inputs_b []uint
    78  	var inputs_c uint
    79  	var inputs_no bool
    80  
    81  	// make_slice outputs
    82  	var make_slice_list []uint
    83  
    84  	// print outputs
    85  
    86  	// print_pi outputs
    87  
    88  	igniteNodeID := "ignite"
    89  	doneNodeID := "done"
    90  
    91  	done := make(chan string)
    92  	defer close(done)
    93  
    94  	steps := map[string]struct {
    95  		deps        map[string]struct{}
    96  		run         func()
    97  		alreadyDone bool
    98  	}{
    99  
   100  		"__add_10_a": {
   101  			deps: map[string]struct{}{
   102  				"inputs":     {},
   103  				igniteNodeID: {},
   104  			},
   105  			run: func() {
   106  				__add_10_a_aggregated = inputs_a
   107  				done <- "__add_10_a"
   108  			},
   109  			alreadyDone: false,
   110  		},
   111  		"__add_10_b": {
   112  			deps: map[string]struct{}{
   113  				igniteNodeID: {},
   114  			},
   115  			run: func() {
   116  				__add_10_b_aggregated = 10
   117  				done <- "__add_10_b"
   118  			},
   119  			alreadyDone: false,
   120  		},
   121  		"__add_list": {
   122  			deps: map[string]struct{}{
   123  				"inputs":     {},
   124  				"add_10":     {},
   125  				"make_slice": {},
   126  				igniteNodeID: {},
   127  			},
   128  			run: func() {
   129  				__add_list_aggregated = append(__add_list_aggregated, inputs_a)
   130  				__add_list_aggregated = append(__add_list_aggregated, inputs_b...)
   131  				__add_list_aggregated = append(__add_list_aggregated, inputs_c)
   132  				__add_list_aggregated = append(__add_list_aggregated, add_10_sum)
   133  				__add_list_aggregated = append(__add_list_aggregated, make_slice_list...)
   134  				__add_list_aggregated = append(__add_list_aggregated, numbers.One)
   135  				done <- "__add_list"
   136  			},
   137  			alreadyDone: false,
   138  		},
   139  		"__add_reducer": {
   140  			deps: map[string]struct{}{
   141  				igniteNodeID: {},
   142  			},
   143  			run: func() {
   144  				__add_reducer_aggregated = functions.UIntSum
   145  				done <- "__add_reducer"
   146  			},
   147  			alreadyDone: false,
   148  		},
   149  		"__ctx": {
   150  			deps: map[string]struct{}{
   151  				igniteNodeID: {},
   152  			},
   153  			run: func() {
   154  				__ctx_ctx = ctx
   155  				done <- "__ctx"
   156  			},
   157  			alreadyDone: false,
   158  		},
   159  		"__do_not_print_values": {
   160  			deps: map[string]struct{}{
   161  				igniteNodeID: {},
   162  			},
   163  			run: func() {
   164  				__do_not_print_values_aggregated = append(__do_not_print_values_aggregated, "this is not printed")
   165  				done <- "__do_not_print_values"
   166  			},
   167  			alreadyDone: false,
   168  		},
   169  		"__output_add_10_builder": {
   170  			deps: map[string]struct{}{
   171  				"add_10":     {},
   172  				igniteNodeID: {},
   173  			},
   174  			run: func() {
   175  
   176  				__output_add_10_builder_add_10 = add_10_sum
   177  				add_10 = __output_add_10_builder_add_10
   178  				done <- "__output_add_10_builder"
   179  			},
   180  			alreadyDone: false,
   181  		},
   182  		"__output_add_builder": {
   183  			deps: map[string]struct{}{
   184  				"add":        {},
   185  				igniteNodeID: {},
   186  			},
   187  			run: func() {
   188  
   189  				__output_add_builder_add = add_result
   190  				add = __output_add_builder_add
   191  				done <- "__output_add_builder"
   192  			},
   193  			alreadyDone: false,
   194  		},
   195  		"__output_forwardedInputs_builder": {
   196  			deps: map[string]struct{}{
   197  				"inputs":     {},
   198  				igniteNodeID: {},
   199  			},
   200  			run: func() {
   201  
   202  				__output_forwardedInputs_builder_forwardedInputs = append(__output_forwardedInputs_builder_forwardedInputs, inputs_a)
   203  				__output_forwardedInputs_builder_forwardedInputs = append(__output_forwardedInputs_builder_forwardedInputs, inputs_b...)
   204  				__output_forwardedInputs_builder_forwardedInputs = append(__output_forwardedInputs_builder_forwardedInputs, inputs_c)
   205  				forwardedInputs = __output_forwardedInputs_builder_forwardedInputs
   206  				done <- "__output_forwardedInputs_builder"
   207  			},
   208  			alreadyDone: false,
   209  		},
   210  		"__print_pi_values": {
   211  			deps: map[string]struct{}{
   212  				igniteNodeID: {},
   213  			},
   214  			run: func() {
   215  				__print_pi_values_aggregated = append(__print_pi_values_aggregated, "Pi:")
   216  				__print_pi_values_aggregated = append(__print_pi_values_aggregated, numbers.Pi)
   217  				done <- "__print_pi_values"
   218  			},
   219  			alreadyDone: false,
   220  		},
   221  		"__print_values": {
   222  			deps: map[string]struct{}{
   223  				"add":        {},
   224  				igniteNodeID: {},
   225  			},
   226  			run: func() {
   227  				__print_values_aggregated = append(__print_values_aggregated, "the result should be 28")
   228  				__print_values_aggregated = append(__print_values_aggregated, add_result)
   229  				done <- "__print_values"
   230  			},
   231  			alreadyDone: false,
   232  		},
   233  		"add": {
   234  			deps: map[string]struct{}{
   235  				"__add_list":    {},
   236  				"__add_reducer": {},
   237  				igniteNodeID:    {},
   238  			},
   239  			run: func() {
   240  				add_result = nodes.UIntAggregator(__add_list_aggregated, __add_reducer_aggregated)
   241  				done <- "add"
   242  			},
   243  			alreadyDone: false,
   244  		},
   245  		"add_10": {
   246  			deps: map[string]struct{}{
   247  				"__add_10_a": {},
   248  				"__add_10_b": {},
   249  				igniteNodeID: {},
   250  			},
   251  			run: func() {
   252  				add_10_sum = nodes.UAdd(__add_10_a_aggregated, __add_10_b_aggregated)
   253  				done <- "add_10"
   254  			},
   255  			alreadyDone: false,
   256  		},
   257  		"do_not_print": {
   258  			deps: map[string]struct{}{
   259  				"__do_not_print_values": {},
   260  				"inputs":                {},
   261  				igniteNodeID:            {},
   262  			},
   263  			run: func() {
   264  				if inputs_no {
   265  					nodes.Printer(__do_not_print_values_aggregated)
   266  				}
   267  
   268  				done <- "do_not_print"
   269  			},
   270  			alreadyDone: false,
   271  		},
   272  		"inputs": {
   273  			deps: map[string]struct{}{
   274  				igniteNodeID: {},
   275  			},
   276  			run: func() {
   277  				inputs_a = a
   278  				inputs_b = b
   279  				inputs_c = c
   280  				inputs_no = no
   281  				done <- "inputs"
   282  			},
   283  			alreadyDone: false,
   284  		},
   285  		"make_slice": {
   286  			deps: map[string]struct{}{
   287  				igniteNodeID: {},
   288  			},
   289  			run: func() {
   290  				make_slice_list = nodes.UIntSliceMaker()
   291  				done <- "make_slice"
   292  			},
   293  			alreadyDone: false,
   294  		},
   295  		"print": {
   296  			deps: map[string]struct{}{
   297  				"__ctx":          {},
   298  				"__print_values": {},
   299  				igniteNodeID:     {},
   300  			},
   301  			run: func() {
   302  				nodes.PrinterCtx(__ctx_ctx, __print_values_aggregated)
   303  				done <- "print"
   304  			},
   305  			alreadyDone: false,
   306  		},
   307  		"print_pi": {
   308  			deps: map[string]struct{}{
   309  				"__print_pi_values": {},
   310  				igniteNodeID:        {},
   311  			},
   312  			run: func() {
   313  				nodes.Printer(__print_pi_values_aggregated)
   314  				done <- "print_pi"
   315  			},
   316  			alreadyDone: false,
   317  		},
   318  		igniteNodeID: {
   319  			deps: map[string]struct{}{},
   320  			run: func() {
   321  				done <- igniteNodeID
   322  			},
   323  			alreadyDone: false,
   324  		},
   325  		doneNodeID: {
   326  			deps: map[string]struct{}{
   327  				"__add_10_a":                       {},
   328  				"__add_10_b":                       {},
   329  				"__add_list":                       {},
   330  				"__add_reducer":                    {},
   331  				"__ctx":                            {},
   332  				"__do_not_print_values":            {},
   333  				"__output_add_10_builder":          {},
   334  				"__output_add_builder":             {},
   335  				"__output_forwardedInputs_builder": {},
   336  				"__print_pi_values":                {},
   337  				"__print_values":                   {},
   338  				"add":                              {},
   339  				"add_10":                           {},
   340  				"do_not_print":                     {},
   341  				"inputs":                           {},
   342  				"make_slice":                       {},
   343  				"print":                            {},
   344  				"print_pi":                         {},
   345  			},
   346  			run: func() {
   347  				done <- doneNodeID
   348  			},
   349  			alreadyDone: false,
   350  		},
   351  	}
   352  
   353  	// Ignite
   354  	ignite := steps[igniteNodeID]
   355  	ignite.alreadyDone = true
   356  	steps[igniteNodeID] = ignite
   357  	go steps[igniteNodeID].run()
   358  
   359  	// Resolve the graph
   360  	for resolved := range done {
   361  		if resolved == doneNodeID {
   362  			// If all the graph was resolved, get out of the loop
   363  			break
   364  		}
   365  
   366  		for name, step := range steps {
   367  			delete(step.deps, resolved)
   368  			if len(step.deps) == 0 && !step.alreadyDone {
   369  				step.alreadyDone = true
   370  				steps[name] = step
   371  				go step.run()
   372  			}
   373  		}
   374  	}
   375  
   376  	return add, add_10, forwardedInputs
   377  }