You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@seata.apache.org by pt...@apache.org on 2024/03/02 13:20:22 UTC
(incubator-seata-go) branch feature/saga updated: feature: add default implementation for StateMachineConfig (#669)
This is an automated email from the ASF dual-hosted git repository.
ptyin pushed a commit to branch feature/saga
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/feature/saga by this push:
new 540dab4e feature: add default implementation for StateMachineConfig (#669)
540dab4e is described below
commit 540dab4ea4847f1e7ff30b833324d2f9701fff05
Author: Xiangkun Yin <32...@users.noreply.github.com>
AuthorDate: Sat Mar 2 21:20:19 2024 +0800
feature: add default implementation for StateMachineConfig (#669)
---
.../engine/default_statemachine_config.go | 123 +++++++++++++++++++++
1 file changed, 123 insertions(+)
diff --git a/pkg/saga/statemachine/engine/default_statemachine_config.go b/pkg/saga/statemachine/engine/default_statemachine_config.go
new file mode 100644
index 00000000..2d7b1d8e
--- /dev/null
+++ b/pkg/saga/statemachine/engine/default_statemachine_config.go
@@ -0,0 +1,123 @@
+package engine
+
+import (
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/events"
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/expr"
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/invoker"
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/sequence"
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/status_decision"
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/store"
+)
+
+const (
+ DefaultTransOperTimeout = 60000 * 30
+ DefaultServiceInvokeTimeout = 60000 * 5
+)
+
+type DefaultStateMachineConfig struct {
+ // Configuration
+ transOperationTimeout int
+ serviceInvokeTimeout int
+ charset string
+ defaultTenantId string
+
+ // Components
+
+ // Store related components
+ stateLogRepository store.StateLogRepository
+ stateLogStore store.StateLogStore
+ stateLangStore store.StateLangStore
+ stateMachineRepository store.StateMachineRepository
+
+ // Expression related components
+ expressionFactoryManager expr.ExpressionFactoryManager
+ expressionResolver expr.ExpressionResolver
+
+ // Invoker related components
+ serviceInvokerManager invoker.ServiceInvokerManager
+ scriptInvokerManager invoker.ScriptInvokerManager
+
+ // Other components
+ statusDecisionStrategy status_decision.StatusDecisionStrategy
+ seqGenerator sequence.SeqGenerator
+}
+
+func (c *DefaultStateMachineConfig) StateLogRepository() store.StateLogRepository {
+ return c.stateLogRepository
+}
+
+func (c *DefaultStateMachineConfig) StateMachineRepository() store.StateMachineRepository {
+ return c.stateMachineRepository
+}
+
+func (c *DefaultStateMachineConfig) StateLogStore() store.StateLogStore {
+ return c.stateLogStore
+}
+
+func (c *DefaultStateMachineConfig) StateLangStore() store.StateLangStore {
+ return c.stateLangStore
+}
+
+func (c *DefaultStateMachineConfig) ExpressionFactoryManager() expr.ExpressionFactoryManager {
+ return c.expressionFactoryManager
+}
+
+func (c *DefaultStateMachineConfig) ExpressionResolver() expr.ExpressionResolver {
+ return c.expressionResolver
+}
+
+func (c *DefaultStateMachineConfig) SeqGenerator() sequence.SeqGenerator {
+ return c.seqGenerator
+}
+
+func (c *DefaultStateMachineConfig) StatusDecisionStrategy() status_decision.StatusDecisionStrategy {
+ return c.statusDecisionStrategy
+}
+
+func (c *DefaultStateMachineConfig) EventPublisher() events.EventPublisher {
+ //TODO implement me
+ panic("implement me")
+}
+
+func (c *DefaultStateMachineConfig) AsyncEventPublisher() events.EventPublisher {
+ //TODO implement me
+ panic("implement me")
+}
+
+func (c *DefaultStateMachineConfig) ServiceInvokerManager() invoker.ServiceInvokerManager {
+ return c.serviceInvokerManager
+}
+
+func (c *DefaultStateMachineConfig) ScriptInvokerManager() invoker.ScriptInvokerManager {
+ return c.scriptInvokerManager
+}
+
+func (c *DefaultStateMachineConfig) CharSet() string {
+ return c.charset
+}
+
+func (c *DefaultStateMachineConfig) SetCharSet(charset string) {
+ c.charset = charset
+}
+
+func (c *DefaultStateMachineConfig) DefaultTenantId() string {
+ return c.defaultTenantId
+}
+
+func (c *DefaultStateMachineConfig) TransOperationTimeout() int {
+ return c.transOperationTimeout
+}
+
+func (c *DefaultStateMachineConfig) ServiceInvokeTimeout() int {
+ return c.serviceInvokeTimeout
+}
+
+func NewDefaultStateMachineConfig() *DefaultStateMachineConfig {
+ c := &DefaultStateMachineConfig{
+ transOperationTimeout: DefaultTransOperTimeout,
+ serviceInvokeTimeout: DefaultServiceInvokeTimeout,
+ charset: "UTF-8",
+ defaultTenantId: "000001",
+ }
+ return c
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org