Documentation ¶
Index ¶
Constants ¶
const ( // AppServiceContextKey is the context key for getting the reference to the ApplicationService from the context passed to // a custom REST Handler AppServiceContextKey = "AppService" // ProfileSuffixPlaceholder is the placeholder text to use in an application service's service key if the // the name of the configuration profile used is to be used in the service's service key. // Only useful if the service has multiple configuration profiles to choose from at runtime. // Example: // const ( // serviceKey = "MyServiceName-" + interfaces.ProfileSuffixPlaceholder // ) ProfileSuffixPlaceholder = "<profile>" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AppFunction ¶
type AppFunction = func(appCxt AppFunctionContext, data interface{}) (bool, interface{})
AppFunction is a type alias for a application pipeline function. appCtx is a reference to the AppFunctionContext below. data is the data to be operated on by the function. bool return value indicates if the pipeline should continue executing (true) or not (false) interface{} is either the data to pass to the next function (continue executing) or an error (stop executing due to error) or nil (done executing)
type AppFunctionContext ¶
type AppFunctionContext interface { // CorrelationID returns the correlation ID associated with the context. CorrelationID() string // InputContentType returns the content type of the data that initiated the pipeline execution. Only useful when // the TargetType for the pipeline is []byte, otherwise the data with be the type specified by TargetType. InputContentType() string // SetResponseData sets the response data that will be returned to the trigger when pipeline execution is complete. SetResponseData(data []byte) // ResponseData returns the data that will be returned to the trigger when pipeline execution is complete. ResponseData() []byte // SetResponseContentType sets the content type that will be returned to the trigger when pipeline // execution is complete. SetResponseContentType(string) // ResponseContentType returns the content type that will be returned to the trigger when pipeline // execution is complete. ResponseContentType() string // SetRetryData set the data that is to be retried later as part of the Store and Forward capability. // Used when there was failure sending the data to an external source. SetRetryData(data []byte) // GetSecret returns the secret data from the secret store (secure or insecure) for the specified path. // An error is returned if the path is not found or any of the keys (if specified) are not found. // Omit keys if all secret data for the specified path is required. GetSecret(path string, keys ...string) (map[string]string, error) // SecretsLastUpdated returns that timestamp for when the secrets in the SecretStore where last updated. // Useful when a connection to external source needs to be redone when the credentials have been updated. SecretsLastUpdated() time.Time // LoggingClient returns the Logger client LoggingClient() logger.LoggingClient // EventClient returns the Event client. Note if Core Data is not specified in the Clients configuration, // this will return nil. EventClient() coredata.EventClient // CommandClient returns the Command client. Note if Support Command is not specified in the Clients configuration, // this will return nil. CommandClient() command.CommandClient // NotificationsClient returns the Notifications client. Note if Support Notifications is not specified in the // Clients configuration, this will return nil. NotificationsClient() notifications.NotificationsClient // PushToCoreData is a convenience function for adding new Event/Reading(s) to core data and // back onto the EdgeX MessageBus. This function uses the Event client and will result in an error if // Core Data is not specified in the Clients configuration PushToCoreData(deviceName string, readingName string, value interface{}) (*dtos.Event, error) }
AppFunctionContext defines the interface for an Edgex Application Service Context provided to App Functions when executing in the Functions Pipeline.
type ApplicationService ¶
type ApplicationService interface { // AddRoute a custom REST route to the application service's internal webserver // A reference to this ApplicationService is add the the context that is passed to the handler, which // can be retrieved using the `AppService` key AddRoute(route string, handler func(http.ResponseWriter, *http.Request), methods ...string) error // ApplicationSettings returns the key/value map of custom settings ApplicationSettings() map[string]string // GetAppSetting is a convenience function return a setting from the ApplicationSetting // section of the service configuration. // An error is returned if the specified setting is not found. GetAppSetting(setting string) (string, error) // GetAppSettingStrings is a convenience function that parses the value for the specified custom // application setting as a comma separated list. It returns the list of strings. // An error is returned if the specified setting is not found. GetAppSettingStrings(setting string) ([]string, error) // SetFunctionsPipeline set the functions pipeline with the specified list of Application Functions. // Note that the functions are executed in the order provided in the list. // An error is returned if the list is empty. SetFunctionsPipeline(transforms ...AppFunction) error // MakeItRun starts the configured trigger to allow the functions pipeline to execute when the trigger // receives data and starts the internal webserver. This is a long running function which does not return until // the service is stopped or MakeItStop() is called. // An error is returned if the trigger can not be create or initialized or if the internal webserver // encounters an error. MakeItRun() error // MakeItStop stops the configured trigger so that the functions pipeline no longer executes. // An error is returned MakeItStop() // RegisterCustomTriggerFactory registers a trigger factory for a custom trigger to be used. RegisterCustomTriggerFactory(name string, factory func(TriggerConfig) (Trigger, error)) error // Adds and returns a BackgroundPublisher which is used to publish asynchronously to the Edgex MessageBus. // Not valid for use with the HTTP or External MQTT triggers AddBackgroundPublisher(capacity int) BackgroundPublisher // GetSecret returns the secret data from the secret store (secure or insecure) for the specified path. // An error is returned if the path is not found or any of the keys (if specified) are not found. // Omit keys if all secret data for the specified path is required. GetSecret(path string, keys ...string) (map[string]string, error) // StoreSecret stores the specified secret data into the secret store (secure only) for the specified path // An error is returned if: // - Specified secret data is empty // - Not using the secure secret store, i.e. not valid with InsecureSecrets configuration // - Secure secret provider is not properly initialized // - Connection issues with Secret Store service. StoreSecret(path string, secretData map[string]string) error // LoggingClient returns the Logger client LoggingClient() logger.LoggingClient // EventClient returns the Event client. Note if Core Data is not specified in the Clients configuration, // this will return nil. EventClient() coredata.EventClient // CommandClient returns the Command client. Note if Support Command is not specified in the Clients configuration, // this will return nil. CommandClient() command.CommandClient // NotificationsClient returns the Notifications client. Note if Support Notifications is not specified in the // Clients configuration, this will return nil. NotificationsClient() notifications.NotificationsClient // RegistryClient() returns the Registry client. Note the registry must been enable, otherwise this will return nil. // Useful if service needs to add additional health checks or needs to get endpoint of another registered service RegistryClient() registry.Client // LoadConfigurablePipeline loads the function pipeline from configuration. // An error is returned if the configuration is not valid, i.e. missing required function parameters, // invalid function name, etc. // Only useful if pipeline from configuration is always defined in configuration as in App Service Configurable. LoadConfigurablePipeline() ([]AppFunction, error) // LoadCustomConfig loads the service's custom configuration from local file or the Configuration Provider (if enabled) // Configuration Provider will also be seeded with the custom configuration if service is using the Configuration Provider. // UpdateFromRaw interface will be called on the custom configuration when the configuration is loaded from the // Configuration Provider. LoadCustomConfig(config UpdatableConfig, sectionName string) error // ListenForCustomConfigChanges starts a listener on the Configuration Provider for changes to the specified // section of the custom configuration. When changes are received from the Configuration Provider the // UpdateWritableFromRaw interface will be called on the custom configuration to apply the updates and then signal // that the changes occurred via writableChanged. ListenForCustomConfigChanges(configToWatch interface{}, sectionName string, changedCallback func(interface{})) error }
ApplicationService defines the interface for an edgex Application Service
type BackgroundPublisher ¶
type BackgroundPublisher interface { // Publish provided message through the configured MessageBus output Publish(payload []byte, correlationID string, contentType string) }
BackgroundPublisher provides an interface to send messages from background processes through the service's configured MessageBus output
type Trigger ¶
type Trigger interface { // Initialize performs post creation initializations Initialize(wg *sync.WaitGroup, ctx context.Context, background <-chan types.MessageEnvelope) (bootstrap.Deferred, error) }
Trigger provides an abstract means to pass messages to the function pipeline
type TriggerConfig ¶
type TriggerConfig struct { Logger logger.LoggingClient ContextBuilder TriggerContextBuilder MessageProcessor TriggerMessageProcessor ConfigLoader TriggerConfigLoader }
TriggerConfig provides a container to pass context needed for user defined triggers
type TriggerConfigLoader ¶
type TriggerConfigLoader func(config UpdatableConfig, sectionName string) error
type TriggerContextBuilder ¶
type TriggerContextBuilder func(env types.MessageEnvelope) AppFunctionContext
TriggerContextBuilder provides an interface to construct an AppFunctionContext for message
type TriggerMessageProcessor ¶
type TriggerMessageProcessor func(ctx AppFunctionContext, envelope types.MessageEnvelope) error
TriggerMessageProcessor provides an interface that can be used by custom triggers to invoke the runtime
type UpdatableConfig ¶
type UpdatableConfig interface { bootstrapInterfaces.UpdatableConfig }
UpdatableConfig interface allows services to have custom configuration populated from configuration stored in the Configuration Provider (aka Consul). Services using custom configuration must implement this interface on their custom configuration, even if they do not use Configuration Provider. If they do not use the Configuration Provider they can have dummy implementation of this interface. This wraps the actual interface from go-mod-bootstrap so app service code doesn't have to have the additional direct import of go-mod-bootstrap.