public string GetSessionToken(string collectionLink) { bool isNameBased; bool isFeed; string resourceTypeString; string resourceIdOrFullName; ConcurrentDictionary <string, ISessionToken> partitionKeyRangeIdToTokenMap = null; if (PathsHelper.TryParsePathSegments(collectionLink, out isFeed, out resourceTypeString, out resourceIdOrFullName, out isNameBased)) { if (isNameBased) { string collectionName = PathsHelper.GetCollectionPath(resourceIdOrFullName); this.sessionTokensNameBased.TryGetValue(collectionName, out partitionKeyRangeIdToTokenMap); } else { ResourceId resourceId = ResourceId.Parse(resourceIdOrFullName); if (resourceId.DocumentCollection != 0) { this.sessionTokens.TryGetValue(resourceId.UniqueDocumentCollectionId, out partitionKeyRangeIdToTokenMap); } } } if (partitionKeyRangeIdToTokenMap == null) { return(string.Empty); } return(SessionContainer.GetSessionTokenString(partitionKeyRangeIdToTokenMap)); }
private static string ResolveGlobalSessionToken(SessionContainerState self, DocumentServiceRequest request) { ConcurrentDictionary <string, ISessionToken> partitionKeyRangeIdToTokenMap = SessionContainer.GetPartitionKeyRangeIdToTokenMap(self, request); if (partitionKeyRangeIdToTokenMap != null) { return(SessionContainer.GetSessionTokenString(partitionKeyRangeIdToTokenMap)); } return(string.Empty); }
private static string GetSessionToken(SessionContainerState self, string collectionLink) { bool arePathSegmentsParsed = PathsHelper.TryParsePathSegments( collectionLink, out _, out _, out string resourceIdOrFullName, out bool isNameBased); ConcurrentDictionary <string, ISessionToken> partitionKeyRangeIdToTokenMap = null; if (arePathSegmentsParsed) { ulong?maybeRID = null; if (isNameBased) { string collectionName = PathsHelper.GetCollectionPath(resourceIdOrFullName); if (self.collectionNameByResourceId.TryGetValue(collectionName, out ulong rid)) { maybeRID = rid; } } else { ResourceId resourceId = ResourceId.Parse(resourceIdOrFullName); if (resourceId.DocumentCollection != 0) { maybeRID = resourceId.UniqueDocumentCollectionId; } } if (maybeRID.HasValue) { self.sessionTokensRIDBased.TryGetValue(maybeRID.Value, out partitionKeyRangeIdToTokenMap); } } if (partitionKeyRangeIdToTokenMap == null) { return(string.Empty); } return(SessionContainer.GetSessionTokenString(partitionKeyRangeIdToTokenMap)); }