mirror of
https://github.com/hanzoai/tasks.git
synced 2026-11-03 03:56:04 +00:00
Full module path rebrand from Temporal to Hanzo Tasks: - go.mod module: github.com/hanzoai/tasks - All internal Go imports updated (1906 files) - cmd/server renamed to cmd/tasksd - Binary name: tasksd (was temporal-server) - Docker images: hanzoai/tasks (was temporalio/server) - README rewritten with Hanzo Tasks branding - LLM.md created with integration notes - Makefile, goreleaser, CI workflows updated - go.temporal.io/sdk and go.temporal.io/api imports preserved (separate repos) Fork of Temporal.io (MIT license).
56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package replication
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/hanzoai/tasks/api/adminservice/v1"
|
|
"github.com/hanzoai/tasks/client"
|
|
"github.com/hanzoai/tasks/client/history"
|
|
"github.com/hanzoai/tasks/common/cluster"
|
|
"google.golang.org/grpc/metadata"
|
|
)
|
|
|
|
type (
|
|
StreamBiDirectionStreamClientProvider struct {
|
|
clusterMetadata cluster.Metadata
|
|
clientBean client.Bean
|
|
}
|
|
)
|
|
|
|
func NewStreamBiDirectionStreamClientProvider(
|
|
clusterMetadata cluster.Metadata,
|
|
clientBean client.Bean,
|
|
) *StreamBiDirectionStreamClientProvider {
|
|
return &StreamBiDirectionStreamClientProvider{
|
|
clusterMetadata: clusterMetadata,
|
|
clientBean: clientBean,
|
|
}
|
|
}
|
|
|
|
func (p *StreamBiDirectionStreamClientProvider) Get(
|
|
ctx context.Context,
|
|
clientShardKey ClusterShardKey,
|
|
serverShardKey ClusterShardKey,
|
|
) (BiDirectionStreamClient[*adminservice.StreamWorkflowReplicationMessagesRequest, *adminservice.StreamWorkflowReplicationMessagesResponse], error) {
|
|
allClusterInfo := p.clusterMetadata.GetAllClusterInfo()
|
|
clusterName, _, err := ClusterIDToClusterNameShardCount(allClusterInfo, serverShardKey.ClusterID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
adminClient, err := p.clientBean.GetRemoteAdminClient(clusterName)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ctx = metadata.NewOutgoingContext(ctx, history.EncodeClusterShardMD(
|
|
history.ClusterShardID{
|
|
ClusterID: clientShardKey.ClusterID,
|
|
ShardID: clientShardKey.ShardID,
|
|
},
|
|
history.ClusterShardID{
|
|
ClusterID: serverShardKey.ClusterID,
|
|
ShardID: serverShardKey.ShardID,
|
|
},
|
|
))
|
|
return adminClient.StreamWorkflowReplicationMessages(ctx)
|
|
}
|