peridot/vendor/go.temporal.io/sdk/internal/interceptor_base.go
2022-07-07 22:13:21 +02:00

412 lines
15 KiB
Go

// The MIT License
//
// Copyright (c) 2021 Temporal Technologies Inc. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
package internal
import (
"context"
"time"
"go.temporal.io/sdk/converter"
"go.temporal.io/sdk/internal/common/metrics"
"go.temporal.io/sdk/log"
)
// InterceptorBase is a default implementation of Interceptor meant for
// embedding. See documentation in the interceptor package for more details.
type InterceptorBase struct {
ClientInterceptorBase
WorkerInterceptorBase
}
// WorkerInterceptorBase is a default implementation of WorkerInterceptor meant
// for embedding. See documentation in the interceptor package for more details.
type WorkerInterceptorBase struct{}
var _ WorkerInterceptor = &WorkerInterceptorBase{}
// InterceptActivity implements WorkerInterceptor.InterceptActivity.
func (*WorkerInterceptorBase) InterceptActivity(
ctx context.Context,
next ActivityInboundInterceptor,
) ActivityInboundInterceptor {
return &ActivityInboundInterceptorBase{Next: next}
}
// InterceptWorkflow implements WorkerInterceptor.InterceptWorkflow.
func (*WorkerInterceptorBase) InterceptWorkflow(
ctx Context,
next WorkflowInboundInterceptor,
) WorkflowInboundInterceptor {
return &WorkflowInboundInterceptorBase{Next: next}
}
func (*WorkerInterceptorBase) mustEmbedWorkerInterceptorBase() {}
// ActivityInboundInterceptorBase is a default implementation of
// ActivityInboundInterceptor meant for embedding. See documentation in the
// interceptor package for more details.
type ActivityInboundInterceptorBase struct {
Next ActivityInboundInterceptor
}
var _ ActivityInboundInterceptor = &ActivityInboundInterceptorBase{}
// Init implements ActivityInboundInterceptor.Init.
func (a *ActivityInboundInterceptorBase) Init(outbound ActivityOutboundInterceptor) error {
return a.Next.Init(outbound)
}
// ExecuteActivity implements ActivityInboundInterceptor.ExecuteActivity.
func (a *ActivityInboundInterceptorBase) ExecuteActivity(
ctx context.Context,
in *ExecuteActivityInput,
) (interface{}, error) {
return a.Next.ExecuteActivity(ctx, in)
}
func (*ActivityInboundInterceptorBase) mustEmbedActivityInboundInterceptorBase() {}
// ActivityOutboundInterceptorBase is a default implementation of
// ActivityOutboundInterceptor meant for embedding. See documentation in the
// interceptor package for more details.
type ActivityOutboundInterceptorBase struct {
Next ActivityOutboundInterceptor
}
var _ ActivityOutboundInterceptor = &ActivityOutboundInterceptorBase{}
// GetInfo implements ActivityOutboundInterceptor.GetInfo.
func (a *ActivityOutboundInterceptorBase) GetInfo(ctx context.Context) ActivityInfo {
return a.Next.GetInfo(ctx)
}
// GetLogger implements ActivityOutboundInterceptor.GetLogger.
func (a *ActivityOutboundInterceptorBase) GetLogger(ctx context.Context) log.Logger {
return a.Next.GetLogger(ctx)
}
// GetMetricsHandler implements ActivityOutboundInterceptor.GetMetricsHandler.
func (a *ActivityOutboundInterceptorBase) GetMetricsHandler(ctx context.Context) metrics.Handler {
return a.Next.GetMetricsHandler(ctx)
}
// RecordHeartbeat implements ActivityOutboundInterceptor.RecordHeartbeat.
func (a *ActivityOutboundInterceptorBase) RecordHeartbeat(ctx context.Context, details ...interface{}) {
a.Next.RecordHeartbeat(ctx, details...)
}
// HasHeartbeatDetails implements
// ActivityOutboundInterceptor.HasHeartbeatDetails.
func (a *ActivityOutboundInterceptorBase) HasHeartbeatDetails(ctx context.Context) bool {
return a.Next.HasHeartbeatDetails(ctx)
}
// GetHeartbeatDetails implements
// ActivityOutboundInterceptor.GetHeartbeatDetails.
func (a *ActivityOutboundInterceptorBase) GetHeartbeatDetails(ctx context.Context, d ...interface{}) error {
return a.Next.GetHeartbeatDetails(ctx, d...)
}
// GetWorkerStopChannel implements
// ActivityOutboundInterceptor.GetWorkerStopChannel.
func (a *ActivityOutboundInterceptorBase) GetWorkerStopChannel(ctx context.Context) <-chan struct{} {
return a.Next.GetWorkerStopChannel(ctx)
}
func (*ActivityOutboundInterceptorBase) mustEmbedActivityOutboundInterceptorBase() {}
// WorkflowInboundInterceptorBase is a default implementation of
// WorkflowInboundInterceptor meant for embedding. See documentation in the
// interceptor package for more details.
type WorkflowInboundInterceptorBase struct {
Next WorkflowInboundInterceptor
}
var _ WorkflowInboundInterceptor = &WorkflowInboundInterceptorBase{}
// Init implements WorkflowInboundInterceptor.Init.
func (w *WorkflowInboundInterceptorBase) Init(outbound WorkflowOutboundInterceptor) error {
return w.Next.Init(outbound)
}
// ExecuteWorkflow implements WorkflowInboundInterceptor.ExecuteWorkflow.
func (w *WorkflowInboundInterceptorBase) ExecuteWorkflow(ctx Context, in *ExecuteWorkflowInput) (interface{}, error) {
return w.Next.ExecuteWorkflow(ctx, in)
}
// HandleSignal implements WorkflowInboundInterceptor.HandleSignal.
func (w *WorkflowInboundInterceptorBase) HandleSignal(ctx Context, in *HandleSignalInput) error {
return w.Next.HandleSignal(ctx, in)
}
// HandleQuery implements WorkflowInboundInterceptor.HandleQuery.
func (w *WorkflowInboundInterceptorBase) HandleQuery(ctx Context, in *HandleQueryInput) (interface{}, error) {
return w.Next.HandleQuery(ctx, in)
}
func (*WorkflowInboundInterceptorBase) mustEmbedWorkflowInboundInterceptorBase() {}
// WorkflowOutboundInterceptorBase is a default implementation of
// WorkflowOutboundInterceptor meant for embedding. See documentation in the
// interceptor package for more details.
type WorkflowOutboundInterceptorBase struct {
Next WorkflowOutboundInterceptor
}
var _ WorkflowOutboundInterceptor = &WorkflowOutboundInterceptorBase{}
// Go implements WorkflowOutboundInterceptor.Go.
func (w *WorkflowOutboundInterceptorBase) Go(ctx Context, name string, f func(ctx Context)) Context {
return w.Next.Go(ctx, name, f)
}
// ExecuteActivity implements WorkflowOutboundInterceptor.ExecuteActivity.
func (w *WorkflowOutboundInterceptorBase) ExecuteActivity(ctx Context, activityType string, args ...interface{}) Future {
return w.Next.ExecuteActivity(ctx, activityType, args...)
}
// ExecuteLocalActivity implements WorkflowOutboundInterceptor.ExecuteLocalActivity.
func (w *WorkflowOutboundInterceptorBase) ExecuteLocalActivity(
ctx Context,
activityType string,
args ...interface{},
) Future {
return w.Next.ExecuteLocalActivity(ctx, activityType, args...)
}
// ExecuteChildWorkflow implements WorkflowOutboundInterceptor.ExecuteChildWorkflow.
func (w *WorkflowOutboundInterceptorBase) ExecuteChildWorkflow(
ctx Context,
childWorkflowType string,
args ...interface{},
) ChildWorkflowFuture {
return w.Next.ExecuteChildWorkflow(ctx, childWorkflowType, args...)
}
// GetInfo implements WorkflowOutboundInterceptor.GetInfo.
func (w *WorkflowOutboundInterceptorBase) GetInfo(ctx Context) *WorkflowInfo {
return w.Next.GetInfo(ctx)
}
// GetLogger implements WorkflowOutboundInterceptor.GetLogger.
func (w *WorkflowOutboundInterceptorBase) GetLogger(ctx Context) log.Logger {
return w.Next.GetLogger(ctx)
}
// GetMetricsHandler implements WorkflowOutboundInterceptor.GetMetricsHandler.
func (w *WorkflowOutboundInterceptorBase) GetMetricsHandler(ctx Context) metrics.Handler {
return w.Next.GetMetricsHandler(ctx)
}
// Now implements WorkflowOutboundInterceptor.Now.
func (w *WorkflowOutboundInterceptorBase) Now(ctx Context) time.Time {
return w.Next.Now(ctx)
}
// NewTimer implements WorkflowOutboundInterceptor.NewTimer.
func (w *WorkflowOutboundInterceptorBase) NewTimer(ctx Context, d time.Duration) Future {
return w.Next.NewTimer(ctx, d)
}
// Sleep implements WorkflowOutboundInterceptor.Sleep.
func (w *WorkflowOutboundInterceptorBase) Sleep(ctx Context, d time.Duration) (err error) {
return w.Next.Sleep(ctx, d)
}
// RequestCancelExternalWorkflow implements
// WorkflowOutboundInterceptor.RequestCancelExternalWorkflow.
func (w *WorkflowOutboundInterceptorBase) RequestCancelExternalWorkflow(
ctx Context,
workflowID string,
runID string,
) Future {
return w.Next.RequestCancelExternalWorkflow(ctx, workflowID, runID)
}
// SignalExternalWorkflow implements
// WorkflowOutboundInterceptor.SignalExternalWorkflow.
func (w *WorkflowOutboundInterceptorBase) SignalExternalWorkflow(
ctx Context,
workflowID string,
runID string,
signalName string,
arg interface{},
) Future {
return w.Next.SignalExternalWorkflow(ctx, workflowID, runID, signalName, arg)
}
// SignalChildWorkflow implements
// WorkflowOutboundInterceptor.SignalChildWorkflow.
func (w *WorkflowOutboundInterceptorBase) SignalChildWorkflow(
ctx Context,
workflowID string,
signalName string,
arg interface{},
) Future {
return w.Next.SignalChildWorkflow(ctx, workflowID, signalName, arg)
}
// UpsertSearchAttributes implements
// WorkflowOutboundInterceptor.UpsertSearchAttributes.
func (w *WorkflowOutboundInterceptorBase) UpsertSearchAttributes(ctx Context, attributes map[string]interface{}) error {
return w.Next.UpsertSearchAttributes(ctx, attributes)
}
// GetSignalChannel implements WorkflowOutboundInterceptor.GetSignalChannel.
func (w *WorkflowOutboundInterceptorBase) GetSignalChannel(ctx Context, signalName string) ReceiveChannel {
return w.Next.GetSignalChannel(ctx, signalName)
}
// SideEffect implements WorkflowOutboundInterceptor.SideEffect.
func (w *WorkflowOutboundInterceptorBase) SideEffect(
ctx Context,
f func(ctx Context) interface{},
) converter.EncodedValue {
return w.Next.SideEffect(ctx, f)
}
// MutableSideEffect implements WorkflowOutboundInterceptor.MutableSideEffect.
func (w *WorkflowOutboundInterceptorBase) MutableSideEffect(
ctx Context,
id string,
f func(ctx Context) interface{},
equals func(a, b interface{}) bool,
) converter.EncodedValue {
return w.Next.MutableSideEffect(ctx, id, f, equals)
}
// GetVersion implements WorkflowOutboundInterceptor.GetVersion.
func (w *WorkflowOutboundInterceptorBase) GetVersion(
ctx Context,
changeID string,
minSupported Version,
maxSupported Version,
) Version {
return w.Next.GetVersion(ctx, changeID, minSupported, maxSupported)
}
// SetQueryHandler implements WorkflowOutboundInterceptor.SetQueryHandler.
func (w *WorkflowOutboundInterceptorBase) SetQueryHandler(ctx Context, queryType string, handler interface{}) error {
return w.Next.SetQueryHandler(ctx, queryType, handler)
}
// IsReplaying implements WorkflowOutboundInterceptor.IsReplaying.
func (w *WorkflowOutboundInterceptorBase) IsReplaying(ctx Context) bool {
return w.Next.IsReplaying(ctx)
}
// HasLastCompletionResult implements
// WorkflowOutboundInterceptor.HasLastCompletionResult.
func (w *WorkflowOutboundInterceptorBase) HasLastCompletionResult(ctx Context) bool {
return w.Next.HasLastCompletionResult(ctx)
}
// GetLastCompletionResult implements
// WorkflowOutboundInterceptor.GetLastCompletionResult.
func (w *WorkflowOutboundInterceptorBase) GetLastCompletionResult(ctx Context, d ...interface{}) error {
return w.Next.GetLastCompletionResult(ctx, d...)
}
// GetLastError implements WorkflowOutboundInterceptor.GetLastError.
func (w *WorkflowOutboundInterceptorBase) GetLastError(ctx Context) error {
return w.Next.GetLastError(ctx)
}
// NewContinueAsNewError implements
// WorkflowOutboundInterceptor.NewContinueAsNewError.
func (w *WorkflowOutboundInterceptorBase) NewContinueAsNewError(
ctx Context,
wfn interface{},
args ...interface{},
) error {
return w.Next.NewContinueAsNewError(ctx, wfn, args...)
}
func (*WorkflowOutboundInterceptorBase) mustEmbedWorkflowOutboundInterceptorBase() {}
// ClientInterceptorBase is a default implementation of ClientInterceptor meant
// for embedding. See documentation in the interceptor package for more details.
type ClientInterceptorBase struct{}
var _ ClientInterceptor = &ClientInterceptorBase{}
// InterceptClient implements ClientInterceptor.InterceptClient.
func (*ClientInterceptorBase) InterceptClient(
next ClientOutboundInterceptor,
) ClientOutboundInterceptor {
return &ClientOutboundInterceptorBase{Next: next}
}
func (*ClientInterceptorBase) mustEmbedClientInterceptorBase() {}
// ClientOutboundInterceptorBase is a default implementation of
// ClientOutboundInterceptor meant for embedding. See documentation in the
// interceptor package for more details.
type ClientOutboundInterceptorBase struct {
Next ClientOutboundInterceptor
}
var _ ClientOutboundInterceptor = &ClientOutboundInterceptorBase{}
// ExecuteWorkflow implements ClientOutboundInterceptor.ExecuteWorkflow.
func (c *ClientOutboundInterceptorBase) ExecuteWorkflow(
ctx context.Context,
in *ClientExecuteWorkflowInput,
) (WorkflowRun, error) {
return c.Next.ExecuteWorkflow(ctx, in)
}
// SignalWorkflow implements ClientOutboundInterceptor.SignalWorkflow.
func (c *ClientOutboundInterceptorBase) SignalWorkflow(ctx context.Context, in *ClientSignalWorkflowInput) error {
return c.Next.SignalWorkflow(ctx, in)
}
// SignalWithStartWorkflow implements
// ClientOutboundInterceptor.SignalWithStartWorkflow.
func (c *ClientOutboundInterceptorBase) SignalWithStartWorkflow(
ctx context.Context,
in *ClientSignalWithStartWorkflowInput,
) (WorkflowRun, error) {
return c.Next.SignalWithStartWorkflow(ctx, in)
}
// CancelWorkflow implements ClientOutboundInterceptor.CancelWorkflow.
func (c *ClientOutboundInterceptorBase) CancelWorkflow(ctx context.Context, in *ClientCancelWorkflowInput) error {
return c.Next.CancelWorkflow(ctx, in)
}
// TerminateWorkflow implements ClientOutboundInterceptor.TerminateWorkflow.
func (c *ClientOutboundInterceptorBase) TerminateWorkflow(ctx context.Context, in *ClientTerminateWorkflowInput) error {
return c.Next.TerminateWorkflow(ctx, in)
}
// QueryWorkflow implements ClientOutboundInterceptor.QueryWorkflow.
func (c *ClientOutboundInterceptorBase) QueryWorkflow(
ctx context.Context,
in *ClientQueryWorkflowInput,
) (converter.EncodedValue, error) {
return c.Next.QueryWorkflow(ctx, in)
}
func (*ClientOutboundInterceptorBase) mustEmbedClientOutboundInterceptorBase() {}