Files
tasks/service/history/replication/grpc_stream_client.go
zeekay 5a601d081b rebrand: go.temporal.io/server -> github.com/hanzoai/tasks
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).
2026-03-19 10:36:40 -07:00

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)
}