public IdSpan GetGrainKeyId(GrainBindings grainBindings, StreamId streamId) { string keyType = null; bool includeNamespaceInGrainId = false; foreach (var grainBinding in grainBindings.Bindings) { if (!grainBinding.TryGetValue(WellKnownGrainTypeProperties.BindingTypeKey, out var type) || !string.Equals(type, WellKnownGrainTypeProperties.StreamBindingTypeValue, StringComparison.Ordinal)) { continue; } if (grainBinding.TryGetValue(WellKnownGrainTypeProperties.LegacyGrainKeyType, out keyType)) { if (grainBinding.TryGetValue(WellKnownGrainTypeProperties.StreamBindingIncludeNamespaceKey, out var value) && string.Equals(value, "true", StringComparison.OrdinalIgnoreCase)) { includeNamespaceInGrainId = true; } } } return(keyType switch { nameof(Guid) => GetGuidKey(streamId, includeNamespaceInGrainId), nameof(Int64) => GetIntegerKey(streamId, includeNamespaceInGrainId), _ => GetKey(streamId), // null or string });
public BroadcastChannelSubscriber(GrainBindings grainBindings, IChannelIdMapper channelIdMapper) { GrainBindings = grainBindings; this.channelIdMapper = channelIdMapper; }
public StreamSubscriber(GrainBindings grainBindings, IStreamIdMapper streamIdMapper) { this.GrainBindings = grainBindings; this.streamIdMapper = streamIdMapper; }