func()

in sdks/go/pkg/beam/core/runtime/exec/fn_arity.go [32:251]


func (n *invoker) initCall() {
	switch fn := n.fn.Fn.(type) {

	case reflectx.Func0x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call0x0()
			return nil, nil
		}

	case reflectx.Func1x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call1x0(n.args[0])
			return nil, nil
		}

	case reflectx.Func2x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call2x0(n.args[0], n.args[1])
			return nil, nil
		}

	case reflectx.Func3x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call3x0(n.args[0], n.args[1], n.args[2])
			return nil, nil
		}

	case reflectx.Func4x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call4x0(n.args[0], n.args[1], n.args[2], n.args[3])
			return nil, nil
		}

	case reflectx.Func5x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call5x0(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4])
			return nil, nil
		}

	case reflectx.Func6x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call6x0(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5])
			return nil, nil
		}

	case reflectx.Func7x0:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			fn.Call7x0(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5], n.args[6])
			return nil, nil
		}

	case reflectx.Func0x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call0x1()
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func1x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call1x1(n.args[0])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func2x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call2x1(n.args[0], n.args[1])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func3x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call3x1(n.args[0], n.args[1], n.args[2])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func4x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call4x1(n.args[0], n.args[1], n.args[2], n.args[3])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func5x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call5x1(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func6x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call6x1(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func7x1:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0 := fn.Call7x1(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5], n.args[6])
			return n.ret1(ws, ts, r0)
		}

	case reflectx.Func0x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call0x2()
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func1x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call1x2(n.args[0])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func2x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call2x2(n.args[0], n.args[1])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func3x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call3x2(n.args[0], n.args[1], n.args[2])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func4x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call4x2(n.args[0], n.args[1], n.args[2], n.args[3])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func5x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call5x2(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func6x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call6x2(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func7x2:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1 := fn.Call7x2(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5], n.args[6])
			return n.ret2(ws, ts, r0, r1)
		}

	case reflectx.Func0x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call0x3()
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func1x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call1x3(n.args[0])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func2x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call2x3(n.args[0], n.args[1])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func3x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call3x3(n.args[0], n.args[1], n.args[2])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func4x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call4x3(n.args[0], n.args[1], n.args[2], n.args[3])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func5x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call5x3(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func6x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call6x3(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	case reflectx.Func7x3:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			r0, r1, r2 := fn.Call7x3(n.args[0], n.args[1], n.args[2], n.args[3], n.args[4], n.args[5], n.args[6])
			return n.ret3(ws, ts, r0, r1, r2)
		}

	default:
		n.call = func(ws []typex.Window, ts typex.EventTime) (*FullValue, error) {
			ret := n.fn.Fn.Call(n.args)
			if n.outErrIdx >= 0 && ret[n.outErrIdx] != nil {
				return nil, ret[n.outErrIdx].(error)
			}

			// (5) Return direct output, if any. Input timestamp and windows are implicitly
			// propagated.
			switch len(ret) {
			case 0:
				return nil, nil
			case 1:
				return n.ret1(ws, ts, ret[0])
			case 2:
				return n.ret2(ws, ts, ret[0], ret[1])
			case 3:
				return n.ret3(ws, ts, ret[0], ret[1], ret[2])
			case 4:
				return n.ret4(ws, ts, ret[0], ret[1], ret[2], ret[3])
			}
			panic(fmt.Sprintf("invoker: %v has > 4 return values, which is not permitted", n.fn.Fn.Name()))
		}
	}
}