drone/events/options.go

69 lines
2.2 KiB
Go

// Copyright 2023 Harness, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package events
import (
"time"
"github.com/harness/gitness/stream"
)
/*
* Expose event package options to simplify usage for consumers by hiding the stream package.
* Since we only forward the options, event options are simply aliases of stream options.
*/
// ReaderOption can be used to configure event readers.
type ReaderOption stream.ConsumerOption
func toStreamConsumerOptions(opts []ReaderOption) []stream.ConsumerOption {
streamOpts := make([]stream.ConsumerOption, len(opts))
for i, opt := range opts {
streamOpts[i] = stream.ConsumerOption(opt)
}
return streamOpts
}
// WithConcurrency sets up the concurrency of the reader.
func WithConcurrency(concurrency int) ReaderOption {
return stream.WithConcurrency(concurrency)
}
// WithHandlerOptions sets up the default options for event handlers.
func WithHandlerOptions(opts ...HandlerOption) ReaderOption {
return stream.WithHandlerOptions(toStreamHandlerOptions(opts)...)
}
// HandlerOption can be used to configure event handlers.
type HandlerOption stream.HandlerOption
func toStreamHandlerOptions(opts []HandlerOption) []stream.HandlerOption {
streamOpts := make([]stream.HandlerOption, len(opts))
for i, opt := range opts {
streamOpts[i] = stream.HandlerOption(opt)
}
return streamOpts
}
// WithMaxRetries can be used to set the max retry count for a specific event handler.
func WithMaxRetries(maxRetries int) HandlerOption {
return stream.WithMaxRetries(maxRetries)
}
// WithIdleTimeout can be used to set the idle timeout for a specific event handler.
func WithIdleTimeout(timeout time.Duration) HandlerOption {
return stream.WithIdleTimeout(timeout)
}