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 }