diff --git a/internal/cmd/assets/.claude/hooks/README.md b/internal/cmd/assets/.claude/hooks/README.md index d131e041..dead76f2 100644 --- a/internal/cmd/assets/.claude/hooks/README.md +++ b/internal/cmd/assets/.claude/hooks/README.md @@ -17,12 +17,15 @@ Claude Code 钩子系统,用于自动化 ABCoder 代码分析工作流。 **功能**: 自动检测项目语言并生成最新 AST 到 `~/.asts/` 目录( `~/.claude.json` 需要配置abcoder目录 `abcoder mcp ${HOME}/.asts` ) -- 自动检测 Go/TypeScript 项目 -- 执行 `abcoder parse go/ts . -o ~/.asts/repo.json` 生成 AST 文件 +- 自动检测 Go/TypeScript/Java 项目 +- 执行 `abcoder parse go/ts/java . -o ~/.asts/repo.json` 生成 AST 文件 **检测规则**: - Go: 存在 `go.mod` 或 `main.go` - TypeScript: 存在 `package.json`, `tsconfig.json` 或 `.ts/.tsx` 文件 +- Java (Maven): 存在 `pom.xml` +- Java (Gradle): 存在 `settings.gradle(.kts)` 或 `build.gradle(.kts)` +- Java (Monorepo): 根目录无构建文件时,向下搜索 2 层查找 `pom.xml` / `build.gradle(.kts)` ### 2. prompt.sh (PostToolUse) diff --git a/internal/cmd/assets/.claude/hooks/abcoder/parse.sh b/internal/cmd/assets/.claude/hooks/abcoder/parse.sh index 3661e93c..9079659b 100755 --- a/internal/cmd/assets/.claude/hooks/abcoder/parse.sh +++ b/internal/cmd/assets/.claude/hooks/abcoder/parse.sh @@ -55,7 +55,47 @@ detect_project_info() { return 0 fi - # 4. 未检测到目标语言 + # 4. 检测 Java 项目(Maven / Gradle,支持 monorepo) + # 4.1 Maven:根目录有 pom.xml + if [[ -f "${target_dir}/pom.xml" ]]; then + local artifact_id=$(grep -m1 '' "${target_dir}/pom.xml" | sed 's/.*\(.*\)<\/artifactId>.*/\1/' | tr -d '[:space:]') + if [[ -n "$artifact_id" ]]; then + echo "java|${artifact_id}" + return 0 + fi + echo "java|$(get_basename "$target_dir")" + return 0 + fi + + # 4.2 Gradle:settings.gradle(.kts) 表示多模块项目 + if [[ -f "${target_dir}/settings.gradle" || -f "${target_dir}/settings.gradle.kts" ]]; then + local settings_file="${target_dir}/settings.gradle" + if [[ ! -f "$settings_file" ]]; then + settings_file="${target_dir}/settings.gradle.kts" + fi + local root_name=$(grep -oP "rootProject\.name\s*=\s*['\"]\\K[^'\"]+" "$settings_file" 2>/dev/null) + if [[ -n "$root_name" ]]; then + echo "java|${root_name}" + return 0 + fi + echo "java|$(get_basename "$target_dir")" + return 0 + fi + + # 4.3 Gradle 单模块(仅 build.gradle 无 settings) + if [[ -f "${target_dir}/build.gradle" || -f "${target_dir}/build.gradle.kts" ]]; then + echo "java|$(get_basename "$target_dir")" + return 0 + fi + + # 4.4 Maven/Gradle monorepo fallback:根目录无构建文件但子目录有 + local java_build_file=$(find "${target_dir}" -maxdepth 2 -type f \( -name "pom.xml" -o -name "build.gradle" -o -name "build.gradle.kts" \) | head -1) + if [[ -n "$java_build_file" ]]; then + echo "java|$(get_basename "$target_dir")" + return 0 + fi + + # 5. 未检测到目标语言 echo "unknown|$(get_basename "$target_dir")" return 1 } @@ -155,7 +195,7 @@ if [[ "$project_lang" != "unknown" ]]; then jq -n --arg code "$exit_code" --arg err "$error_msg" --arg lang "$project_lang" --arg repo "$project_identifier" '{ "decision": "block", - "reason": ("abcoder parse 失败(语言:" + $lang + ",仓库:" + $repo + ",退出码: " + $code + ")。错误信息:\n" + $err + "\n\n可能的原因:\n1. 项目配置文件有问题(Go: go.mod;TS: tsconfig.json)\n2. 缺少依赖包\n3. 代码语法错误\n\n建议:\n- Go 项目:运行 'go mod tidy' 和 'go build' 检查\n- TS 项目:运行 'npm install' 和 'tsc --noEmit' 检查"), + "reason": ("abcoder parse 失败(语言:" + $lang + ",仓库:" + $repo + ",退出码: " + $code + ")。错误信息:\n" + $err + "\n\n可能的原因:\n1. 项目配置文件有问题(Go: go.mod;TS: tsconfig.json;Java: pom.xml/build.gradle)\n2. 缺少依赖包\n3. 代码语法错误\n\n建议:\n- Go 项目:运行 'go mod tidy' 和 'go build' 检查\n- TS 项目:运行 'npm install' 和 'tsc --noEmit' 检查\n- Java 项目:运行 'mvn compile' 或 'gradle build' 检查"), "hookSpecificOutput": { "hookEventName": "PreToolUse", "additionalContext": "解析失败,需要修复后重试" @@ -169,7 +209,7 @@ else # 当前目录不是支持的项目,返回空对象 jq -n '{ "decision": "block", - "reason": "当前目录未检测到支持的语言(仅支持 Go 和 TypeScript),请确保项目是 Go 或 TypeScript 类型" + "reason": "当前目录未检测到支持的语言(支持 Go、TypeScript、Java),请确保项目包含对应的构建文件(go.mod / package.json / tsconfig.json / pom.xml / build.gradle)" }' fi diff --git a/lang/collect/collect.go b/lang/collect/collect.go index 6475b259..94586971 100644 --- a/lang/collect/collect.go +++ b/lang/collect/collect.go @@ -474,7 +474,11 @@ func (c *Collector) ScannerByJavaIPC(ctx context.Context) ([]*DocumentSymbol, er // Module paths (same as ScannerByTreeSitter) modulePaths := []string{c.repo} rootPomPath := filepath.Join(c.repo, "pom.xml") - if rootModule, err := parser.ParseMavenProject(rootPomPath); err == nil && rootModule != nil { + rootModule, pomErr := parser.ParseMavenProject(rootPomPath) + if pomErr != nil { + rootModule, pomErr = parser.ParseGradleProject(c.repo) + } + if pomErr == nil && rootModule != nil { modulePaths = parser.GetModulePaths(rootModule) if len(modulePaths) == 0 { modulePaths = []string{c.repo} @@ -883,11 +887,16 @@ func (c *Collector) ScannerByJavaIPC(ctx context.Context) ([]*DocumentSymbol, er } } // Fallback: any remaining local file not under modulePaths - for fp, cls := range fileToClasses { - if visitedFile[fp] { - continue + var remainingFiles []string + for fp := range fileToClasses { + if !visitedFile[fp] { + remainingFiles = append(remainingFiles, fp) } + } + sort.Strings(remainingFiles) + for _, fp := range remainingFiles { visitedFile[fp] = true + cls := fileToClasses[fp] if len(cls) == 0 { continue } @@ -999,6 +1008,10 @@ func (c *Collector) ScannerByTreeSitter(ctx context.Context) ([]*DocumentSymbol, if c.Language == uniast.Java { rootPomPath := filepath.Join(c.repo, "pom.xml") rootModule, err := parser.ParseMavenProject(rootPomPath) + if err != nil { + // Try Gradle + rootModule, err = parser.ParseGradleProject(c.repo) + } if err != nil { // 尝试直接遍历文件 modulePaths = append(modulePaths, c.repo) diff --git a/lang/collect/export.go b/lang/collect/export.go index 9bd149f2..7a870397 100644 --- a/lang/collect/export.go +++ b/lang/collect/export.go @@ -20,6 +20,7 @@ import ( "fmt" "os" "path/filepath" + "sort" "strings" "github.com/cloudwego/abcoder/lang/log" @@ -296,6 +297,15 @@ func (c *Collector) exportSymbol(repo *uniast.Repository, symbol *DocumentSymbol receivers[rec.Method.Receiver.Symbol] = append(receivers[rec.Method.Receiver.Symbol], method) } } + // Sort methods within each receiver by source location for deterministic output + for _, methods := range receivers { + sort.Slice(methods, func(i, j int) bool { + if methods[i].Location.Range.Start.Line != methods[j].Location.Range.Start.Line { + return methods[i].Location.Range.Start.Line < methods[j].Location.Range.Start.Line + } + return methods[i].Location.Range.Start.Character < methods[j].Location.Range.Start.Character + }) + } switch k := symbol.Kind; k { // Function diff --git a/lang/java/ipc/converter.go b/lang/java/ipc/converter.go index cea13797..ae62358a 100644 --- a/lang/java/ipc/converter.go +++ b/lang/java/ipc/converter.go @@ -214,9 +214,17 @@ func extractPackageFromPath(filePath string) string { // Remove file extension and convert path separators to dots dir := filepath.Dir(filePath) - // Try to find src/main/java or src/ prefix - if idx := strings.Index(dir, "src/main/java/"); idx != -1 { - return strings.ReplaceAll(dir[idx+len("src/main/java/"):], "/", ".") + // Try standard Maven/Gradle source directory prefixes + prefixes := []string{ + "src/main/java/", + "src/test/java/", + "src/main/kotlin/", + "src/test/kotlin/", + } + for _, prefix := range prefixes { + if idx := strings.Index(dir, prefix); idx != -1 { + return strings.ReplaceAll(dir[idx+len(prefix):], "/", ".") + } } if idx := strings.Index(dir, "src/"); idx != -1 { return strings.ReplaceAll(dir[idx+len("src/"):], "/", ".") diff --git a/lang/java/parser/gradle_parser.go b/lang/java/parser/gradle_parser.go new file mode 100644 index 00000000..9f011498 --- /dev/null +++ b/lang/java/parser/gradle_parser.go @@ -0,0 +1,211 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package parser + +import ( + "fmt" + "os" + "path/filepath" + "regexp" + "sort" + "strings" +) + +var ( + rootProjectNameRegex = regexp.MustCompile(`rootProject\.name\s*=\s*['"]([^'"]+)['"]`) + includeRegex = regexp.MustCompile(`include\s*\(?([^)\n]+)\)?`) + includeItemRegex = regexp.MustCompile(`['"]([^'"]+)['"]`) + groupRegex = regexp.MustCompile(`(?m)^\s*group\s*=\s*['"]([^'"]+)['"]`) + versionRegex = regexp.MustCompile(`(?m)^\s*version\s*=\s*['"]([^'"]+)['"]`) + gradlePropRegex = regexp.MustCompile(`(?m)^(\w[\w.]*)\s*=\s*(.+)$`) +) + +// ParseGradleProject parses a Gradle project from the given root directory. +// It reads settings.gradle(.kts) for subproject includes, and build.gradle(.kts) for +// group/version information. Returns a ModuleInfo tree compatible with the Maven parser output. +func ParseGradleProject(rootDir string) (*ModuleInfo, error) { + // Find settings file + settingsContent, err := readGradleFile(rootDir, "settings.gradle", "settings.gradle.kts") + if err != nil { + // No settings file — try single-project build + _, buildErr := readGradleFile(rootDir, "build.gradle", "build.gradle.kts") + if buildErr != nil { + return nil, fmt.Errorf("no Gradle build files found in %s", rootDir) + } + return parseSingleGradleProject(rootDir) + } + + // Read optional gradle.properties for property substitution + properties := readGradleProperties(rootDir) + + // Extract root project name + rootName := filepath.Base(rootDir) + if m := rootProjectNameRegex.FindStringSubmatch(settingsContent); len(m) > 1 { + rootName = m[1] + } + + // Parse root build.gradle for group/version + group, version := "com.example", "1.0.0" + if buildContent, err := readGradleFile(rootDir, "build.gradle", "build.gradle.kts"); err == nil { + g, v := extractGroupVersion(buildContent, properties) + if g != "" { + group = g + } + if v != "" { + version = v + } + } + + rootModule := &ModuleInfo{ + ArtifactID: rootName, + GroupID: group, + Version: version, + Coordinates: fmt.Sprintf("%s:%s:%s", group, rootName, version), + Path: rootDir, + SourcePath: filepath.Join(rootDir, "src", "main", "java"), + TestSourcePath: filepath.Join(rootDir, "src", "test", "java"), + TargetPath: filepath.Join(rootDir, "build"), + SubModules: []*ModuleInfo{}, + Properties: properties, + } + + // Extract included subprojects + subprojects := extractSubprojects(settingsContent) + sort.Strings(subprojects) + + for _, sub := range subprojects { + // Gradle uses ":" as separator, e.g. ":app" or ":core:utils" + subDir := strings.ReplaceAll(strings.TrimPrefix(sub, ":"), ":", string(filepath.Separator)) + subPath := filepath.Join(rootDir, subDir) + + subGroup := group + subVersion := version + if buildContent, err := readGradleFile(subPath, "build.gradle", "build.gradle.kts"); err == nil { + g, v := extractGroupVersion(buildContent, properties) + if g != "" { + subGroup = g + } + if v != "" { + subVersion = v + } + } + + artifactID := filepath.Base(subDir) + subModule := &ModuleInfo{ + ArtifactID: artifactID, + GroupID: subGroup, + Version: subVersion, + Coordinates: fmt.Sprintf("%s:%s:%s", subGroup, artifactID, subVersion), + Path: subPath, + SourcePath: filepath.Join(subPath, "src", "main", "java"), + TestSourcePath: filepath.Join(subPath, "src", "test", "java"), + TargetPath: filepath.Join(subPath, "build"), + SubModules: []*ModuleInfo{}, + Properties: properties, + } + rootModule.SubModules = append(rootModule.SubModules, subModule) + } + + return rootModule, nil +} + +func parseSingleGradleProject(rootDir string) (*ModuleInfo, error) { + properties := readGradleProperties(rootDir) + group, version := "com.example", "1.0.0" + rootName := filepath.Base(rootDir) + + if buildContent, err := readGradleFile(rootDir, "build.gradle", "build.gradle.kts"); err == nil { + g, v := extractGroupVersion(buildContent, properties) + if g != "" { + group = g + } + if v != "" { + version = v + } + } + + return &ModuleInfo{ + ArtifactID: rootName, + GroupID: group, + Version: version, + Coordinates: fmt.Sprintf("%s:%s:%s", group, rootName, version), + Path: rootDir, + SourcePath: filepath.Join(rootDir, "src", "main", "java"), + TestSourcePath: filepath.Join(rootDir, "src", "test", "java"), + TargetPath: filepath.Join(rootDir, "build"), + SubModules: []*ModuleInfo{}, + Properties: properties, + }, nil +} + +func readGradleFile(dir string, names ...string) (string, error) { + for _, name := range names { + p := filepath.Join(dir, name) + data, err := os.ReadFile(p) + if err == nil { + return string(data), nil + } + } + return "", fmt.Errorf("no gradle file found in %s", dir) +} + +func readGradleProperties(dir string) map[string]string { + props := make(map[string]string) + data, err := os.ReadFile(filepath.Join(dir, "gradle.properties")) + if err != nil { + return props + } + for _, m := range gradlePropRegex.FindAllStringSubmatch(string(data), -1) { + props[m[1]] = strings.TrimSpace(m[2]) + } + return props +} + +func extractGroupVersion(content string, props map[string]string) (group, version string) { + if m := groupRegex.FindStringSubmatch(content); len(m) > 1 { + group = resolveGradleProperty(m[1], props) + } + if m := versionRegex.FindStringSubmatch(content); len(m) > 1 { + version = resolveGradleProperty(m[1], props) + } + return +} + +func resolveGradleProperty(value string, props map[string]string) string { + // Resolve ${property} references + return propRegex.ReplaceAllStringFunc(value, func(match string) string { + key := match[2 : len(match)-1] + if val, ok := props[key]; ok { + return val + } + return match + }) +} + +func extractSubprojects(settingsContent string) []string { + var subs []string + seen := make(map[string]bool) + for _, m := range includeRegex.FindAllStringSubmatch(settingsContent, -1) { + items := includeItemRegex.FindAllStringSubmatch(m[1], -1) + for _, item := range items { + name := item[1] + if !seen[name] { + seen[name] = true + subs = append(subs, name) + } + } + } + return subs +} diff --git a/lang/java/parser/gradle_parser_test.go b/lang/java/parser/gradle_parser_test.go new file mode 100644 index 00000000..97c7a4ae --- /dev/null +++ b/lang/java/parser/gradle_parser_test.go @@ -0,0 +1,115 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package parser + +import ( + "path/filepath" + "runtime" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func testdataDir() string { + _, f, _, _ := runtime.Caller(0) + return filepath.Join(filepath.Dir(f), "..", "..", "..", "testdata", "java") +} + +func TestParseGradleProject(t *testing.T) { + rootDir := filepath.Join(testdataDir(), "5_gradle_project") + mod, err := ParseGradleProject(rootDir) + require.NoError(t, err) + require.NotNil(t, mod) + + assert.Equal(t, "my-gradle-app", mod.ArtifactID) + assert.Equal(t, "com.example", mod.GroupID) + assert.Equal(t, "1.0.0", mod.Version) + assert.Equal(t, "com.example:my-gradle-app:1.0.0", mod.Coordinates) + assert.Equal(t, filepath.Join(rootDir, "src", "main", "java"), mod.SourcePath) + assert.Equal(t, filepath.Join(rootDir, "src", "test", "java"), mod.TestSourcePath) + assert.Equal(t, filepath.Join(rootDir, "build"), mod.TargetPath) + + // Should have 2 submodules: app and core + require.Len(t, mod.SubModules, 2) + + // SubModules are sorted by include order (alphabetical after sort) + appMod := mod.SubModules[0] + assert.Equal(t, "app", appMod.ArtifactID) + assert.Equal(t, "com.example", appMod.GroupID) + assert.Equal(t, "1.0.0", appMod.Version) + assert.Equal(t, filepath.Join(rootDir, "app", "src", "main", "java"), appMod.SourcePath) + + coreMod := mod.SubModules[1] + assert.Equal(t, "core", coreMod.ArtifactID) + assert.Equal(t, "com.example", coreMod.GroupID) + assert.Equal(t, "1.0.0", coreMod.Version) + assert.Equal(t, filepath.Join(rootDir, "core", "src", "main", "java"), coreMod.SourcePath) +} + +func TestParseGradleProject_ModulePaths(t *testing.T) { + rootDir := filepath.Join(testdataDir(), "5_gradle_project") + mod, err := ParseGradleProject(rootDir) + require.NoError(t, err) + + paths := GetModulePaths(mod) + assert.NotEmpty(t, paths) + + modMap := GetModuleStructMap(mod) + assert.Len(t, modMap, 3) // root + 2 submodules +} + +func TestParseGradleProject_NotFound(t *testing.T) { + mod, err := ParseGradleProject("/nonexistent/path") + assert.Error(t, err) + assert.Nil(t, mod) +} + +func TestExtractSubprojects(t *testing.T) { + tests := []struct { + name string + content string + expected []string + }{ + { + name: "single include", + content: `include ':app'`, + expected: []string{":app"}, + }, + { + name: "multiple includes", + content: "include ':app', ':core'", + expected: []string{":app", ":core"}, + }, + { + name: "separate include lines", + content: `include ':app' +include ':core'`, + expected: []string{":app", ":core"}, + }, + { + name: "kotlin style parentheses", + content: `include(":app", ":core")`, + expected: []string{":app", ":core"}, + }, + } + + for _, tc := range tests { + t.Run(tc.name, func(t *testing.T) { + result := extractSubprojects(tc.content) + assert.Equal(t, tc.expected, result) + }) + } +} diff --git a/lang/java/parser/pom_parser.go b/lang/java/parser/pom_parser.go index 3c2118a6..1c8d2ff4 100644 --- a/lang/java/parser/pom_parser.go +++ b/lang/java/parser/pom_parser.go @@ -19,6 +19,7 @@ import ( "log" "path/filepath" "regexp" + "sort" "github.com/vifraa/gopom" ) @@ -195,6 +196,7 @@ func GetModulePaths(root *ModuleInfo) []string { for _, path := range moduleMap { paths = append(paths, path) } + sort.Strings(paths) return paths } diff --git a/lang/java/spec.go b/lang/java/spec.go index d7385d36..5a74f952 100644 --- a/lang/java/spec.go +++ b/lang/java/spec.go @@ -44,29 +44,54 @@ type JavaPkg struct { func NewJavaSpec(reop string) *JavaSpec { rootPomPath := filepath.Join(reop, "pom.xml") - rootModule, err := javaparser.ParseMavenProject(rootPomPath) - if err != nil { + if rootModule, err := javaparser.ParseMavenProject(rootPomPath); err == nil { + nameToMod := javaparser.GetModuleStructMap(rootModule) return &JavaSpec{ repo: reop, rootMod: rootModule, - nameToMod: make(map[string]*javaparser.ModuleInfo), + nameToMod: nameToMod, + dirToPkg: make(map[string]JavaPkg), + } + } + if rootModule, err := javaparser.ParseGradleProject(reop); err == nil { + nameToMod := javaparser.GetModuleStructMap(rootModule) + return &JavaSpec{ + repo: reop, + rootMod: rootModule, + nameToMod: nameToMod, dirToPkg: make(map[string]JavaPkg), } } - nameToMod := javaparser.GetModuleStructMap(rootModule) - return &JavaSpec{ repo: reop, - rootMod: rootModule, - nameToMod: nameToMod, + nameToMod: make(map[string]*javaparser.ModuleInfo), dirToPkg: make(map[string]JavaPkg), } - } func (c *JavaSpec) FileImports(content []byte) ([]uniast.Import, error) { - // Java import parsing by tree-setting - panic("Java import parsing by tree-setting") + var imports []uniast.Import + for _, line := range strings.Split(string(content), "\n") { + trimmed := strings.TrimSpace(line) + if !strings.HasPrefix(trimmed, "import ") { + continue + } + // parse "import [static] com.example.Foo;" + s := strings.TrimPrefix(trimmed, "import ") + s = strings.TrimSuffix(s, ";") + s = strings.TrimSpace(s) + if s == "" { + continue + } + if strings.HasPrefix(s, "static ") { + path := strings.TrimSpace(strings.TrimPrefix(s, "static ")) + alias := "static" + imports = append(imports, uniast.Import{Path: path, Alias: &alias}) + } else { + imports = append(imports, uniast.Import{Path: s}) + } + } + return imports, nil } func (c *JavaSpec) WorkSpace(root string) (map[string]string, error) { diff --git a/lang/java/writer/ast.go b/lang/java/writer/ast.go new file mode 100644 index 00000000..644c5457 --- /dev/null +++ b/lang/java/writer/ast.go @@ -0,0 +1,59 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package writer + +import ( + "strings" + + "github.com/cloudwego/abcoder/lang/uniast" +) + +func writeImport(sb *strings.Builder, impts []uniast.Import) { + for _, imp := range impts { + writeSingleImport(sb, imp) + } + sb.WriteString("\n") +} + +func writeSingleImport(sb *strings.Builder, v uniast.Import) { + sb.WriteString("import ") + if v.Alias != nil && *v.Alias == "static" { + sb.WriteString("static ") + } + sb.WriteString(v.Path) + sb.WriteString(";\n") +} + +// mergeImports merges two import slices, deduplicating by path. +// priors take precedence (because they may contain aliases). +func mergeImports(priors []uniast.Import, subs []uniast.Import) (ret []uniast.Import) { + visited := make(map[string]bool, len(priors)+len(subs)) + ret = make([]uniast.Import, 0, len(priors)+len(subs)) + for _, v := range priors { + if visited[v.Path] { + continue + } + visited[v.Path] = true + ret = append(ret, v) + } + for _, v := range subs { + if visited[v.Path] { + continue + } + visited[v.Path] = true + ret = append(ret, v) + } + return +} diff --git a/lang/java/writer/write.go b/lang/java/writer/write.go new file mode 100644 index 00000000..e8482643 --- /dev/null +++ b/lang/java/writer/write.go @@ -0,0 +1,400 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package writer + +import ( + "fmt" + "os" + "path/filepath" + "regexp" + "sort" + "strings" + + "github.com/cloudwego/abcoder/lang/uniast" +) + +var _ uniast.Writer = (*Writer)(nil) + +var importLineRegex = regexp.MustCompile(`^\s*import\s+(static\s+)?[\w.*]+\s*;\s*$`) + +type Options struct{} + +type Writer struct { + Options + visited map[string]map[string]*fileNode +} + +type fileNode struct { + chunks []chunk + impts []uniast.Import +} + +type chunk struct { + codes string + line int +} + +func NewWriter(opts Options) *Writer { + return &Writer{ + Options: opts, + visited: make(map[string]map[string]*fileNode), + } +} + +func (w *Writer) WriteModule(repo *uniast.Repository, modPath string, outDir string) error { + mod := repo.Modules[modPath] + if mod == nil { + return fmt.Errorf("module %s not found", modPath) + } + for _, pkg := range mod.Packages { + if err := w.appendPackage(repo, pkg); err != nil { + return fmt.Errorf("write package %s failed: %v", pkg.PkgPath, err) + } + } + + outdir := filepath.Join(outDir, mod.Dir) + for pkgPath, pkg := range w.visited { + // Convert Java package path to directory: com.example.core → com/example/core + rel := strings.ReplaceAll(string(pkgPath), ".", "/") + pkgDir := filepath.Join(outdir, "src", "main", "java", rel) + if err := os.MkdirAll(pkgDir, 0755); err != nil { + return fmt.Errorf("mkdir %s failed: %v", pkgDir, err) + } + + for fpath, f := range pkg { + var sb strings.Builder + sb.WriteString("package ") + sb.WriteString(string(pkgPath)) + sb.WriteString(";\n\n") + + var fimpts []uniast.Import + // mod.Files keys are relative paths (e.g. src/main/java/org/example/Cat.java), + // but fpath is a basename (e.g. Cat.java). Match by basename. + for fk, fi := range mod.Files { + if filepath.Base(fk) == fpath && fi.Imports != nil { + fimpts = fi.Imports + break + } + } + impts := mergeImports(fimpts, f.impts) + if len(impts) > 0 { + writeImport(&sb, impts) + } + + sort.SliceStable(f.chunks, func(i, j int) bool { + return f.chunks[i].line < f.chunks[j].line + }) + for _, c := range f.chunks { + sb.WriteString(c.codes) + sb.WriteString("\n\n") + } + outPath := filepath.Join(pkgDir, fpath) + if err := os.WriteFile(outPath, []byte(sb.String()), 0644); err != nil { + return fmt.Errorf("write file %s failed: %v", outPath, err) + } + } + } + + // Generate pom.xml + if err := w.writePom(mod, outdir); err != nil { + return fmt.Errorf("write pom.xml failed: %v", err) + } + return nil +} + +func (w *Writer) appendPackage(repo *uniast.Repository, pkg *uniast.Package) error { + for _, v := range pkg.Vars { + n := repo.GetNode(v.Identity) + if err := w.appendNode(n, pkg.PkgPath, v.File, v.Line, v.Content); err != nil { + return fmt.Errorf("append chunk for var %s failed: %v", v.Name, err) + } + } + for _, f := range pkg.Functions { + if f.IsMethod || f.IsInterfaceMethod { + // Java methods are inside Type.Content, skip standalone method entries + continue + } + n := repo.GetNode(f.Identity) + if err := w.appendNode(n, pkg.PkgPath, f.File, f.Line, f.Content); err != nil { + return fmt.Errorf("append chunk for function %s failed: %v", f.Name, err) + } + } + for _, t := range pkg.Types { + n := repo.GetNode(t.Identity) + if err := w.appendNode(n, pkg.PkgPath, t.File, t.Line, t.Content); err != nil { + return fmt.Errorf("append chunk for type %s failed: %v", t.Name, err) + } + } + return nil +} + +func (w *Writer) appendNode(node *uniast.Node, pkg uniast.PkgPath, file string, line int, src string) error { + p := w.visited[string(pkg)] + if p == nil { + p = make(map[string]*fileNode) + w.visited[string(pkg)] = p + } + var fpath string + if file == "" { + fpath = "Lib.java" + } else { + fpath = filepath.Base(file) + } + fs := p[fpath] + if fs == nil { + depLen := 0 + if node != nil { + depLen = len(node.Dependencies) + } + fs = &fileNode{ + chunks: make([]chunk, 0, depLen), + impts: make([]uniast.Import, 0, depLen), + } + p[fpath] = fs + } + if node != nil { + for _, v := range node.Dependencies { + if v.PkgPath == "" || v.PkgPath == pkg { + continue + } + imp, _ := w.IdToImport(v.Identity) + // Skip java.lang imports (auto-imported) + if strings.HasPrefix(imp.Path, "java.lang.") { + continue + } + fs.impts = append(fs.impts, imp) + } + } + + // Check for embedded imports in source + if cs, impts, err := w.SplitImportsAndCodes(src); err == nil { + src = cs + for _, v := range impts { + fs.impts = append(fs.impts, v) + } + } + + fs.chunks = append(fs.chunks, chunk{ + codes: src, + line: line, + }) + return nil +} + +func (w *Writer) SplitImportsAndCodes(src string) (codes string, imports []uniast.Import, err error) { + lines := strings.Split(src, "\n") + lastImportIdx := -1 + for i, line := range lines { + trimmed := strings.TrimSpace(line) + if strings.HasPrefix(trimmed, "package ") { + lastImportIdx = i + continue + } + if importLineRegex.MatchString(line) { + imp := parseImportLine(trimmed) + if imp.Path != "" { + imports = append(imports, imp) + } + lastImportIdx = i + } + } + if lastImportIdx < 0 { + return src, nil, nil + } + // Return everything after the last import/package line + remaining := strings.Join(lines[lastImportIdx+1:], "\n") + return strings.TrimLeft(remaining, "\n"), imports, nil +} + +func parseImportLine(line string) uniast.Import { + // "import static com.example.Foo;" or "import com.example.Foo;" + s := strings.TrimPrefix(line, "import ") + s = strings.TrimSuffix(s, ";") + s = strings.TrimSpace(s) + if strings.HasPrefix(s, "static ") { + path := strings.TrimPrefix(s, "static ") + path = strings.TrimSpace(path) + alias := "static" + return uniast.Import{Path: path, Alias: &alias} + } + return uniast.Import{Path: s} +} + +func (w *Writer) IdToImport(id uniast.Identity) (uniast.Import, error) { + return uniast.Import{Path: string(id.PkgPath) + "." + id.Name}, nil +} + +func (w *Writer) PatchImports(impts []uniast.Import, file []byte) ([]byte, error) { + lines := strings.Split(string(file), "\n") + + // Find package line end and import block boundaries + packageEnd := -1 + importStart := -1 + importEnd := -1 + var oldImports []uniast.Import + + for i, line := range lines { + trimmed := strings.TrimSpace(line) + if strings.HasPrefix(trimmed, "package ") { + packageEnd = i + continue + } + if importLineRegex.MatchString(line) { + if importStart < 0 { + importStart = i + } + importEnd = i + oldImports = append(oldImports, parseImportLine(trimmed)) + } + } + + merged := mergeImports(oldImports, impts) + if len(merged) == len(oldImports) { + return file, nil + } + + // Build import lines without trailing blank line + var sb strings.Builder + for _, imp := range merged { + writeSingleImport(&sb, imp) + } + newImportBlock := sb.String() + + var result strings.Builder + if importStart >= 0 { + // Replace existing import block + for i := 0; i < importStart; i++ { + result.WriteString(lines[i]) + result.WriteString("\n") + } + result.WriteString(newImportBlock) + for i := importEnd + 1; i < len(lines); i++ { + result.WriteString(lines[i]) + if i < len(lines)-1 { + result.WriteString("\n") + } + } + } else { + // No existing imports; insert after package line + insertAfter := packageEnd + for i := 0; i <= insertAfter; i++ { + result.WriteString(lines[i]) + result.WriteString("\n") + } + result.WriteString("\n") + result.WriteString(newImportBlock) + for i := insertAfter + 1; i < len(lines); i++ { + result.WriteString(lines[i]) + if i < len(lines)-1 { + result.WriteString("\n") + } + } + } + return []byte(result.String()), nil +} + +func (w *Writer) CreateFile(fi *uniast.File, mod *uniast.Module) ([]byte, error) { + var sb strings.Builder + pkgName := string(fi.Package) + if pkgName == "" { + return nil, fmt.Errorf("package name is empty") + } + sb.WriteString("package ") + sb.WriteString(pkgName) + sb.WriteString(";\n\n") + + if len(fi.Imports) > 0 { + writeImport(&sb, fi.Imports) + } + + return []byte(sb.String()), nil +} + +func (w *Writer) writePom(mod *uniast.Module, outDir string) error { + // Parse mod.Name as groupId:artifactId:version + parts := strings.SplitN(mod.Name, ":", 3) + groupId := "com.example" + artifactId := "project" + version := "1.0.0" + if len(parts) >= 1 && parts[0] != "" { + groupId = parts[0] + } + if len(parts) >= 2 && parts[1] != "" { + artifactId = parts[1] + } + if len(parts) >= 3 && parts[2] != "" { + version = parts[2] + } + + var sb strings.Builder + sb.WriteString(``) + sb.WriteString("\n") + sb.WriteString(``) + sb.WriteString("\n") + sb.WriteString(" 4.0.0\n\n") + sb.WriteString(" ") + sb.WriteString(groupId) + sb.WriteString("\n") + sb.WriteString(" ") + sb.WriteString(artifactId) + sb.WriteString("\n") + sb.WriteString(" ") + sb.WriteString(version) + sb.WriteString("\n") + + if len(mod.Dependencies) > 0 { + sb.WriteString("\n \n") + depNames := make([]string, 0, len(mod.Dependencies)) + for name := range mod.Dependencies { + depNames = append(depNames, name) + } + sort.Strings(depNames) + for _, name := range depNames { + dep := mod.Dependencies[name] + depParts := strings.SplitN(name, ":", 2) + depGroupId := depParts[0] + depArtifactId := "" + if len(depParts) >= 2 { + depArtifactId = depParts[1] + } + depVersion := dep + if idx := strings.Index(dep, "@"); idx >= 0 { + depVersion = dep[idx+1:] + } + sb.WriteString(" \n") + sb.WriteString(" ") + sb.WriteString(depGroupId) + sb.WriteString("\n") + sb.WriteString(" ") + sb.WriteString(depArtifactId) + sb.WriteString("\n") + if depVersion != "" { + sb.WriteString(" ") + sb.WriteString(depVersion) + sb.WriteString("\n") + } + sb.WriteString(" \n") + } + sb.WriteString(" \n") + } + + sb.WriteString("\n") + + return os.WriteFile(filepath.Join(outDir, "pom.xml"), []byte(sb.String()), 0644) +} diff --git a/lang/java/writer/write_test.go b/lang/java/writer/write_test.go new file mode 100644 index 00000000..d78833d2 --- /dev/null +++ b/lang/java/writer/write_test.go @@ -0,0 +1,238 @@ +// Copyright 2025 CloudWeGo Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package writer + +import ( + "strings" + "testing" + + "github.com/cloudwego/abcoder/lang/uniast" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestWriter_SplitImportsAndCodes(t *testing.T) { + w := NewWriter(Options{}) + + tests := []struct { + name string + src string + wantCodes string + wantImports []uniast.Import + }{ + { + name: "full source with package and imports", + src: `package com.example; + +import java.util.List; +import java.util.Map; + +public class Foo { +}`, + wantCodes: `public class Foo { +}`, + wantImports: []uniast.Import{ + {Path: "java.util.List"}, + {Path: "java.util.Map"}, + }, + }, + { + name: "no imports", + src: `public class Bar {}`, + wantCodes: `public class Bar {}`, + wantImports: nil, + }, + { + name: "static import", + src: `import static org.junit.Assert.assertEquals; + +public class Test {}`, + wantCodes: `public class Test {}`, + wantImports: func() []uniast.Import { + alias := "static" + return []uniast.Import{ + {Path: "org.junit.Assert.assertEquals", Alias: &alias}, + } + }(), + }, + { + name: "only package line", + src: `package com.example; + +public class Baz {}`, + wantCodes: `public class Baz {}`, + wantImports: nil, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + codes, imports, err := w.SplitImportsAndCodes(tt.src) + require.NoError(t, err) + assert.Equal(t, tt.wantCodes, codes) + assert.Equal(t, tt.wantImports, imports) + }) + } +} + +func TestWriter_IdToImport(t *testing.T) { + w := NewWriter(Options{}) + + imp, err := w.IdToImport(uniast.Identity{ + PkgPath: "com.example.service", + Name: "UserService", + }) + require.NoError(t, err) + assert.Equal(t, "com.example.service.UserService", imp.Path) +} + +func TestWriter_PatchImports(t *testing.T) { + w := NewWriter(Options{}) + + tests := []struct { + name string + file string + impts []uniast.Import + want string + wantErr bool + }{ + { + name: "add import to file with existing imports", + file: `package com.example; + +import java.util.List; + +public class Foo {}`, + impts: []uniast.Import{ + {Path: "java.util.Map"}, + }, + want: `package com.example; + +import java.util.List; +import java.util.Map; + +public class Foo {}`, + }, + { + name: "no new imports needed (dedup)", + file: `package com.example; + +import java.util.List; + +public class Foo {}`, + impts: []uniast.Import{ + {Path: "java.util.List"}, + }, + want: `package com.example; + +import java.util.List; + +public class Foo {}`, + }, + { + name: "add import to file without imports", + file: `package com.example; + +public class Bar {}`, + impts: []uniast.Import{ + {Path: "java.util.List"}, + }, + want: `package com.example; + +import java.util.List; + +public class Bar {}`, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := w.PatchImports(tt.impts, []byte(tt.file)) + if tt.wantErr { + require.Error(t, err) + return + } + require.NoError(t, err) + assert.Equal(t, tt.want, string(got)) + }) + } +} + +func TestWriter_CreateFile(t *testing.T) { + w := NewWriter(Options{}) + + fi := &uniast.File{ + Package: "com.example.service", + Imports: []uniast.Import{ + {Path: "java.util.List"}, + {Path: "java.util.Map"}, + }, + } + mod := &uniast.Module{ + Name: "com.example:myapp:1.0.0", + } + + got, err := w.CreateFile(fi, mod) + require.NoError(t, err) + + want := "package com.example.service;\n\nimport java.util.List;\nimport java.util.Map;\n\n" + assert.Equal(t, want, string(got)) +} + +func TestWriter_CreateFile_EmptyPackage(t *testing.T) { + w := NewWriter(Options{}) + + fi := &uniast.File{} + mod := &uniast.Module{} + + _, err := w.CreateFile(fi, mod) + assert.Error(t, err) + assert.Contains(t, err.Error(), "package name is empty") +} + +func TestMergeImports(t *testing.T) { + priors := []uniast.Import{ + {Path: "java.util.List"}, + {Path: "java.util.Map"}, + } + subs := []uniast.Import{ + {Path: "java.util.Map"}, + {Path: "java.io.File"}, + } + merged := mergeImports(priors, subs) + assert.Len(t, merged, 3) + assert.Equal(t, "java.util.List", merged[0].Path) + assert.Equal(t, "java.util.Map", merged[1].Path) + assert.Equal(t, "java.io.File", merged[2].Path) +} + +func TestWriteImport(t *testing.T) { + var sb strings.Builder + impts := []uniast.Import{ + {Path: "java.util.List"}, + {Path: "java.util.Map"}, + } + writeImport(&sb, impts) + want := "import java.util.List;\nimport java.util.Map;\n\n" + assert.Equal(t, want, sb.String()) +} + +func TestWriteSingleImport_Static(t *testing.T) { + var sb strings.Builder + alias := "static" + imp := uniast.Import{Path: "org.junit.Assert.assertEquals", Alias: &alias} + writeSingleImport(&sb, imp) + assert.Equal(t, "import static org.junit.Assert.assertEquals;\n", sb.String()) +} diff --git a/lang/patch/lib.go b/lang/patch/lib.go index 563eda07..47533403 100644 --- a/lang/patch/lib.go +++ b/lang/patch/lib.go @@ -22,6 +22,7 @@ import ( "sort" "github.com/cloudwego/abcoder/lang/golang/writer" + javawriter "github.com/cloudwego/abcoder/lang/java/writer" "github.com/cloudwego/abcoder/lang/uniast" "github.com/cloudwego/abcoder/lang/utils" ) @@ -236,6 +237,8 @@ func (p *Patcher) getLangWriter(lang uniast.Language) uniast.Writer { switch lang { case uniast.Golang: return writer.NewWriter(writer.Options{}) + case uniast.Java: + return javawriter.NewWriter(javawriter.Options{}) default: return nil } diff --git a/lang/write.go b/lang/write.go index a1eb281b..45e7d6cb 100644 --- a/lang/write.go +++ b/lang/write.go @@ -21,6 +21,7 @@ import ( "fmt" "github.com/cloudwego/abcoder/lang/golang/writer" + javawriter "github.com/cloudwego/abcoder/lang/java/writer" "github.com/cloudwego/abcoder/lang/uniast" ) @@ -42,6 +43,8 @@ func Write(ctx context.Context, repo *uniast.Repository, args WriteOptions) erro switch m.Language { case uniast.Golang: w = writer.NewWriter(writer.Options{CompilerPath: args.Compiler}) + case uniast.Java: + w = javawriter.NewWriter(javawriter.Options{}) default: return fmt.Errorf("unsupported language: %s", m.Language) } diff --git a/testdata/asts/localsession_g.json b/testdata/asts/localsession_g.json index a0915bb6..b071eff0 100644 --- a/testdata/asts/localsession_g.json +++ b/testdata/asts/localsession_g.json @@ -1 +1 @@ -{"id":"/Users/bytedance/golang/work/abcoder/tmp/localsession","ASTVersion":"v0.1.2","ToolVersion":"","Path":"","Modules":{"github.com/cloudwego/localsession":{"Language":"go","Version":"","Name":"github.com/cloudwego/localsession","Dir":".","Packages":{"github.com/cloudwego/localsession":{"IsMain":false,"IsTest":false,"PkgPath":"github.com/cloudwego/localsession","Functions":{"BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"gls.go","Line":115,"StartOffset":3200,"EndOffset":3457,"Content":"// BindSession binds the session with current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc BindSession(s Session) {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.BindSession(SessionID(goID()), s)\n}","Signature":"func BindSession(s Session)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":115,"StartOffset":3347,"EndOffset":3356}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":119,"StartOffset":3444,"EndOffset":3448}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","File":"gls.go","Line":119,"StartOffset":3422,"EndOffset":3433}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":119,"StartOffset":3434,"EndOffset":3443}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":116,"StartOffset":3364,"EndOffset":3381}]},"CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"gls.go","Line":104,"StartOffset":2908,"EndOffset":3198,"Content":"// CurSession gets the session for current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc CurSession() (Session, bool) {\n\tif defaultManagerObj == nil {\n\t\treturn nil, false\n\t}\n\ts, ok := defaultManagerObj.GetSession(SessionID(goID()))\n\treturn s, ok\n}","Signature":"func CurSession() (Session, bool)","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":104,"StartOffset":3054,"EndOffset":3061}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":108,"StartOffset":3174,"EndOffset":3178}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","File":"gls.go","Line":108,"StartOffset":3153,"EndOffset":3163}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":108,"StartOffset":3164,"EndOffset":3173}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":105,"StartOffset":3075,"EndOffset":3092}]},"DefaultManagerOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"gls.go","Line":42,"StartOffset":1270,"EndOffset":1546,"Content":"// DefaultManagerOptions returns default options for the default manager\nfunc DefaultManagerOptions() ManagerOptions {\n\treturn ManagerOptions{\n\t\tShardNumber: 100,\n\t\tGCInterval: time.Minute * 10,\n\t\tEnableImplicitlyTransmitAsync: false,\n\t}\n}","Signature":"func DefaultManagerOptions() ManagerOptions","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":42,"StartOffset":1372,"EndOffset":1386}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":43,"StartOffset":1397,"EndOffset":1411}]},"GetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"gls.go","Line":51,"StartOffset":1548,"EndOffset":1667,"Content":"// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}","Signature":"func GetDefaultManager() *SessionManager","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"gls.go","Line":51,"StartOffset":1622,"EndOffset":1637}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":52,"StartOffset":1648,"EndOffset":1665}]},"Go":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","File":"gls.go","Line":137,"StartOffset":3868,"EndOffset":4049,"Content":"// Go calls f asynchronously and pass caller's session to the new goroutine\nfunc Go(f func()) {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tGoSession(nil, f)\n\t} else {\n\t\tGoSession(s, f)\n\t}\n}","Signature":"func Go(f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"gls.go","Line":138,"StartOffset":3974,"EndOffset":3984},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","File":"gls.go","Line":140,"StartOffset":3999,"EndOffset":4008}]},"GoSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","File":"gls.go","Line":147,"StartOffset":4051,"EndOffset":4361,"Content":"// SessionGo calls f asynchronously and pass s session to the new goroutine\nfunc GoSession(s Session, f func()) {\n\tgo func() {\n\t\tdefer func() {\n\t\t\tif v := recover(); v != nil {\n\t\t\t\tprintln(fmt.Sprintf(\"GoSession recover: %v\", v))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t}()\n\t\tif s != nil {\n\t\t\tBindSession(s)\n\t\t}\n\t\tf()\n\t}()\n}","Signature":"func GoSession(s Session, f func())","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":147,"StartOffset":4142,"EndOffset":4151}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"gls.go","Line":153,"StartOffset":4289,"EndOffset":4302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"gls.go","Line":156,"StartOffset":4330,"EndOffset":4341}]},"InitDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"gls.go","Line":64,"StartOffset":1669,"EndOffset":2277,"Content":"// InitDefaultManager update and restart default manager.\n// It accept argument opts and env config both.\n//\n// NOTICE:\n// - It use env SESSION_CONFIG_KEY prior to argument opts;\n// - If both env and opts are empty, it won't reset manager;\n// - For concurrent safety, you can only successfully reset manager ONCE.\n//\n//go:nocheckptr\nfunc InitDefaultManager(opts ManagerOptions) {\n\tdefaultManagerOnce.Do(func() {\n\t\t// env config has high priority\n\t\tcheckEnvOptions(\u0026opts)\n\n\t\tif defaultManagerObj != nil {\n\t\t\tdefaultManagerObj.Close()\n\t\t}\n\t\tobj := NewSessionManager(opts)\n\t\tdefaultManagerObj = \u0026obj\n\t})\n}","Signature":"func InitDefaultManager(opts ManagerOptions)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":64,"StartOffset":2032,"EndOffset":2051}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","File":"gls.go","Line":67,"StartOffset":2123,"EndOffset":2138},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","File":"gls.go","Line":72,"StartOffset":2221,"EndOffset":2238}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","File":"gls.go","Line":70,"StartOffset":2200,"EndOffset":2205}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":69,"StartOffset":2152,"EndOffset":2169}]},"NewSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"session.go","Line":44,"StartOffset":1225,"EndOffset":1436,"Content":"// NewSessionCtx creates and enables a SessionCtx\nfunc NewSessionCtx(ctx context.Context) SessionCtx {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn SessionCtx{\n\t\tenabled: \u0026enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func NewSessionCtx(ctx context.Context) SessionCtx","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":44,"StartOffset":1315,"EndOffset":1325}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":47,"StartOffset":1383,"EndOffset":1393}]},"NewSessionCtxWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","File":"session.go","Line":55,"StartOffset":1438,"EndOffset":1720,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx {\n\tret := NewSessionCtx(ctx)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":55,"StartOffset":1604,"EndOffset":1614}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"session.go","Line":56,"StartOffset":1625,"EndOffset":1638}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","File":"session.go","Line":59,"StartOffset":1692,"EndOffset":1699}]},"NewSessionManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","File":"manager.go","Line":63,"StartOffset":1636,"EndOffset":2138,"Content":"// NewSessionManager creates a SessionManager with default containers\n// If opts.GCInterval \u003e 0, it will start scheduled GC() loop automatically\nfunc NewSessionManager(opts ManagerOptions) SessionManager {\n\tif opts.ShardNumber \u003c= 0 {\n\t\tpanic(\"ShardNumber must be larger than zero\")\n\t}\n\tshards := make([]*shard, opts.ShardNumber)\n\tfor i := range shards {\n\t\tshards[i] = newShard()\n\t}\n\tret := SessionManager{\n\t\tshards: shards,\n\t\topts: opts,\n\t}\n\n\tif opts.GCInterval \u003e 0 {\n\t\tret.startGC()\n\t}\n\treturn ret\n}","Signature":"func NewSessionManager(opts ManagerOptions) SessionManager","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":63,"StartOffset":1804,"EndOffset":1823}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":63,"StartOffset":1825,"EndOffset":1839}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","File":"manager.go","Line":69,"StartOffset":2004,"EndOffset":2012}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","File":"manager.go","Line":77,"StartOffset":2112,"EndOffset":2119}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":67,"StartOffset":1940,"EndOffset":1945},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":71,"StartOffset":2026,"EndOffset":2040}]},"NewSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","File":"session.go","Line":102,"StartOffset":2676,"EndOffset":2897,"Content":"// NewSessionMap creates and enables a SessionMap\nfunc NewSessionMap(m map[interface{}]interface{}) *SessionMap {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn \u0026SessionMap{\n\t\tenabled: \u0026enabled,\n\t\tstorage: m,\n\t}\n}","Signature":"func NewSessionMap(m map[interface{}]interface{}) *SessionMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":102,"StartOffset":2776,"EndOffset":2787}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":105,"StartOffset":2846,"EndOffset":2856}]},"NewSessionMapWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","File":"session.go","Line":113,"StartOffset":2899,"EndOffset":3190,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap {\n\tret := NewSessionMap(m)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":113,"StartOffset":3075,"EndOffset":3086}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","File":"session.go","Line":114,"StartOffset":3097,"EndOffset":3110}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","File":"session.go","Line":117,"StartOffset":3162,"EndOffset":3169}]},"Session.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"session.go","Line":30,"StartOffset":821,"EndOffset":892,"Content":"// Get returns value for specific key\nGet(key interface{}) interface{}","Signature":"// Get returns value for specific key\nGet(key interface{}) interface{}"},"Session.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"session.go","Line":27,"StartOffset":751,"EndOffset":818,"Content":"// IsValid tells if the session is valid at present\nIsValid() bool","Signature":"// IsValid tells if the session is valid at present\nIsValid() bool"},"Session.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"session.go","Line":33,"StartOffset":895,"EndOffset":1025,"Content":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session","Signature":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session"},"SessionCtx.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","File":"session.go","Line":65,"StartOffset":1722,"EndOffset":1813,"Content":"// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}","Signature":"func (self SessionCtx) Disable()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"session.go","Line":70,"StartOffset":1815,"EndOffset":1924,"Content":"// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}","Signature":"func (self SessionCtx) Export() context.Context","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get","File":"session.go","Line":80,"StartOffset":2056,"EndOffset":2177,"Content":"// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}","Signature":"func (self SessionCtx) Get(key interface{}) interface{}","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid","File":"session.go","Line":75,"StartOffset":1926,"EndOffset":2054,"Content":"// IsValid tells if the session is valid at present\nfunc (self SessionCtx) IsValid() bool {\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self SessionCtx) IsValid() bool","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","File":"session.go","Line":85,"StartOffset":2179,"EndOffset":2438,"Content":"// Set value for specific key,and return newly effective session\nfunc (self SessionCtx) WithValue(key interface{}, val interface{}) Session {\n\tctx := context.WithValue(self.storage, key, val)\n\treturn SessionCtx{\n\t\tenabled: self.enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func (self SessionCtx) WithValue(key interface{}, val interface{}) Session","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":85,"StartOffset":2313,"EndOffset":2320}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":87,"StartOffset":2381,"EndOffset":2391}]},"SessionManager.BindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","File":"manager.go","Line":134,"StartOffset":3290,"EndOffset":3573,"Content":"// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(id SessionID, s Session) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(id, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionID(id)\n\t}\n}","Signature":"func (self *SessionManager) BindSession(id SessionID, s Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":134,"StartOffset":3386,"EndOffset":3398},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":134,"StartOffset":3400,"EndOffset":3409}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","File":"manager.go","Line":140,"StartOffset":3547,"EndOffset":3564}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","File":"manager.go","Line":137,"StartOffset":3485,"EndOffset":3490}]},"SessionManager.Close":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","File":"manager.go","Line":200,"StartOffset":4874,"EndOffset":5010,"Content":"// Close stop persistent work for the manager, like GC\nfunc (self SessionManager) Close() {\n\tif self.tik != nil {\n\t\tself.tik.Stop()\n\t}\n}","Signature":"func (self SessionManager) Close()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.GC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","File":"manager.go","Line":163,"StartOffset":4014,"EndOffset":4549,"Content":"// GC sweep invalid sessions and release unused memory\nfunc (self SessionManager) GC() {\n\tif !atomic.CompareAndSwapUint32(\u0026self.inGC, 0, 1) {\n\t\treturn\n\t}\n\n\tfor _, shard := range self.shards {\n\t\tshard.lock.Lock()\n\t\tn := shard.m\n\t\tm := make(map[SessionID]Session, len(n))\n\t\tfor id, s := range n {\n\t\t\t// Warning: may panic here?\n\t\t\tif s.IsValid() {\n\t\t\t\tm[id] = s\n\t\t\t}\n\t\t}\n\t\t// atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(\u0026shard.m)), unsafe.Pointer(\u0026m))\n\t\tshard.m = m\n\t\tshard.lock.Unlock()\n\t}\n\n\tatomic.StoreUint32(\u0026self.inGC, 0)\n}","Signature":"func (self SessionManager) GC()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"manager.go","Line":174,"StartOffset":4348,"EndOffset":4355}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":171,"StartOffset":4257,"EndOffset":4266},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":171,"StartOffset":4267,"EndOffset":4274}]},"SessionManager.GetSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","File":"manager.go","Line":115,"StartOffset":2768,"EndOffset":3288,"Content":"// Get gets specific session\n// or get inherited session if option EnableImplicitlyTransmitAsync is true\nfunc (self *SessionManager) GetSession(id SessionID) (Session, bool) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\tsession, ok := shard.Load(id)\n\tif ok {\n\t\treturn session, ok\n\t}\n\tif !self.opts.EnableImplicitlyTransmitAsync {\n\t\treturn nil, false\n\t}\n\n\tid, ok = getSessionID()\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tshard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\treturn shard.Load(id)\n}","Signature":"func (self *SessionManager) GetSession(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":115,"StartOffset":2912,"EndOffset":2924}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":115,"StartOffset":2927,"EndOffset":2934}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","File":"manager.go","Line":125,"StartOffset":3153,"EndOffset":3165}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":117,"StartOffset":3030,"EndOffset":3034}]},"SessionManager.Options":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options","File":"manager.go","Line":83,"StartOffset":2140,"EndOffset":2252,"Content":"// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}","Signature":"func (self SessionManager) Options() ManagerOptions","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":83,"StartOffset":2216,"EndOffset":2230}]},"SessionManager.UnbindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","File":"manager.go","Line":149,"StartOffset":3575,"EndOffset":4012,"Content":"// UnbindSession clears current session\n//\n// Notice: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\nfunc (self *SessionManager) UnbindSession(id SessionID) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\t_, ok := shard.Load(id)\n\tif ok {\n\t\tshard.Delete(id)\n\t}\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\tclearSessionID()\n\t}\n}","Signature":"func (self *SessionManager) UnbindSession(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":149,"StartOffset":3805,"EndOffset":3817}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","File":"manager.go","Line":158,"StartOffset":3991,"EndOffset":4005}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":152,"StartOffset":3902,"EndOffset":3906},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","File":"manager.go","Line":154,"StartOffset":3928,"EndOffset":3934}]},"SessionManager.startGC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","File":"manager.go","Line":187,"StartOffset":4551,"EndOffset":4872,"Content":"// startGC start a scheduled goroutine to call GC() according to GCInterval\nfunc (self *SessionManager) startGC() {\n\tif self.opts.GCInterval \u003c time.Second {\n\t\tpanic(\"GCInterval must be larger than 1 second\")\n\t}\n\tself.tik = time.NewTicker(self.opts.GCInterval)\n\tgo func() {\n\t\tfor range self.tik.C {\n\t\t\tself.GC()\n\t\t}\n\t}()\n}","Signature":"func (self *SessionManager) startGC()","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","File":"manager.go","Line":194,"StartOffset":4857,"EndOffset":4859}]},"SessionMap.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","File":"session.go","Line":131,"StartOffset":3359,"EndOffset":3481,"Content":"// Disable ends the session\nfunc (self *SessionMap) Disable() {\n\tif self == nil {\n\t\treturn\n\t}\n\tself.enabled.Store(false)\n}","Signature":"func (self *SessionMap) Disable()","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export","File":"session.go","Line":139,"StartOffset":3483,"EndOffset":3782,"Content":"// Export COPIES and exports underlying map\nfunc (self *SessionMap) Export() map[interface{}]interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tm := make(map[interface{}]interface{}, len(self.storage))\n\tself.lock.RLock()\n\tfor k, v := range self.storage {\n\t\tm[k] = v\n\t}\n\tself.lock.RUnlock()\n\treturn m\n}","Signature":"func (self *SessionMap) Export() map[interface{}]interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get","File":"session.go","Line":153,"StartOffset":3784,"EndOffset":3986,"Content":"// Get value for specific key\nfunc (self *SessionMap) Get(key interface{}) interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.RLock()\n\tval := self.storage[key]\n\tself.lock.RUnlock()\n\treturn val\n}","Signature":"func (self *SessionMap) Get(key interface{}) interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid","File":"session.go","Line":123,"StartOffset":3192,"EndOffset":3357,"Content":"// IsValid tells if the session is valid at present\nfunc (self *SessionMap) IsValid() bool {\n\tif self == nil {\n\t\treturn false\n\t}\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self *SessionMap) IsValid() bool","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","File":"session.go","Line":164,"StartOffset":3988,"EndOffset":4215,"Content":"// Set value for specific key,and return itself\nfunc (self *SessionMap) WithValue(key, val interface{}) Session {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.Lock()\n\tself.storage[key] = val\n\tself.lock.Unlock()\n\treturn self\n}","Signature":"func (self *SessionMap) WithValue(key, val interface{}) Session","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":164,"StartOffset":4094,"EndOffset":4101}]},"UnbindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"gls.go","Line":129,"StartOffset":3459,"EndOffset":3866,"Content":"// UnbindSession unbind a session (if any) with current goroutine\n//\n// NOTICE: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc UnbindSession() {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.UnbindSession(SessionID(goID()))\n}","Signature":"func UnbindSession()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":133,"StartOffset":3856,"EndOffset":3860}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","File":"gls.go","Line":133,"StartOffset":3832,"EndOffset":3845}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":133,"StartOffset":3846,"EndOffset":3855}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":130,"StartOffset":3774,"EndOffset":3791}]},"checkEnvOptions":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","File":"gls.go","Line":77,"StartOffset":2279,"EndOffset":2906,"Content":"func checkEnvOptions(opts *ManagerOptions) {\n\tif env := os.Getenv(SESSION_CONFIG_KEY); env != \"\" {\n\t\tenvs := strings.Split(env, \",\")\n\t\t// parse first option as EnableTransparentTransmitAsync\n\t\tif strings.ToLower(envs[0]) == \"true\" {\n\t\t\topts.EnableImplicitlyTransmitAsync = true\n\t\t}\n\n\t\t// parse first option as ShardNumber\n\t\tif len(envs) \u003e 1 {\n\t\t\tif opt, err := strconv.Atoi(envs[1]); err == nil {\n\t\t\t\topts.ShardNumber = opt\n\t\t\t}\n\t\t}\n\n\t\t// parse third option as EnableTransparentTransmitAsync\n\t\tif len(envs) \u003e 2 {\n\t\t\tif d, err := time.ParseDuration(envs[2]); err == nil \u0026\u0026 d \u003e time.Second {\n\t\t\t\topts.GCInterval = d\n\t\t\t}\n\t\t}\n\t}\n}","Signature":"func checkEnvOptions(opts *ManagerOptions)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":77,"StartOffset":2300,"EndOffset":2320}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":78,"StartOffset":2345,"EndOffset":2363}]},"clearSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","File":"stubs.go","Line":77,"StartOffset":1687,"EndOffset":1948,"Content":"func clearSessionID() {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn\n\t}\n\tif _, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn\n\t}\n\tn := make(labelMap, len(*m))\n\tfor k, v := range *m {\n\t\tif k != Pprof_Label_Session_ID {\n\t\t\tn[k] = v\n\t\t}\n\t}\n\tsetPprofLabel(\u0026n)\n}","Signature":"func clearSessionID()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":78,"StartOffset":1717,"EndOffset":1729},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":91,"StartOffset":1929,"EndOffset":1942}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":85,"StartOffset":1831,"EndOffset":1839}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":82,"StartOffset":1777,"EndOffset":1799}]},"getPproLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":38,"StartOffset":931,"EndOffset":1022,"Content":"//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap","Signature":"func getPproLabel() *labelMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":38,"StartOffset":1013,"EndOffset":1022}]},"getSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","File":"stubs.go","Line":61,"StartOffset":1396,"EndOffset":1685,"Content":"func getSessionID() (SessionID, bool) {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\tif v, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn 0, false\n\t} else {\n\t\tid, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, false\n\t\t}\n\t\treturn SessionID(id), true\n\t}\n}","Signature":"func getSessionID() (SessionID, bool)","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":61,"StartOffset":1417,"EndOffset":1426}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":62,"StartOffset":1442,"EndOffset":1454}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":73,"StartOffset":1661,"EndOffset":1670}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":66,"StartOffset":1511,"EndOffset":1533}]},"goID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"stubs.go","Line":24,"StartOffset":681,"EndOffset":800,"Content":"//go:nocheckptr\nfunc goID() uint64 {\n\tgid, err := runtimex.GID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uint64(gid)\n}","Signature":"func goID() uint64","FunctionCalls":[{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","File":"stubs.go","Line":25,"StartOffset":740,"EndOffset":743}]},"newShard":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","File":"manager.go","Line":55,"StartOffset":1523,"EndOffset":1634,"Content":"func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}","Signature":"func newShard() *shard","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":55,"StartOffset":1539,"EndOffset":1545}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":56,"StartOffset":1560,"EndOffset":1565},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":57,"StartOffset":1585,"EndOffset":1594},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":57,"StartOffset":1595,"EndOffset":1602}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","File":"manager.go","Line":57,"StartOffset":1604,"EndOffset":1619}]},"setPprofLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":35,"StartOffset":835,"EndOffset":929,"Content":"//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)","Signature":"func setPprofLabel(m *labelMap)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":35,"StartOffset":917,"EndOffset":928}]},"shard.Delete":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","File":"manager.go","Line":107,"StartOffset":2677,"EndOffset":2766,"Content":"func (s *shard) Delete(id SessionID) {\n\ts.lock.Lock()\n\tdelete(s.m, id)\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Delete(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":107,"StartOffset":2700,"EndOffset":2712}]},"shard.Load":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":90,"StartOffset":2319,"EndOffset":2576,"Content":"func (s *shard) Load(id SessionID) (Session, bool) {\n\ts.lock.RLock()\n\n\t// p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(\u0026s.m)))\n\t// m := *(*map[SessionID]Session)(unsafe.Pointer(p))\n\n\tsession, ok := s.m[id]\n\ts.lock.RUnlock()\n\treturn session, ok\n}","Signature":"func (s *shard) Load(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":90,"StartOffset":2340,"EndOffset":2352}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":90,"StartOffset":2355,"EndOffset":2362}]},"shard.Store":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","File":"manager.go","Line":101,"StartOffset":2578,"EndOffset":2675,"Content":"func (s *shard) Store(id SessionID, se Session) {\n\ts.lock.Lock()\n\ts.m[id] = se\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Store(id SessionID, se Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":101,"StartOffset":2600,"EndOffset":2612},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":101,"StartOffset":2614,"EndOffset":2624}]},"transmitSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","File":"stubs.go","Line":42,"StartOffset":1072,"EndOffset":1394,"Content":"func transmitSessionID(id SessionID) {\n\tm := getPproLabel()\n\n\tvar n labelMap\n\tif m == nil {\n\t\tn = make(labelMap)\n\t} else {\n\t\tn = make(labelMap, len(*m))\n\t\tfor k, v := range *m {\n\t\t\tif k != Pprof_Label_Session_ID {\n\t\t\t\tn[k] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}","Signature":"func transmitSessionID(id SessionID)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":42,"StartOffset":1095,"EndOffset":1107}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":43,"StartOffset":1117,"EndOffset":1129},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":58,"StartOffset":1375,"EndOffset":1388}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":45,"StartOffset":1140,"EndOffset":1148}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":51,"StartOffset":1261,"EndOffset":1283}]}},"Types":{"ManagerOptions":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":24,"StartOffset":697,"EndOffset":1270,"Content":"// ManagerOptions for SessionManager\ntype ManagerOptions struct {\n\t// EnableImplicitlyTransmitAsync enables transparently transmit\n\t// current session to children goroutines\n\t//\n\t// WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`,\n\t// otherwise transmitting will be disfunctional\n\tEnableImplicitlyTransmitAsync bool\n\n\t// ShardNumber is used to shard session id, it must be larger than zero\n\tShardNumber int\n\n\t// GCInterval decides the GC interval for SessionManager,\n\t// it must be larger than 1s or zero means disable GC\n\tGCInterval time.Duration\n}"},"Session":{"Exported":true,"TypeKind":"interface","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":25,"StartOffset":725,"EndOffset":1027,"Content":"// Session represents a local storage for one session\ntype Session interface {\n\t// IsValid tells if the session is valid at present\n\tIsValid() bool\n\n\t// Get returns value for specific key\n\tGet(key interface{}) interface{}\n\n\t// WithValue sets value for specific key,and return newly effective session\n\tWithValue(key interface{}, val interface{}) Session\n}","Methods":{"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue"}}},"SessionCtx":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":38,"StartOffset":1149,"EndOffset":1223,"Content":"// SessionCtx implements Session with context,\n// which means children session WON'T affect parent and sibling sessions\ntype SessionCtx struct {\n\tenabled *atomic.Value\n\tstorage context.Context\n}","Methods":{"Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable"},"Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export"},"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue"}},"Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"SessionID":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":88,"StartOffset":2296,"EndOffset":2317,"Content":"// SessionID is the identity of a session\ntype SessionID uint64"},"SessionManager":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":46,"StartOffset":1389,"EndOffset":1495,"Content":"// SessionManager maintain and manage sessions\ntype SessionManager struct {\n\tshards []*shard\n\tinGC uint32\n\ttik *time.Ticker\n\topts ManagerOptions\n}","SubStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":50,"StartOffset":1479,"EndOffset":1493}],"Methods":{"BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},"Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close"},"GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC"},"GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},"Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},"UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},"startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC"}}},"SessionMap":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":95,"StartOffset":2566,"EndOffset":2674,"Content":"// NewSessionMap implements Session with map,\n// which means children session WILL affect parent session and sibling sessions\ntype SessionMap struct {\n\tenabled *atomic.Value\n\tstorage map[interface{}]interface{}\n\tlock sync.RWMutex\n}","Methods":{"Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable"},"Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export"},"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"}},"Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"labelMap":{"Exported":false,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":32,"StartOffset":802,"EndOffset":833,"Content":"type labelMap map[string]string"},"shard":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":40,"StartOffset":1272,"EndOffset":1340,"Content":"type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}","SubStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":42,"StartOffset":1317,"EndOffset":1338}],"Methods":{"Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},"Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},"Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"}}}},"Vars":{"Pprof_Label_Session_ID":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":40,"StartOffset":1030,"EndOffset":1070,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"const Pprof_Label_Session_ID untyped string = \"go_session_id\""},"SESSION_CONFIG_KEY":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":34,"StartOffset":1142,"EndOffset":1193,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"// SESSION_CONFIG_KEY is the env key for configuring default session manager.\n//\n//\tValue format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval]\n//\t- EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled\n//\t- ShardNumber: integer \u003e 0\n//\t- GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC\n//\n// Once the key is set, default option values will be set if the option value doesn't exist.\nconst SESSION_CONFIG_KEY untyped string = \"CLOUDWEGO_SESSION_CONFIG_KEY\""},"defaultManagerObj":{"IsExported":false,"IsConst":false,"IsPointer":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":37,"StartOffset":1202,"EndOffset":1236,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},"Content":"var defaultManagerObj *SessionManager"},"defaultManagerOnce":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce","File":"gls.go","Line":38,"StartOffset":1238,"EndOffset":1266,"Type":{"ModPath":"","PkgPath":"sync","Name":"Once"},"Content":"var defaultManagerOnce sync.Once"},"defaultShardCap":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","File":"manager.go","Line":53,"StartOffset":1501,"EndOffset":1521,"Type":{"ModPath":"","PkgPath":"","Name":"int"},"Content":"var defaultShardCap int = 10"}}},"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]":{"IsMain":false,"IsTest":true,"PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Functions":{"ASSERT":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":24,"StartOffset":673,"EndOffset":729,"Content":"func ASSERT(v bool) {\n\tif !v {\n\t\tpanic(\"not true!\")\n\t}\n}","Signature":"func ASSERT(v bool)"},"BenchmarkGLS_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","File":"api_test.go","Line":548,"StartOffset":12073,"EndOffset":12559,"Content":"func BenchmarkGLS_Get(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(ss)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = mustCurSession().Get(N / 2)\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(ss)\n\t\t\tfor p.Next() {\n\t\t\t\t_ = mustCurSession().Get(N / 2)\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkGLS_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":549,"StartOffset":12117,"EndOffset":12130},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":556,"StartOffset":12267,"EndOffset":12278},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":558,"StartOffset":12319,"EndOffset":12333},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":560,"StartOffset":12353,"EndOffset":12366}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":558,"StartOffset":12336,"EndOffset":12339}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":550,"StartOffset":12161,"EndOffset":12168}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":551,"StartOffset":12190,"EndOffset":12191}]},"BenchmarkGLS_Set":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","File":"api_test.go","Line":574,"StartOffset":12561,"EndOffset":13082,"Content":"func BenchmarkGLS_Set(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(ss)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\tBindSession(mustCurSession().WithValue(N/2, -1))\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(ss)\n\t\t\tfor p.Next() {\n\t\t\t\tBindSession(mustCurSession().WithValue(N/2, -1))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkGLS_Set(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":575,"StartOffset":12605,"EndOffset":12618},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":583,"StartOffset":12756,"EndOffset":12767},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":585,"StartOffset":12816,"EndOffset":12830},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":587,"StartOffset":12859,"EndOffset":12872}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":585,"StartOffset":12833,"EndOffset":12842}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":576,"StartOffset":12649,"EndOffset":12656}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":578,"StartOffset":12679,"EndOffset":12680}]},"BenchmarkLoops":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkLoops","File":"api_test.go","Line":630,"StartOffset":13770,"EndOffset":13883,"Content":"func BenchmarkLoops(b *testing.B) {\n\tfor i := 0; i \u003c b.N; i++ {\n\t\tfor b := 0; b \u003c 100000; b++ {\n\t\t\t_ = b\n\t\t}\n\t}\n}","Signature":"func BenchmarkLoops(b *testing.B)"},"BenchmarkSessionCtx_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","File":"api_test.go","Line":482,"StartOffset":10854,"EndOffset":11245,"Content":"func BenchmarkSessionCtx_Get(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.Get(N / 2)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.Get(N / 2)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionCtx_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":483,"StartOffset":10905,"EndOffset":10918}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":484,"StartOffset":10949,"EndOffset":10956}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":485,"StartOffset":10978,"EndOffset":10979}]},"BenchmarkSessionCtx_WithValue":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","File":"api_test.go","Line":460,"StartOffset":10439,"EndOffset":10852,"Content":"func BenchmarkSessionCtx_WithValue(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionCtx_WithValue(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":461,"StartOffset":10496,"EndOffset":10509}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":462,"StartOffset":10540,"EndOffset":10547}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":463,"StartOffset":10569,"EndOffset":10570}]},"BenchmarkSessionManager_BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","File":"api_test.go","Line":442,"StartOffset":10115,"EndOffset":10437,"Content":"func BenchmarkSessionManager_BindSession(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\tBindSession(s)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\tBindSession(s)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionManager_BindSession(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":443,"StartOffset":10178,"EndOffset":10191},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":447,"StartOffset":10283,"EndOffset":10294}]},"BenchmarkSessionManager_CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","File":"api_test.go","Line":420,"StartOffset":9708,"EndOffset":10113,"Content":"func BenchmarkSessionManager_CurSession(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(s)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = mustCurSession()\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(s)\n\t\t\tfor p.Next() {\n\t\t\t\t_ = mustCurSession()\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionManager_CurSession(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":421,"StartOffset":9770,"EndOffset":9783},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":424,"StartOffset":9845,"EndOffset":9856},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":426,"StartOffset":9896,"EndOffset":9910},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":428,"StartOffset":9919,"EndOffset":9932}]},"BenchmarkSessionMap_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","File":"api_test.go","Line":526,"StartOffset":11671,"EndOffset":12071,"Content":"func BenchmarkSessionMap_Get(b *testing.B) {\n\ts := NewSessionMap(map[interface{}]interface{}{})\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.Get(N / 2)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.Get(N / 2)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionMap_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":527,"StartOffset":11722,"EndOffset":11735}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":528,"StartOffset":11775,"EndOffset":11782}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":529,"StartOffset":11804,"EndOffset":11805}]},"BenchmarkSessionMap_WithValue":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","File":"api_test.go","Line":504,"StartOffset":11247,"EndOffset":11669,"Content":"func BenchmarkSessionMap_WithValue(b *testing.B) {\n\ts := NewSessionMap(map[interface{}]interface{}{})\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionMap_WithValue(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":505,"StartOffset":11304,"EndOffset":11317}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":506,"StartOffset":11357,"EndOffset":11364}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":507,"StartOffset":11386,"EndOffset":11387}]},"BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"gls.go","Line":115,"StartOffset":3200,"EndOffset":3457,"Content":"// BindSession binds the session with current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc BindSession(s Session) {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.BindSession(SessionID(goID()), s)\n}","Signature":"func BindSession(s Session)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":119,"StartOffset":3444,"EndOffset":3448}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":119,"StartOffset":3434,"EndOffset":3443}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":116,"StartOffset":3364,"EndOffset":3381}]},"CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"gls.go","Line":104,"StartOffset":2908,"EndOffset":3198,"Content":"// CurSession gets the session for current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc CurSession() (Session, bool) {\n\tif defaultManagerObj == nil {\n\t\treturn nil, false\n\t}\n\ts, ok := defaultManagerObj.GetSession(SessionID(goID()))\n\treturn s, ok\n}","Signature":"func CurSession() (Session, bool)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":108,"StartOffset":3174,"EndOffset":3178}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":108,"StartOffset":3164,"EndOffset":3173}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":105,"StartOffset":3075,"EndOffset":3092}]},"DefaultManagerOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"gls.go","Line":42,"StartOffset":1270,"EndOffset":1546,"Content":"// DefaultManagerOptions returns default options for the default manager\nfunc DefaultManagerOptions() ManagerOptions {\n\treturn ManagerOptions{\n\t\tShardNumber: 100,\n\t\tGCInterval: time.Minute * 10,\n\t\tEnableImplicitlyTransmitAsync: false,\n\t}\n}","Signature":"func DefaultManagerOptions() ManagerOptions","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"gls.go","Line":43,"StartOffset":1397,"EndOffset":1411}]},"ExampleSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","File":"example_test.go","Line":85,"StartOffset":2059,"EndOffset":4355,"Content":"func ExampleSessionCtx() {\n\t// initialize default manager first\n\tInitDefaultManager(DefaultManagerOptions())\n\n\tvar ctx = context.Background()\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionCtx(ctx) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := GetCurSession().Get(key) // val exists\n\t\tASSERT(val == v)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := GetCurSession().WithValue(key2, v2)\n\t\tval2 := GetCurSession().Get(key2) // val2 == nil\n\t\tASSERT(val2 == nil)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := GetCurSession().Get(key) // val exists\n\t\t\tASSERT(val == v)\n\n\t\t\tval2 := GetCurSession().Get(key2) // val2 exists\n\t\t\tASSERT(val2 == v2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\tASSERT(GetCurSession().IsValid() == false) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := GetCurSession().Get(key) // val exists\n\t\t\tASSERT(v == val)\n\n\t\t\tval2 := GetCurSession().Get(key2) // val2 == nil\n\t\t\tASSERT(val2 == nil)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\tASSERT(GetCurSession().IsValid() == false) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = GetCurSession().Get(key2) // val2 exists\n\t\tASSERT(v2 == val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\tASSERT(next.IsValid() == false) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := GetCurSession().Get(key2) // val2 == nil\n\tASSERT(val2 == nil)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\tASSERT(start.IsValid() == false) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func ExampleSessionCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"example_test.go","Line":87,"StartOffset":2124,"EndOffset":2142},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"example_test.go","Line":87,"StartOffset":2143,"EndOffset":2164},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"example_test.go","Line":96,"StartOffset":2368,"EndOffset":2381},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"example_test.go","Line":102,"StartOffset":2517,"EndOffset":2528},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"example_test.go","Line":105,"StartOffset":2567,"EndOffset":2569},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","File":"example_test.go","Line":107,"StartOffset":2633,"EndOffset":2646},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":108,"StartOffset":2674,"EndOffset":2680},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"example_test.go","Line":118,"StartOffset":2995,"EndOffset":3004},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"example_test.go","Line":186,"StartOffset":4338,"EndOffset":4351}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"example_test.go","Line":107,"StartOffset":2649,"EndOffset":2652},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"example_test.go","Line":113,"StartOffset":2836,"EndOffset":2845},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"example_test.go","Line":130,"StartOffset":3291,"EndOffset":3298}]},"ExampleSessionCtx_EnableImplicitlyTransmitAsync":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","File":"example_test.go","Line":38,"StartOffset":849,"EndOffset":2057,"Content":"func ExampleSessionCtx_EnableImplicitlyTransmitAsync() {\n\t// EnableImplicitlyTransmitAsync must be true\n\tInitDefaultManager(ManagerOptions{\n\t\tShardNumber: 10,\n\t\tEnableImplicitlyTransmitAsync: true,\n\t\tGCInterval: time.Hour,\n\t})\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\tlabels := pprof.Labels(\"c\", \"d\")\n\tpprof.Do(context.Background(), labels, func(ctx context.Context) {})\n\n\ts := NewSessionMap(map[interface{}]interface{}{\n\t\t\"a\": \"b\",\n\t})\n\tBindSession(s)\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\t// labels := pprof.Labels(\"c\", \"d\")\n\t// pprof.Do(context.Background(), labels, func(ctx context.Context){})\n\n\twg := sync.WaitGroup{}\n\twg.Add(3)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\t\t}()\n\n\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\t\tUnbindSession()\n\t\tASSERT(nil == mustCurSession())\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tASSERT(nil == mustCurSession())\n\t\t}()\n\n\t}()\n\twg.Wait()\n}","Signature":"func ExampleSessionCtx_EnableImplicitlyTransmitAsync()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"example_test.go","Line":40,"StartOffset":954,"EndOffset":972},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"example_test.go","Line":51,"StartOffset":1357,"EndOffset":1370},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"example_test.go","Line":54,"StartOffset":1417,"EndOffset":1428},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":65,"StartOffset":1743,"EndOffset":1749},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"example_test.go","Line":65,"StartOffset":1757,"EndOffset":1771},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"example_test.go","Line":73,"StartOffset":1914,"EndOffset":1927}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"example_test.go","Line":65,"StartOffset":1774,"EndOffset":1777}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"example_test.go","Line":40,"StartOffset":973,"EndOffset":987}]},"GetCurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","File":"example_test.go","Line":30,"StartOffset":731,"EndOffset":847,"Content":"func GetCurSession() Session {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tpanic(\"can't get current session!\")\n\t}\n\treturn s\n}","Signature":"func GetCurSession() Session","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"example_test.go","Line":31,"StartOffset":772,"EndOffset":782}]},"GetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","File":"gls.go","Line":51,"StartOffset":1548,"EndOffset":1667,"Content":"// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}","Signature":"func GetDefaultManager() *SessionManager","GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":52,"StartOffset":1648,"EndOffset":1665}]},"Go":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"gls.go","Line":137,"StartOffset":3868,"EndOffset":4049,"Content":"// Go calls f asynchronously and pass caller's session to the new goroutine\nfunc Go(f func()) {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tGoSession(nil, f)\n\t} else {\n\t\tGoSession(s, f)\n\t}\n}","Signature":"func Go(f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"gls.go","Line":138,"StartOffset":3974,"EndOffset":3984},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"gls.go","Line":140,"StartOffset":3999,"EndOffset":4008}]},"GoSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"gls.go","Line":147,"StartOffset":4051,"EndOffset":4361,"Content":"// SessionGo calls f asynchronously and pass s session to the new goroutine\nfunc GoSession(s Session, f func()) {\n\tgo func() {\n\t\tdefer func() {\n\t\t\tif v := recover(); v != nil {\n\t\t\t\tprintln(fmt.Sprintf(\"GoSession recover: %v\", v))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t}()\n\t\tif s != nil {\n\t\t\tBindSession(s)\n\t\t}\n\t\tf()\n\t}()\n}","Signature":"func GoSession(s Session, f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"gls.go","Line":153,"StartOffset":4289,"EndOffset":4302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"gls.go","Line":156,"StartOffset":4330,"EndOffset":4341}]},"InitDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"gls.go","Line":64,"StartOffset":1669,"EndOffset":2277,"Content":"// InitDefaultManager update and restart default manager.\n// It accept argument opts and env config both.\n//\n// NOTICE:\n// - It use env SESSION_CONFIG_KEY prior to argument opts;\n// - If both env and opts are empty, it won't reset manager;\n// - For concurrent safety, you can only successfully reset manager ONCE.\n//\n//go:nocheckptr\nfunc InitDefaultManager(opts ManagerOptions) {\n\tdefaultManagerOnce.Do(func() {\n\t\t// env config has high priority\n\t\tcheckEnvOptions(\u0026opts)\n\n\t\tif defaultManagerObj != nil {\n\t\t\tdefaultManagerObj.Close()\n\t\t}\n\t\tobj := NewSessionManager(opts)\n\t\tdefaultManagerObj = \u0026obj\n\t})\n}","Signature":"func InitDefaultManager(opts ManagerOptions)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","File":"gls.go","Line":67,"StartOffset":2123,"EndOffset":2138},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"gls.go","Line":72,"StartOffset":2221,"EndOffset":2238}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":69,"StartOffset":2152,"EndOffset":2169}]},"NewSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"session.go","Line":44,"StartOffset":1225,"EndOffset":1436,"Content":"// NewSessionCtx creates and enables a SessionCtx\nfunc NewSessionCtx(ctx context.Context) SessionCtx {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn SessionCtx{\n\t\tenabled: \u0026enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func NewSessionCtx(ctx context.Context) SessionCtx","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":47,"StartOffset":1383,"EndOffset":1393}]},"NewSessionCtxWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","File":"session.go","Line":55,"StartOffset":1438,"EndOffset":1720,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx {\n\tret := NewSessionCtx(ctx)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"session.go","Line":56,"StartOffset":1625,"EndOffset":1638}]},"NewSessionManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"manager.go","Line":63,"StartOffset":1636,"EndOffset":2138,"Content":"// NewSessionManager creates a SessionManager with default containers\n// If opts.GCInterval \u003e 0, it will start scheduled GC() loop automatically\nfunc NewSessionManager(opts ManagerOptions) SessionManager {\n\tif opts.ShardNumber \u003c= 0 {\n\t\tpanic(\"ShardNumber must be larger than zero\")\n\t}\n\tshards := make([]*shard, opts.ShardNumber)\n\tfor i := range shards {\n\t\tshards[i] = newShard()\n\t}\n\tret := SessionManager{\n\t\tshards: shards,\n\t\topts: opts,\n\t}\n\n\tif opts.GCInterval \u003e 0 {\n\t\tret.startGC()\n\t}\n\treturn ret\n}","Signature":"func NewSessionManager(opts ManagerOptions) SessionManager","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","File":"manager.go","Line":69,"StartOffset":2004,"EndOffset":2012}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":67,"StartOffset":1940,"EndOffset":1945},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","File":"manager.go","Line":71,"StartOffset":2026,"EndOffset":2040}]},"NewSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"session.go","Line":102,"StartOffset":2676,"EndOffset":2897,"Content":"// NewSessionMap creates and enables a SessionMap\nfunc NewSessionMap(m map[interface{}]interface{}) *SessionMap {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn \u0026SessionMap{\n\t\tenabled: \u0026enabled,\n\t\tstorage: m,\n\t}\n}","Signature":"func NewSessionMap(m map[interface{}]interface{}) *SessionMap","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","File":"session.go","Line":105,"StartOffset":2846,"EndOffset":2856}]},"NewSessionMapWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","File":"session.go","Line":113,"StartOffset":2899,"EndOffset":3190,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap {\n\tret := NewSessionMap(m)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"session.go","Line":114,"StartOffset":3097,"EndOffset":3110}]},"Session.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get","File":"session.go","Line":30,"StartOffset":821,"EndOffset":892,"Content":"// Get returns value for specific key\nGet(key interface{}) interface{}","Signature":"// Get returns value for specific key\nGet(key interface{}) interface{}"},"Session.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid","File":"session.go","Line":27,"StartOffset":751,"EndOffset":818,"Content":"// IsValid tells if the session is valid at present\nIsValid() bool","Signature":"// IsValid tells if the session is valid at present\nIsValid() bool"},"Session.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue","File":"session.go","Line":33,"StartOffset":895,"EndOffset":1025,"Content":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session","Signature":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session"},"SessionCtx.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable","File":"session.go","Line":65,"StartOffset":1722,"EndOffset":1813,"Content":"// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}","Signature":"func (self SessionCtx) Disable()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export","File":"session.go","Line":70,"StartOffset":1815,"EndOffset":1924,"Content":"// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}","Signature":"func (self SessionCtx) Export() context.Context","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get","File":"session.go","Line":80,"StartOffset":2056,"EndOffset":2177,"Content":"// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}","Signature":"func (self SessionCtx) Get(key interface{}) interface{}","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid","File":"session.go","Line":75,"StartOffset":1926,"EndOffset":2054,"Content":"// IsValid tells if the session is valid at present\nfunc (self SessionCtx) IsValid() bool {\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self SessionCtx) IsValid() bool","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","File":"session.go","Line":85,"StartOffset":2179,"EndOffset":2438,"Content":"// Set value for specific key,and return newly effective session\nfunc (self SessionCtx) WithValue(key interface{}, val interface{}) Session {\n\tctx := context.WithValue(self.storage, key, val)\n\treturn SessionCtx{\n\t\tenabled: self.enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func (self SessionCtx) WithValue(key interface{}, val interface{}) Session","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}},"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":87,"StartOffset":2381,"EndOffset":2391}]},"SessionManager.BindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","File":"manager.go","Line":134,"StartOffset":3290,"EndOffset":3573,"Content":"// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(id SessionID, s Session) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(id, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionID(id)\n\t}\n}","Signature":"func (self *SessionManager) BindSession(id SessionID, s Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","File":"manager.go","Line":140,"StartOffset":3547,"EndOffset":3564}]},"SessionManager.Close":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close","File":"manager.go","Line":200,"StartOffset":4874,"EndOffset":5010,"Content":"// Close stop persistent work for the manager, like GC\nfunc (self SessionManager) Close() {\n\tif self.tik != nil {\n\t\tself.tik.Stop()\n\t}\n}","Signature":"func (self SessionManager) Close()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.GC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","File":"manager.go","Line":163,"StartOffset":4014,"EndOffset":4549,"Content":"// GC sweep invalid sessions and release unused memory\nfunc (self SessionManager) GC() {\n\tif !atomic.CompareAndSwapUint32(\u0026self.inGC, 0, 1) {\n\t\treturn\n\t}\n\n\tfor _, shard := range self.shards {\n\t\tshard.lock.Lock()\n\t\tn := shard.m\n\t\tm := make(map[SessionID]Session, len(n))\n\t\tfor id, s := range n {\n\t\t\t// Warning: may panic here?\n\t\t\tif s.IsValid() {\n\t\t\t\tm[id] = s\n\t\t\t}\n\t\t}\n\t\t// atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(\u0026shard.m)), unsafe.Pointer(\u0026m))\n\t\tshard.m = m\n\t\tshard.lock.Unlock()\n\t}\n\n\tatomic.StoreUint32(\u0026self.inGC, 0)\n}","Signature":"func (self SessionManager) GC()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":171,"StartOffset":4257,"EndOffset":4266},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"manager.go","Line":171,"StartOffset":4267,"EndOffset":4274}]},"SessionManager.GetSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","File":"manager.go","Line":115,"StartOffset":2768,"EndOffset":3288,"Content":"// Get gets specific session\n// or get inherited session if option EnableImplicitlyTransmitAsync is true\nfunc (self *SessionManager) GetSession(id SessionID) (Session, bool) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\tsession, ok := shard.Load(id)\n\tif ok {\n\t\treturn session, ok\n\t}\n\tif !self.opts.EnableImplicitlyTransmitAsync {\n\t\treturn nil, false\n\t}\n\n\tid, ok = getSessionID()\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tshard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\treturn shard.Load(id)\n}","Signature":"func (self *SessionManager) GetSession(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","File":"manager.go","Line":125,"StartOffset":3153,"EndOffset":3165}]},"SessionManager.Options":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options","File":"manager.go","Line":83,"StartOffset":2140,"EndOffset":2252,"Content":"// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}","Signature":"func (self SessionManager) Options() ManagerOptions","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.UnbindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","File":"manager.go","Line":149,"StartOffset":3575,"EndOffset":4012,"Content":"// UnbindSession clears current session\n//\n// Notice: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\nfunc (self *SessionManager) UnbindSession(id SessionID) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\t_, ok := shard.Load(id)\n\tif ok {\n\t\tshard.Delete(id)\n\t}\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\tclearSessionID()\n\t}\n}","Signature":"func (self *SessionManager) UnbindSession(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","File":"manager.go","Line":158,"StartOffset":3991,"EndOffset":4005}]},"SessionManager.startGC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC","File":"manager.go","Line":187,"StartOffset":4551,"EndOffset":4872,"Content":"// startGC start a scheduled goroutine to call GC() according to GCInterval\nfunc (self *SessionManager) startGC() {\n\tif self.opts.GCInterval \u003c time.Second {\n\t\tpanic(\"GCInterval must be larger than 1 second\")\n\t}\n\tself.tik = time.NewTicker(self.opts.GCInterval)\n\tgo func() {\n\t\tfor range self.tik.C {\n\t\t\tself.GC()\n\t\t}\n\t}()\n}","Signature":"func (self *SessionManager) startGC()","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionMap.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable","File":"session.go","Line":131,"StartOffset":3359,"EndOffset":3481,"Content":"// Disable ends the session\nfunc (self *SessionMap) Disable() {\n\tif self == nil {\n\t\treturn\n\t}\n\tself.enabled.Store(false)\n}","Signature":"func (self *SessionMap) Disable()","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export","File":"session.go","Line":139,"StartOffset":3483,"EndOffset":3782,"Content":"// Export COPIES and exports underlying map\nfunc (self *SessionMap) Export() map[interface{}]interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tm := make(map[interface{}]interface{}, len(self.storage))\n\tself.lock.RLock()\n\tfor k, v := range self.storage {\n\t\tm[k] = v\n\t}\n\tself.lock.RUnlock()\n\treturn m\n}","Signature":"func (self *SessionMap) Export() map[interface{}]interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get","File":"session.go","Line":153,"StartOffset":3784,"EndOffset":3986,"Content":"// Get value for specific key\nfunc (self *SessionMap) Get(key interface{}) interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.RLock()\n\tval := self.storage[key]\n\tself.lock.RUnlock()\n\treturn val\n}","Signature":"func (self *SessionMap) Get(key interface{}) interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid","File":"session.go","Line":123,"StartOffset":3192,"EndOffset":3357,"Content":"// IsValid tells if the session is valid at present\nfunc (self *SessionMap) IsValid() bool {\n\tif self == nil {\n\t\treturn false\n\t}\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self *SessionMap) IsValid() bool","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue","File":"session.go","Line":164,"StartOffset":3988,"EndOffset":4215,"Content":"// Set value for specific key,and return itself\nfunc (self *SessionMap) WithValue(key, val interface{}) Session {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.Lock()\n\tself.storage[key] = val\n\tself.lock.Unlock()\n\treturn self\n}","Signature":"func (self *SessionMap) WithValue(key, val interface{}) Session","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"TestMain":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","File":"api_test.go","Line":32,"StartOffset":759,"EndOffset":844,"Content":"func TestMain(m *testing.M) {\n\tInitDefaultManager(DefaultManagerOptions())\n\tm.Run()\n}","Signature":"func TestMain(m *testing.M)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":33,"StartOffset":790,"EndOffset":808},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"api_test.go","Line":33,"StartOffset":809,"EndOffset":830}]},"TestRace":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","File":"api_test.go","Line":394,"StartOffset":9150,"EndOffset":9706,"Content":"func TestRace(t *testing.T) {\n\tmanager := NewSessionManager(ManagerOptions{\n\t\tShardNumber: 1,\n\t\tGCInterval: time.Second,\n\t})\n\tvar N = 1000\n\tvar start sync.RWMutex\n\tstart.Lock()\n\twg := sync.WaitGroup{}\n\tfor i := 0; i \u003c N; i++ {\n\t\twg.Add(1)\n\t\tgo func(i int) {\n\t\t\tdefer wg.Done()\n\t\t\ts := NewSessionMap(map[interface{}]interface{}{}).WithValue(\"a\", \"b\")\n\t\t\tstart.RLock()\n\t\t\tmanager.BindSession(SessionID(i), s)\n\t\t\tss, ok := manager.GetSession(SessionID(i))\n\t\t\tif !ok || ss.Get(\"a\") != \"b\" {\n\t\t\t\tt.Fatal(\"not equal\")\n\t\t\t}\n\t\t}(i)\n\t}\n\tstart.Unlock()\n\twg.Wait()\n}","Signature":"func TestRace(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":395,"StartOffset":9192,"EndOffset":9209},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":407,"StartOffset":9436,"EndOffset":9449}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","File":"api_test.go","Line":407,"StartOffset":9481,"EndOffset":9490}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":395,"StartOffset":9210,"EndOffset":9224},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":409,"StartOffset":9541,"EndOffset":9550}]},"TestRealBizGLS":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","File":"api_test.go","Line":666,"StartOffset":14381,"EndOffset":15078,"Content":"func TestRealBizGLS(t *testing.T) {\n\tvar runner = func(N int) {\n\t\tm := NewSessionManager(ManagerOptions{\n\t\t\tShardNumber: 100,\n\t\t\tGCInterval: time.Second,\n\t\t})\n\t\ts := \u0026stat{\n\t\t\tmin: time.Duration(math.MaxInt64),\n\t\t}\n\t\tctx, _ := context.WithTimeout(context.Background(), time.Second*60)\n\t\temitLoops(\u0026m, ctx, N, s)\n\t\tgo func(ctx context.Context) {\n\t\t\ttt := time.NewTicker(time.Second)\n\t\t\tfor {\n\t\t\t\tselect {\n\t\t\t\tcase \u003c-tt.C:\n\t\t\t\t\t{\n\t\t\t\t\t\tprintln(s.String())\n\t\t\t\t\t}\n\t\t\t\tcase \u003c-ctx.Done():\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t}\n\t\t}(ctx)\n\t\t\u003c-ctx.Done()\n\t}\n\n\tt.Run(\"10\", func(t *testing.T) {\n\t\trunner(10)\n\t})\n\tt.Run(\"100\", func(t *testing.T) {\n\t\trunner(100)\n\t})\n\tt.Run(\"1000\", func(t *testing.T) {\n\t\trunner(1000)\n\t})\n}","Signature":"func TestRealBizGLS(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":668,"StartOffset":14452,"EndOffset":14469},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","File":"api_test.go","Line":676,"StartOffset":14669,"EndOffset":14678}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":668,"StartOffset":14470,"EndOffset":14484},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","File":"api_test.go","Line":672,"StartOffset":14549,"EndOffset":14553}]},"TestResetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","File":"api_test.go","Line":37,"StartOffset":846,"EndOffset":2463,"Content":"func TestResetDefaultManager(t *testing.T) {\n\told := defaultManagerObj\n\n\tt.Run(\"arg\", func(t *testing.T) {\n\t\tdefaultManagerOnce = sync.Once{}\n\t\texp := ManagerOptions{\n\t\t\tShardNumber: 1,\n\t\t\tEnableImplicitlyTransmitAsync: true,\n\t\t\tGCInterval: time.Second * 2,\n\t\t}\n\t\tInitDefaultManager(exp)\n\t\tact := defaultManagerObj.Options()\n\t\trequire.Equal(t, exp, act)\n\t})\n\n\tt.Run(\"arg\", func(t *testing.T) {\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv := `true,10,10s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp := DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact := defaultManagerObj.Options()\n\t\texp.ShardNumber = 10\n\t\texp.EnableImplicitlyTransmitAsync = true\n\t\texp.GCInterval = time.Second * 10\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `,1000`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.ShardNumber = 1000\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `,1,2s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.ShardNumber = 1\n\t\texp.GCInterval = time.Second * 2\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `true,,2s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.EnableImplicitlyTransmitAsync = true\n\t\texp.GCInterval = time.Second * 2\n\t\trequire.Equal(t, exp, act)\n\t})\n\n\tdefaultManagerObj = old\n\tdefaultManagerOnce = sync.Once{}\n}","Signature":"func TestResetDefaultManager(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":47,"StartOffset":1147,"EndOffset":1165},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":49,"StartOffset":1218,"EndOffset":1223},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"api_test.go","Line":56,"StartOffset":1381,"EndOffset":1402}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":42,"StartOffset":997,"EndOffset":1011}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"api_test.go","Line":38,"StartOffset":899,"EndOffset":916},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"api_test.go","Line":41,"StartOffset":955,"EndOffset":973},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"api_test.go","Line":55,"StartOffset":1347,"EndOffset":1365}]},"TestSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","File":"api_test.go","Line":154,"StartOffset":3840,"EndOffset":6120,"Content":"func TestSessionCtx(t *testing.T) {\n\tvar ctx = context.Background()\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionCtx(ctx) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := mustCurSession().Get(key) // val exists\n\t\trequire.Equal(t, v, val)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := mustCurSession().WithValue(key2, v2)\n\t\tval2 := mustCurSession().Get(key2) // val2 == nil\n\t\trequire.Nil(t, val2)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exists\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 == nil\n\t\t\trequire.Nil(t, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = mustCurSession().Get(key2) // val2 exists\n\t\trequire.Equal(t, v2, val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\trequire.False(t, next.IsValid()) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := mustCurSession().Get(key2) // val2 == nil\n\trequire.Nil(t, val2)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\trequire.False(t, start.IsValid()) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func TestSessionCtx(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":162,"StartOffset":4075,"EndOffset":4088},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":168,"StartOffset":4224,"EndOffset":4235},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"api_test.go","Line":171,"StartOffset":4274,"EndOffset":4276},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":173,"StartOffset":4340,"EndOffset":4354},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":174,"StartOffset":4390,"EndOffset":4395},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","File":"api_test.go","Line":181,"StartOffset":4635,"EndOffset":4638},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"api_test.go","Line":184,"StartOffset":4714,"EndOffset":4723},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":196,"StartOffset":5013,"EndOffset":5018},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":252,"StartOffset":6103,"EndOffset":6116}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":173,"StartOffset":4357,"EndOffset":4360},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":179,"StartOffset":4553,"EndOffset":4562},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"api_test.go","Line":196,"StartOffset":5039,"EndOffset":5046}]},"TestSessionManager_GC":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","File":"api_test.go","Line":360,"StartOffset":8481,"EndOffset":9148,"Content":"func TestSessionManager_GC(t *testing.T) {\n\tinter := time.Second * 2\n\tsd := 10\n\tmanager := NewSessionManager(ManagerOptions{\n\t\tShardNumber: sd,\n\t\tGCInterval: inter,\n\t})\n\n\tvar N = 1000\n\tfor i := 0; i \u003c N; i++ {\n\t\tm := map[interface{}]interface{}{}\n\t\ts := NewSessionMap(m)\n\t\tmanager.BindSession(SessionID(i), s)\n\t\tif i%2 == 1 {\n\t\t\ts.Disable()\n\t\t}\n\t}\n\tfor _, shard := range manager.shards {\n\t\tshard.lock.Lock()\n\t\tl := len(shard.m)\n\t\tshard.lock.Unlock()\n\t\trequire.Equal(t, N/sd, l)\n\t}\n\ttime.Sleep(inter + inter\u003e\u003e1)\n\tsum := 0\n\tfor _, shard := range manager.shards {\n\t\tshard.lock.Lock()\n\t\tl := len(shard.m)\n\t\tshard.lock.Unlock()\n\t\tsum += l\n\t}\n\trequire.Equal(t, N/2, sum)\n}","Signature":"func TestSessionManager_GC(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":363,"StartOffset":8572,"EndOffset":8589},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":371,"StartOffset":8736,"EndOffset":8749},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":381,"StartOffset":8942,"EndOffset":8947}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":363,"StartOffset":8590,"EndOffset":8604},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":372,"StartOffset":8775,"EndOffset":8784}]},"TestSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","File":"api_test.go","Line":260,"StartOffset":6189,"EndOffset":8479,"Content":"func TestSessionMap(t *testing.T) {\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionMap(map[interface{}]interface{}{}) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := mustCurSession().Get(key) // val exists\n\t\trequire.Equal(t, v, val)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := mustCurSession().WithValue(key2, v2)\n\t\tval2 := mustCurSession().Get(key2) // val2 exist\n\t\trequire.Equal(t, v2, val2)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exists\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exist\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = mustCurSession().Get(key2) // val2 exists\n\t\trequire.Equal(t, v2, val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\trequire.False(t, next.IsValid()) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := mustCurSession().Get(key2) // val2 exists\n\trequire.Equal(t, v2, val2)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\trequire.False(t, start.IsValid()) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func TestSessionMap(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":267,"StartOffset":6392,"EndOffset":6405},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":273,"StartOffset":6567,"EndOffset":6578},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"api_test.go","Line":276,"StartOffset":6617,"EndOffset":6619},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":278,"StartOffset":6683,"EndOffset":6697},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":279,"StartOffset":6733,"EndOffset":6738},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"api_test.go","Line":289,"StartOffset":7062,"EndOffset":7071},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":301,"StartOffset":7361,"EndOffset":7366},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":357,"StartOffset":8462,"EndOffset":8475}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":278,"StartOffset":6700,"EndOffset":6703},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":284,"StartOffset":6896,"EndOffset":6905},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"api_test.go","Line":301,"StartOffset":7387,"EndOffset":7394}]},"TestSessionTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","File":"api_test.go","Line":144,"StartOffset":3513,"EndOffset":3838,"Content":"func TestSessionTimeout(t *testing.T) {\n\ts := NewSessionCtxWithTimeout(context.Background(), time.Second)\n\tss := s.WithValue(1, 2)\n\tm := NewSessionMapWithTimeout(map[interface{}]interface{}{}, time.Second)\n\tmm := m.WithValue(1, 2)\n\ttime.Sleep(time.Second * 2)\n\trequire.False(t, ss.IsValid())\n\trequire.False(t, mm.IsValid())\n}","Signature":"func TestSessionTimeout(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","File":"api_test.go","Line":145,"StartOffset":3559,"EndOffset":3583},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","File":"api_test.go","Line":147,"StartOffset":3650,"EndOffset":3674},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":150,"StartOffset":3782,"EndOffset":3787}]},"TestTransparentTransmitAsync":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","File":"api_test.go","Line":99,"StartOffset":2465,"EndOffset":3511,"Content":"//go:nocheckptr\nfunc TestTransparentTransmitAsync(t *testing.T) {\n\told := defaultManagerObj\n\tInitDefaultManager(ManagerOptions{\n\t\tShardNumber: 10,\n\t\tEnableImplicitlyTransmitAsync: true,\n\t\tGCInterval: time.Second * 2,\n\t})\n\ts := NewSessionMap(map[interface{}]interface{}{\n\t\t\"a\": \"b\",\n\t})\n\n\tlabels := pprof.Labels(\"c\", \"d\")\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\tpprof.Do(context.Background(), labels, func(ctx context.Context) {})\n\n\tBindSession(s)\n\n\twg := sync.WaitGroup{}\n\twg.Add(3)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\t\t}()\n\n\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\t\tUnbindSession()\n\t\trequire.Nil(t, mustCurSession())\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\trequire.Nil(t, mustCurSession())\n\t\t}()\n\t}()\n\n\twg.Wait()\n\tdefaultManagerObj = old\n\tdefaultManagerOnce = sync.Once{}\n}","Signature":"func TestTransparentTransmitAsync(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":101,"StartOffset":2558,"EndOffset":2576},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":106,"StartOffset":2729,"EndOffset":2742},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":116,"StartOffset":3028,"EndOffset":3039},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":122,"StartOffset":3120,"EndOffset":3125},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":122,"StartOffset":3134,"EndOffset":3148},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":130,"StartOffset":3307,"EndOffset":3320},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","File":"api_test.go","Line":131,"StartOffset":3333,"EndOffset":3336}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":122,"StartOffset":3151,"EndOffset":3154}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":101,"StartOffset":2577,"EndOffset":2591}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"api_test.go","Line":100,"StartOffset":2539,"EndOffset":2556},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"api_test.go","Line":141,"StartOffset":3477,"EndOffset":3495}]},"UnbindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"gls.go","Line":129,"StartOffset":3459,"EndOffset":3866,"Content":"// UnbindSession unbind a session (if any) with current goroutine\n//\n// NOTICE: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc UnbindSession() {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.UnbindSession(SessionID(goID()))\n}","Signature":"func UnbindSession()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":133,"StartOffset":3856,"EndOffset":3860}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":133,"StartOffset":3846,"EndOffset":3855}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":130,"StartOffset":3774,"EndOffset":3791}]},"checkEnvOptions":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","File":"gls.go","Line":77,"StartOffset":2279,"EndOffset":2906,"Content":"func checkEnvOptions(opts *ManagerOptions) {\n\tif env := os.Getenv(SESSION_CONFIG_KEY); env != \"\" {\n\t\tenvs := strings.Split(env, \",\")\n\t\t// parse first option as EnableTransparentTransmitAsync\n\t\tif strings.ToLower(envs[0]) == \"true\" {\n\t\t\topts.EnableImplicitlyTransmitAsync = true\n\t\t}\n\n\t\t// parse first option as ShardNumber\n\t\tif len(envs) \u003e 1 {\n\t\t\tif opt, err := strconv.Atoi(envs[1]); err == nil {\n\t\t\t\topts.ShardNumber = opt\n\t\t\t}\n\t\t}\n\n\t\t// parse third option as EnableTransparentTransmitAsync\n\t\tif len(envs) \u003e 2 {\n\t\t\tif d, err := time.ParseDuration(envs[2]); err == nil \u0026\u0026 d \u003e time.Second {\n\t\t\t\topts.GCInterval = d\n\t\t\t}\n\t\t}\n\t}\n}","Signature":"func checkEnvOptions(opts *ManagerOptions)","GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":78,"StartOffset":2345,"EndOffset":2363}]},"clearSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","File":"stubs.go","Line":77,"StartOffset":1687,"EndOffset":1948,"Content":"func clearSessionID() {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn\n\t}\n\tif _, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn\n\t}\n\tn := make(labelMap, len(*m))\n\tfor k, v := range *m {\n\t\tif k != Pprof_Label_Session_ID {\n\t\t\tn[k] = v\n\t\t}\n\t}\n\tsetPprofLabel(\u0026n)\n}","Signature":"func clearSessionID()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":78,"StartOffset":1717,"EndOffset":1729},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":91,"StartOffset":1929,"EndOffset":1942}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":85,"StartOffset":1831,"EndOffset":1839}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":82,"StartOffset":1777,"EndOffset":1799}]},"emitLoops":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","File":"api_test.go","Line":601,"StartOffset":13084,"EndOffset":13768,"Content":"func emitLoops(m *SessionManager, ctx context.Context, N int, s *stat) {\n\tfor i := 0; i \u003c N; i++ {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tif ctx.Err() != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tstart := time.Now()\n\t\t\t\tsession := NewSessionCtx(ctx)\n\t\t\t\tss := session.WithValue(\"a\", \"b\")\n\t\t\t\tm.BindSession(SessionID(goID()), ss)\n\t\t\t\tsss, _ := m.GetSession(SessionID(goID()))\n\t\t\t\tif val := sss.Get(\"a\"); val != \"b\" {\n\t\t\t\t\tpanic(fmt.Sprintf(\"unexpected val: %#v\", val))\n\t\t\t\t}\n\t\t\t\tm.UnbindSession(SessionID(goID()))\n\t\t\t\tcost := time.Now().Sub(start)\n\t\t\t\ts.Update(cost)\n\t\t\t\tfor a := 0; a \u003c 10; a++ {\n\t\t\t\t\ttime.Sleep(time.Microsecond * 50)\n\t\t\t\t\tfor b := 0; b \u003c 100000; b++ {\n\t\t\t\t\t\t_ = b\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n}","Signature":"func emitLoops(m *SessionManager, ctx context.Context, N int, s *stat)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":609,"StartOffset":13289,"EndOffset":13302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"api_test.go","Line":611,"StartOffset":13374,"EndOffset":13378}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":611,"StartOffset":13364,"EndOffset":13373}]},"getPproLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":38,"StartOffset":931,"EndOffset":1022,"Content":"//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap","Signature":"func getPproLabel() *labelMap"},"getSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","File":"stubs.go","Line":61,"StartOffset":1396,"EndOffset":1685,"Content":"func getSessionID() (SessionID, bool) {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\tif v, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn 0, false\n\t} else {\n\t\tid, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, false\n\t\t}\n\t\treturn SessionID(id), true\n\t}\n}","Signature":"func getSessionID() (SessionID, bool)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":62,"StartOffset":1442,"EndOffset":1454}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"stubs.go","Line":73,"StartOffset":1661,"EndOffset":1670}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":66,"StartOffset":1511,"EndOffset":1533}]},"goID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"stubs.go","Line":24,"StartOffset":681,"EndOffset":800,"Content":"//go:nocheckptr\nfunc goID() uint64 {\n\tgid, err := runtimex.GID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uint64(gid)\n}","Signature":"func goID() uint64","FunctionCalls":[{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","File":"stubs.go","Line":25,"StartOffset":740,"EndOffset":743}]},"mustCurSession":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":255,"StartOffset":6122,"EndOffset":6187,"Content":"func mustCurSession() Session {\n\ts, _ := CurSession()\n\treturn s\n}","Signature":"func mustCurSession() Session","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"api_test.go","Line":256,"StartOffset":6163,"EndOffset":6173}]},"newShard":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","File":"manager.go","Line":55,"StartOffset":1523,"EndOffset":1634,"Content":"func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}","Signature":"func newShard() *shard","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":56,"StartOffset":1560,"EndOffset":1565},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":57,"StartOffset":1585,"EndOffset":1594},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"manager.go","Line":57,"StartOffset":1595,"EndOffset":1602}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","File":"manager.go","Line":57,"StartOffset":1604,"EndOffset":1619}]},"setPprofLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":35,"StartOffset":835,"EndOffset":929,"Content":"//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)","Signature":"func setPprofLabel(m *labelMap)"},"shard.Delete":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete","File":"manager.go","Line":107,"StartOffset":2677,"EndOffset":2766,"Content":"func (s *shard) Delete(id SessionID) {\n\ts.lock.Lock()\n\tdelete(s.m, id)\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Delete(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"shard.Load":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load","File":"manager.go","Line":90,"StartOffset":2319,"EndOffset":2576,"Content":"func (s *shard) Load(id SessionID) (Session, bool) {\n\ts.lock.RLock()\n\n\t// p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(\u0026s.m)))\n\t// m := *(*map[SessionID]Session)(unsafe.Pointer(p))\n\n\tsession, ok := s.m[id]\n\ts.lock.RUnlock()\n\treturn session, ok\n}","Signature":"func (s *shard) Load(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"shard.Store":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store","File":"manager.go","Line":101,"StartOffset":2578,"EndOffset":2675,"Content":"func (s *shard) Store(id SessionID, se Session) {\n\ts.lock.Lock()\n\ts.m[id] = se\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Store(id SessionID, se Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"stat.String":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String","File":"api_test.go","Line":660,"StartOffset":14204,"EndOffset":14379,"Content":"func (st *stat) String() string {\n\tst.mux.RLock()\n\tdefer st.mux.RUnlock()\n\treturn fmt.Sprintf(\"min:%dns, max:%dns, avg:%dns\", st.min, st.max, st.sum/time.Duration(st.count))\n}","Signature":"func (st *stat) String() string","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}}},"stat.Update":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update","File":"api_test.go","Line":647,"StartOffset":14000,"EndOffset":14202,"Content":"func (st *stat) Update(cost time.Duration) {\n\tst.mux.Lock()\n\tdefer st.mux.Unlock()\n\tif cost \u003e st.max {\n\t\tst.max = cost\n\t} else if cost \u003c st.min {\n\t\tst.min = cost\n\t}\n\tst.count++\n\tst.sum += cost\n\treturn\n}","Signature":"func (st *stat) Update(cost time.Duration)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}}},"transmitSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","File":"stubs.go","Line":42,"StartOffset":1072,"EndOffset":1394,"Content":"func transmitSessionID(id SessionID) {\n\tm := getPproLabel()\n\n\tvar n labelMap\n\tif m == nil {\n\t\tn = make(labelMap)\n\t} else {\n\t\tn = make(labelMap, len(*m))\n\t\tfor k, v := range *m {\n\t\t\tif k != Pprof_Label_Session_ID {\n\t\t\t\tn[k] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}","Signature":"func transmitSessionID(id SessionID)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":43,"StartOffset":1117,"EndOffset":1129},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":58,"StartOffset":1375,"EndOffset":1388}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":45,"StartOffset":1140,"EndOffset":1148}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":51,"StartOffset":1261,"EndOffset":1283}]}},"Types":{"ManagerOptions":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"manager.go","Line":24,"StartOffset":697,"EndOffset":1270,"Content":"// ManagerOptions for SessionManager\ntype ManagerOptions struct {\n\t// EnableImplicitlyTransmitAsync enables transparently transmit\n\t// current session to children goroutines\n\t//\n\t// WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`,\n\t// otherwise transmitting will be disfunctional\n\tEnableImplicitlyTransmitAsync bool\n\n\t// ShardNumber is used to shard session id, it must be larger than zero\n\tShardNumber int\n\n\t// GCInterval decides the GC interval for SessionManager,\n\t// it must be larger than 1s or zero means disable GC\n\tGCInterval time.Duration\n}"},"Session":{"Exported":true,"TypeKind":"interface","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"session.go","Line":25,"StartOffset":725,"EndOffset":1027,"Content":"// Session represents a local storage for one session\ntype Session interface {\n\t// IsValid tells if the session is valid at present\n\tIsValid() bool\n\n\t// Get returns value for specific key\n\tGet(key interface{}) interface{}\n\n\t// WithValue sets value for specific key,and return newly effective session\n\tWithValue(key interface{}, val interface{}) Session\n}","Methods":{"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue"}}},"SessionCtx":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":38,"StartOffset":1149,"EndOffset":1223,"Content":"// SessionCtx implements Session with context,\n// which means children session WON'T affect parent and sibling sessions\ntype SessionCtx struct {\n\tenabled *atomic.Value\n\tstorage context.Context\n}","Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"SessionID":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":88,"StartOffset":2296,"EndOffset":2317,"Content":"// SessionID is the identity of a session\ntype SessionID uint64"},"SessionManager":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","File":"manager.go","Line":46,"StartOffset":1389,"EndOffset":1495,"Content":"// SessionManager maintain and manage sessions\ntype SessionManager struct {\n\tshards []*shard\n\tinGC uint32\n\ttik *time.Ticker\n\topts ManagerOptions\n}"},"SessionMap":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","File":"session.go","Line":95,"StartOffset":2566,"EndOffset":2674,"Content":"// NewSessionMap implements Session with map,\n// which means children session WILL affect parent session and sibling sessions\ntype SessionMap struct {\n\tenabled *atomic.Value\n\tstorage map[interface{}]interface{}\n\tlock sync.RWMutex\n}","Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"labelMap":{"Exported":false,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":32,"StartOffset":802,"EndOffset":833,"Content":"type labelMap map[string]string"},"shard":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":40,"StartOffset":1272,"EndOffset":1340,"Content":"type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}"},"stat":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","File":"api_test.go","Line":638,"StartOffset":13885,"EndOffset":13998,"Content":"type stat struct {\n\tmax time.Duration\n\tmin time.Duration\n\tsum time.Duration\n\tcount int\n\n\tmux sync.RWMutex\n}"}},"Vars":{"N":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":30,"StartOffset":751,"EndOffset":757,"Type":{"ModPath":"","PkgPath":"","Name":"untyped int"},"Content":"const N untyped int = 10"},"Pprof_Label_Session_ID":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":40,"StartOffset":1030,"EndOffset":1070,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"const Pprof_Label_Session_ID untyped string = \"go_session_id\""},"SESSION_CONFIG_KEY":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":34,"StartOffset":1142,"EndOffset":1193,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"// SESSION_CONFIG_KEY is the env key for configuring default session manager.\n//\n//\tValue format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval]\n//\t- EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled\n//\t- ShardNumber: integer \u003e 0\n//\t- GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC\n//\n// Once the key is set, default option values will be set if the option value doesn't exist.\nconst SESSION_CONFIG_KEY untyped string = \"CLOUDWEGO_SESSION_CONFIG_KEY\""},"defaultManagerObj":{"IsExported":false,"IsConst":false,"IsPointer":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":37,"StartOffset":1202,"EndOffset":1236,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},"Content":"var defaultManagerObj *localsession.SessionManager"},"defaultManagerOnce":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"gls.go","Line":38,"StartOffset":1238,"EndOffset":1266,"Type":{"ModPath":"","PkgPath":"sync","Name":"Once"},"Content":"var defaultManagerOnce sync.Once"},"defaultShardCap":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","File":"manager.go","Line":53,"StartOffset":1501,"EndOffset":1521,"Type":{"ModPath":"","PkgPath":"","Name":"int"},"Content":"var defaultShardCap int = 10"}}},"github.com/cloudwego/localsession/backup":{"IsMain":false,"IsTest":false,"PkgPath":"github.com/cloudwego/localsession/backup","Functions":{"BackupCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","File":"backup/metainfo.go","Line":104,"StartOffset":2573,"EndOffset":2753,"Content":"// Set current Sessioin\nfunc BackupCtx(ctx context.Context) {\n\tif localsession.GetDefaultManager() == nil {\n\t\treturn\n\t}\n\tlocalsession.BindSession(localsession.NewSessionCtx(ctx))\n}","Signature":"func BackupCtx(ctx context.Context)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"backup/metainfo.go","Line":105,"StartOffset":2652,"EndOffset":2669},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"backup/metainfo.go","Line":108,"StartOffset":2707,"EndOffset":2718},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"backup/metainfo.go","Line":108,"StartOffset":2732,"EndOffset":2745}]},"ClearCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","File":"backup/metainfo.go","Line":112,"StartOffset":2755,"EndOffset":2829,"Content":"// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}","Signature":"func ClearCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"backup/metainfo.go","Line":113,"StartOffset":2812,"EndOffset":2825}]},"DefaultOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","File":"backup/metainfo.go","Line":36,"StartOffset":965,"EndOffset":1118,"Content":"// Default Options\nfunc DefaultOptions() Options {\n\treturn Options{\n\t\tEnable: false,\n\t\tManagerOptions: localsession.DefaultManagerOptions(),\n\t}\n}","Signature":"func DefaultOptions() Options","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":36,"StartOffset":1006,"EndOffset":1013}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"backup/metainfo.go","Line":39,"StartOffset":1089,"EndOffset":1110}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":37,"StartOffset":1024,"EndOffset":1031}]},"Init":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","File":"backup/metainfo.go","Line":45,"StartOffset":1120,"EndOffset":1327,"Content":"// Init gloabal session manager\n// It uses env config first, the key is localsession.SESSION_CONFIG_KEY\nfunc Init(opts Options) {\n\tif opts.Enable {\n\t\tlocalsession.InitDefaultManager(opts.ManagerOptions)\n\t}\n}","Signature":"func Init(opts Options)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":45,"StartOffset":1234,"EndOffset":1246}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"backup/metainfo.go","Line":47,"StartOffset":1283,"EndOffset":1301}]},"RecoverCtxOnDemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","File":"backup/metainfo.go","Line":54,"StartOffset":1329,"EndOffset":2571,"Content":"// If handler != nil, this func will try to merge metainfo\n// and pre-defined key-values (through Options.BackupHanlder)\n// from backup context into given context\nfunc RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context {\n\tif handler == nil {\n\t\treturn ctx\n\t}\n\ts, ok := localsession.CurSession()\n\tif !ok {\n\t\treturn ctx\n\t}\n\tc, ok := s.(localsession.SessionCtx)\n\tif !ok {\n\t\treturn ctx\n\t}\n\tpre := c.Export()\n\n\t// trigger user-defined handler if any\n\tnctx, backup := handler(pre, ctx)\n\tif !backup {\n\t\treturn ctx\n\t}\n\tctx = nctx\n\n\t// two-way merge all persistent metainfo if pre context has\n\tif n := metainfo.CountPersistentValues(pre); n \u003e 0 {\n\t\t// persistent kvs\n\t\tkvs := make([]string, 0, n*2)\n\t\tmkvs := metainfo.GetAllPersistentValues(ctx)\n\n\t\t// incoming ctx is prior to session\n\t\tif len(mkvs) == 0 {\n\t\t\t// merge all kvs from pre\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\t// filter kvs which exists in cur\n\t\t\t\tif _, ok := mkvs[k]; !ok {\n\t\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t\tctx = metainfo.WithPersistentValues(ctx, kvs...)\n\t}\n\n\treturn ctx\n}","Signature":"func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","File":"backup/metainfo.go","Line":54,"StartOffset":1538,"EndOffset":1559}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"backup/metainfo.go","Line":58,"StartOffset":1639,"EndOffset":1649},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","File":"backup/metainfo.go","Line":76,"StartOffset":1959,"EndOffset":1980},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","File":"backup/metainfo.go","Line":79,"StartOffset":2066,"EndOffset":2088},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","File":"backup/metainfo.go","Line":84,"StartOffset":2196,"EndOffset":2217},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo.go","Line":97,"StartOffset":2520,"EndOffset":2540}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"backup/metainfo.go","Line":66,"StartOffset":1752,"EndOffset":1758}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"backup/metainfo.go","Line":62,"StartOffset":1704,"EndOffset":1714}]}},"Types":{"BackupHandler":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","File":"backup/metainfo.go","Line":27,"StartOffset":800,"EndOffset":885,"Content":"// BackupHandler is used to decide and recover prev context to cur context\ntype BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool)"},"Options":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":30,"StartOffset":898,"EndOffset":963,"Content":"// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}","InlineStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"backup/metainfo.go","Line":32,"StartOffset":934,"EndOffset":961}]}},"Vars":{}},"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]":{"IsMain":false,"IsTest":true,"PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Functions":{"BackupCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","File":"backup/metainfo.go","Line":104,"StartOffset":2573,"EndOffset":2753,"Content":"// Set current Sessioin\nfunc BackupCtx(ctx context.Context) {\n\tif localsession.GetDefaultManager() == nil {\n\t\treturn\n\t}\n\tlocalsession.BindSession(localsession.NewSessionCtx(ctx))\n}","Signature":"func BackupCtx(ctx context.Context)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"backup/metainfo.go","Line":105,"StartOffset":2652,"EndOffset":2669},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"backup/metainfo.go","Line":108,"StartOffset":2707,"EndOffset":2718},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"backup/metainfo.go","Line":108,"StartOffset":2732,"EndOffset":2745}]},"ClearCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","File":"backup/metainfo.go","Line":112,"StartOffset":2755,"EndOffset":2829,"Content":"// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}","Signature":"func ClearCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"backup/metainfo.go","Line":113,"StartOffset":2812,"EndOffset":2825}]},"DefaultOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","File":"backup/metainfo.go","Line":36,"StartOffset":965,"EndOffset":1118,"Content":"// Default Options\nfunc DefaultOptions() Options {\n\treturn Options{\n\t\tEnable: false,\n\t\tManagerOptions: localsession.DefaultManagerOptions(),\n\t}\n}","Signature":"func DefaultOptions() Options","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"backup/metainfo.go","Line":39,"StartOffset":1089,"EndOffset":1110}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","File":"backup/metainfo.go","Line":37,"StartOffset":1024,"EndOffset":1031}]},"Init":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","File":"backup/metainfo.go","Line":45,"StartOffset":1120,"EndOffset":1327,"Content":"// Init gloabal session manager\n// It uses env config first, the key is localsession.SESSION_CONFIG_KEY\nfunc Init(opts Options) {\n\tif opts.Enable {\n\t\tlocalsession.InitDefaultManager(opts.ManagerOptions)\n\t}\n}","Signature":"func Init(opts Options)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"backup/metainfo.go","Line":47,"StartOffset":1283,"EndOffset":1301}]},"RecoverCtxOnDemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","File":"backup/metainfo.go","Line":54,"StartOffset":1329,"EndOffset":2571,"Content":"// If handler != nil, this func will try to merge metainfo\n// and pre-defined key-values (through Options.BackupHanlder)\n// from backup context into given context\nfunc RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context {\n\tif handler == nil {\n\t\treturn ctx\n\t}\n\ts, ok := localsession.CurSession()\n\tif !ok {\n\t\treturn ctx\n\t}\n\tc, ok := s.(localsession.SessionCtx)\n\tif !ok {\n\t\treturn ctx\n\t}\n\tpre := c.Export()\n\n\t// trigger user-defined handler if any\n\tnctx, backup := handler(pre, ctx)\n\tif !backup {\n\t\treturn ctx\n\t}\n\tctx = nctx\n\n\t// two-way merge all persistent metainfo if pre context has\n\tif n := metainfo.CountPersistentValues(pre); n \u003e 0 {\n\t\t// persistent kvs\n\t\tkvs := make([]string, 0, n*2)\n\t\tmkvs := metainfo.GetAllPersistentValues(ctx)\n\n\t\t// incoming ctx is prior to session\n\t\tif len(mkvs) == 0 {\n\t\t\t// merge all kvs from pre\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\t// filter kvs which exists in cur\n\t\t\t\tif _, ok := mkvs[k]; !ok {\n\t\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t\tctx = metainfo.WithPersistentValues(ctx, kvs...)\n\t}\n\n\treturn ctx\n}","Signature":"func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"backup/metainfo.go","Line":58,"StartOffset":1639,"EndOffset":1649},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","File":"backup/metainfo.go","Line":76,"StartOffset":1959,"EndOffset":1980},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","File":"backup/metainfo.go","Line":79,"StartOffset":2066,"EndOffset":2088},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","File":"backup/metainfo.go","Line":84,"StartOffset":2196,"EndOffset":2217},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo.go","Line":97,"StartOffset":2520,"EndOffset":2540}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"backup/metainfo.go","Line":66,"StartOffset":1752,"EndOffset":1758}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"backup/metainfo.go","Line":62,"StartOffset":1704,"EndOffset":1714}]},"TestMain":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","File":"backup/metainfo_test.go","Line":27,"StartOffset":704,"EndOffset":854,"Content":"func TestMain(m *testing.M) {\n\topts := DefaultOptions()\n\topts.EnableImplicitlyTransmitAsync = true\n\topts.Enable = true\n\tInit(opts)\n\tos.Exit(m.Run())\n}","Signature":"func TestMain(m *testing.M)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","File":"backup/metainfo_test.go","Line":28,"StartOffset":743,"EndOffset":757},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","File":"backup/metainfo_test.go","Line":31,"StartOffset":824,"EndOffset":828}]},"TestRecoverCtxOndemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","File":"backup/metainfo_test.go","Line":39,"StartOffset":918,"EndOffset":2703,"Content":"func TestRecoverCtxOndemands(t *testing.T) {\n\tctx := context.WithValue(context.Background(), CtxKeyTest1, \"c\")\n\tBackupCtx(metainfo.WithPersistentValues(ctx, \"a\", \"a\", \"b\", \"b\"))\n\n\thandler := BackupHandler(func(prev, cur context.Context) (ctx context.Context, backup bool) {\n\t\tif v := cur.Value(CtxKeyTest1); v == nil {\n\t\t\tv = prev.Value(CtxKeyTest1)\n\t\t\tif v != nil {\n\t\t\t\tctx = context.WithValue(cur, CtxKeyTest1, v)\n\t\t\t} else {\n\t\t\t\tctx = cur\n\t\t\t}\n\t\t\treturn ctx, true\n\t\t}\n\t\treturn cur, false\n\t})\n\ttype args struct {\n\t\tctx context.Context\n\t\thandler BackupHandler\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant context.Context\n\t}{\n\t\t{\n\t\t\tname: \"triggered\",\n\t\t\targs: args{\n\t\t\t\tctx: metainfo.WithValue(metainfo.WithPersistentValue(context.Background(), \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t\t\thandler: handler,\n\t\t\t},\n\t\t\twant: metainfo.WithPersistentValues(ctx, \"a\", \"aa\", \"b\", \"b\"),\n\t\t},\n\t\t{\n\t\t\tname: \"not triggered\",\n\t\t\targs: args{\n\t\t\t\tctx: metainfo.WithValue(metainfo.WithPersistentValue(ctx, \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t\t\thandler: handler,\n\t\t\t},\n\t\t\twant: metainfo.WithValue(metainfo.WithPersistentValue(ctx, \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif got := RecoverCtxOnDemands(tt.args.ctx, tt.args.handler); got != nil {\n\t\t\t\tif v := got.Value(CtxKeyTest1); v == nil {\n\t\t\t\t\tt.Errorf(\"not got CtxKeyTest1\")\n\t\t\t\t}\n\t\t\t\ta, _ := metainfo.GetPersistentValue(got, \"a\")\n\t\t\t\tae, _ := metainfo.GetPersistentValue(tt.want, \"a\")\n\t\t\t\tif a != ae {\n\t\t\t\t\tt.Errorf(\"CurSession() = %v, want %v\", a, ae)\n\t\t\t\t}\n\t\t\t\tb, _ := metainfo.GetPersistentValue(got, \"b\")\n\t\t\t\tbe, _ := metainfo.GetPersistentValue(tt.want, \"b\")\n\t\t\t\tif b != be {\n\t\t\t\t\tt.Errorf(\"CurSession() = %v, want %v\", b, be)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tt.Fatal(\"no got\")\n\t\t\t}\n\t\t})\n\t}\n}","Signature":"func TestRecoverCtxOndemands(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","File":"backup/metainfo_test.go","Line":41,"StartOffset":1030,"EndOffset":1039},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo_test.go","Line":41,"StartOffset":1049,"EndOffset":1069},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","File":"backup/metainfo_test.go","Line":67,"StartOffset":1623,"EndOffset":1632},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","File":"backup/metainfo_test.go","Line":67,"StartOffset":1642,"EndOffset":1661},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","File":"backup/metainfo_test.go","Line":83,"StartOffset":2143,"EndOffset":2162},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","File":"backup/metainfo_test.go","Line":87,"StartOffset":2318,"EndOffset":2336}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","File":"backup/metainfo_test.go","Line":43,"StartOffset":1109,"EndOffset":1122},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","File":"backup/metainfo_test.go","Line":61,"StartOffset":1528,"EndOffset":1532}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","File":"backup/metainfo_test.go","Line":40,"StartOffset":1011,"EndOffset":1022}]}},"Types":{"BackupHandler":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","File":"backup/metainfo.go","Line":27,"StartOffset":800,"EndOffset":885,"Content":"// BackupHandler is used to decide and recover prev context to cur context\ntype BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool)"},"CtxKeyTestType":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTestType","File":"backup/metainfo_test.go","Line":35,"StartOffset":856,"EndOffset":884,"Content":"type CtxKeyTestType struct{}"},"Options":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","File":"backup/metainfo.go","Line":30,"StartOffset":898,"EndOffset":963,"Content":"// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}","InlineStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"backup/metainfo.go","Line":32,"StartOffset":934,"EndOffset":961}]}},"Vars":{"CtxKeyTest1":{"IsExported":true,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","File":"backup/metainfo_test.go","Line":37,"StartOffset":890,"EndOffset":916,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType"},"Content":"var CtxKeyTest1 backup.CtxKeyTestType"}}}},"Dependencies":{"github.com/bytedance/gopkg":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","github.com/cloudwego/runtimex":"github.com/cloudwego/runtimex@v0.1.1","github.com/davecgh/go-spew":"github.com/davecgh/go-spew@v1.1.0","github.com/modern-go/reflect2":"github.com/modern-go/reflect2@v1.0.2","github.com/pmezard/go-difflib":"github.com/pmezard/go-difflib@v1.0.0","github.com/stretchr/testify":"github.com/stretchr/testify@v1.7.0","golang.org/x/net":"golang.org/x/net@v0.0.0-20221014081412-f15817d10f9b","golang.org/x/text":"golang.org/x/text@v0.3.7","gopkg.in/yaml.v3":"gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c"},"Files":{"../../../../../Library/Caches/go-build/82/82c49baef651a00e1ad23746fdae64f5320212275be6cba7762255b951c019a7-d":{"Path":"../../../../../Library/Caches/go-build/82/82c49baef651a00e1ad23746fdae64f5320212275be6cba7762255b951c019a7-d","Imports":[{"Path":"\"os\""},{"Path":"\"reflect\""},{"Path":"\"testing\""},{"Path":"\"testing/internal/testdeps\""},{"Alias":"_test","Path":"\"github.com/cloudwego/localsession\""}],"Package":"github.com/cloudwego/localsession.test"},"../../../../../Library/Caches/go-build/d5/d5836dbfe100333ed76b708e65390a160b80c1433a312f94a9c2ba23d005dbd6-d":{"Path":"../../../../../Library/Caches/go-build/d5/d5836dbfe100333ed76b708e65390a160b80c1433a312f94a9c2ba23d005dbd6-d","Imports":[{"Path":"\"os\""},{"Path":"\"reflect\""},{"Path":"\"testing\""},{"Path":"\"testing/internal/testdeps\""},{"Alias":"_test","Path":"\"github.com/cloudwego/localsession/backup\""}],"Package":"github.com/cloudwego/localsession/backup.test"},".github/ISSUE_TEMPLATE/bug_report.md":{"Path":".github/ISSUE_TEMPLATE/bug_report.md"},".github/ISSUE_TEMPLATE/feature_request.md":{"Path":".github/ISSUE_TEMPLATE/feature_request.md"},".github/PULL_REQUEST_TEMPLATE.md":{"Path":".github/PULL_REQUEST_TEMPLATE.md"},".github/workflows/release-check.yml":{"Path":".github/workflows/release-check.yml"},".github/workflows/tests.yml":{"Path":".github/workflows/tests.yml"},".gitignore":{"Path":".gitignore"},".golangci.yaml":{"Path":".golangci.yaml"},".licenserc.yaml":{"Path":".licenserc.yaml"},"CODE_OF_CONDUCT.md":{"Path":"CODE_OF_CONDUCT.md"},"CONTRIBUTING.md":{"Path":"CONTRIBUTING.md"},"LICENSE-APACHE":{"Path":"LICENSE-APACHE"},"README.md":{"Path":"README.md"},"_typos.toml":{"Path":"_typos.toml"},"api_test.go":{"Path":"api_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"fmt\""},{"Path":"\"math\""},{"Path":"\"os\""},{"Path":"\"runtime/pprof\""},{"Path":"\"sync\""},{"Path":"\"testing\""},{"Path":"\"time\""},{"Path":"\"github.com/stretchr/testify/require\""}],"Package":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]"},"backup/metainfo.go":{"Path":"backup/metainfo.go","Imports":[{"Path":"\"context\""},{"Path":"\"github.com/bytedance/gopkg/cloud/metainfo\""},{"Path":"\"github.com/cloudwego/localsession\""}],"Package":"github.com/cloudwego/localsession/backup"},"backup/metainfo_test.go":{"Path":"backup/metainfo_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"os\""},{"Path":"\"testing\""},{"Path":"\"github.com/bytedance/gopkg/cloud/metainfo\""}],"Package":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]"},"check_branch_name.sh":{"Path":"check_branch_name.sh"},"example_test.go":{"Path":"example_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"runtime/pprof\""},{"Path":"\"sync\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]"},"gls.go":{"Path":"gls.go","Imports":[{"Path":"\"fmt\""},{"Path":"\"os\""},{"Path":"\"strconv\""},{"Path":"\"strings\""},{"Path":"\"sync\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"go.mod":{"Path":"go.mod"},"go.sum":{"Path":"go.sum"},"manager.go":{"Path":"manager.go","Imports":[{"Path":"\"sync\""},{"Path":"\"sync/atomic\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"session.go":{"Path":"session.go","Imports":[{"Path":"\"context\""},{"Path":"\"sync\""},{"Path":"\"sync/atomic\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"stubs.go":{"Path":"stubs.go","Imports":[{"Path":"\"strconv\""},{"Alias":"_","Path":"\"unsafe\""},{"Path":"\"github.com/cloudwego/runtimex\""}],"Package":"github.com/cloudwego/localsession"}}}},"Graph":{"?#int":{"ModPath":"","PkgPath":"","Name":"int","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap"}]},"?#untyped int":{"ModPath":"","PkgPath":"","Name":"untyped int","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N"}]},"?#untyped string":{"ModPath":"","PkgPath":"","Name":"untyped string","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY"}]},"?github.com/cloudwego/localsession#Session.Get":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":19}]},"?github.com/cloudwego/localsession#Session.IsValid":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":45},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":42}]},"?github.com/cloudwego/localsession#Session.WithValue":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":28},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":24},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":25}]},"?github.com/cloudwego/localsession#SessionCtx":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid"}]},"?github.com/cloudwego/localsession#SessionManager":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj"}]},"?github.com/cloudwego/localsession#SessionMap":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid"}]},"?github.com/cloudwego/localsession#SessionMap.WithValue":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":13}]},"?github.com/cloudwego/localsession#shard":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load"}]},"?github.com/cloudwego/localsession#stat":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update"}]},"?github.com/cloudwego/localsession/backup#CtxKeyTestType":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1"}]},"?sync#Once":{"ModPath":"","PkgPath":"sync","Name":"Once","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce"}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":22}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#GetAllPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":25},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":25}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#GetPersistentValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":48}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#RangePersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":30},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":30}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithPersistentValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":28}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":2}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":28}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ASSERT":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":23}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkGLS_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":12},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkGLS_Set":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":13},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkLoops":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkLoops","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionCtx_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionCtx_WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionManager_BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionManager_CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionMap_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionMap_WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#DefaultManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":19}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ExampleSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":20},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":33},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":101},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":22},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":28},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":45}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ExampleSessionCtx_EnableImplicitlyTransmitAsync":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":35},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GetCurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":22}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Go":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":20},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":17}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GoSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":33},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":29},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":30}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#InitDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#N":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionCtxWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","Line":8}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionMapWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Pprof_Label_Session_ID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SESSION_CONFIG_KEY":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":18}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":3}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Line":2},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":15},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":6},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":8},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":10},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":9},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":3}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestMain":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestRace":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":13},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":15}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestRealBizGLS":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestResetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":10},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Line":18}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":19},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":20},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":30},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":42},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":98},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":19},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":25},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":42}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionManager_GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":11},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":21},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":18},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":29},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":97},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":18},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":24},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":41}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Line":3},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestTransparentTransmitAsync":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":17},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":31},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Line":32},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Line":42}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":31},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":35},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":101},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":97},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":98}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#checkEnvOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#clearSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultManagerObj":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultManagerOnce":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"sync","Name":"Once"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":42},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultShardCap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#emitLoops":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":10}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#getPproLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#getSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#goID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#labelMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#mustCurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":19}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#newShard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#setPprofLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat.String":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat.Update":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#transmitSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#DefaultManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#GetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Go":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#GoSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#InitDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#ManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionCtxWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionMapWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Pprof_Label_Session_ID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SESSION_CONFIG_KEY":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":11}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":8}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Type":"TYPE","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Line":7}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid"}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#clearSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerObj":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerOnce":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"sync","Name":"Once"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultShardCap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#getPproLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#getSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#goID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#labelMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#newShard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#setPprofLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":16}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Type":"TYPE","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#transmitSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#BackupCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#BackupHandler":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#ClearCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#CtxKeyTest1":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#CtxKeyTestType":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTestType","Type":"TYPE"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#DefaultOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#Init":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":1}],"Inherits":[{"Kind":"Inherit","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#RecoverCtxOnDemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Line":22},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Line":25},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Line":30},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":8}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":44}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#TestMain":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#TestRecoverCtxOndemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":2},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","Line":28},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","Line":28},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":44},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","Line":48},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#args":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":22}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#BackupCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#BackupHandler":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#ClearCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#DefaultOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#Init":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init"}],"Inherits":[{"Kind":"Inherit","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#RecoverCtxOnDemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Line":22},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Line":25},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Line":30},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":8}]},"github.com/cloudwego/runtimex@v0.1.1?github.com/cloudwego/runtimex#GID":{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":1}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#Equal":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":21},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":20}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#False":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":42}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#Nil":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":32},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":27}]}}} \ No newline at end of file +{"id":"/Users/bytedance/golang/work/abcoder/tmp/localsession","ASTVersion":"v0.1.2","ToolVersion":"","Path":"","Modules":{"github.com/cloudwego/localsession":{"Language":"go","Version":"","Name":"github.com/cloudwego/localsession","Dir":".","Packages":{"github.com/cloudwego/localsession":{"IsMain":false,"IsTest":false,"PkgPath":"github.com/cloudwego/localsession","Functions":{"BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"gls.go","Line":115,"StartOffset":3200,"EndOffset":3457,"Content":"// BindSession binds the session with current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc BindSession(s Session) {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.BindSession(SessionID(goID()), s)\n}","Signature":"func BindSession(s Session)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":115,"StartOffset":3347,"EndOffset":3356}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":119,"StartOffset":3444,"EndOffset":3448}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","File":"gls.go","Line":119,"StartOffset":3422,"EndOffset":3433}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":119,"StartOffset":3434,"EndOffset":3443}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":116,"StartOffset":3364,"EndOffset":3381}]},"CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"gls.go","Line":104,"StartOffset":2908,"EndOffset":3198,"Content":"// CurSession gets the session for current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc CurSession() (Session, bool) {\n\tif defaultManagerObj == nil {\n\t\treturn nil, false\n\t}\n\ts, ok := defaultManagerObj.GetSession(SessionID(goID()))\n\treturn s, ok\n}","Signature":"func CurSession() (Session, bool)","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":104,"StartOffset":3054,"EndOffset":3061}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":108,"StartOffset":3174,"EndOffset":3178}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","File":"gls.go","Line":108,"StartOffset":3153,"EndOffset":3163}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":108,"StartOffset":3164,"EndOffset":3173}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":105,"StartOffset":3075,"EndOffset":3092}]},"DefaultManagerOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"gls.go","Line":42,"StartOffset":1270,"EndOffset":1546,"Content":"// DefaultManagerOptions returns default options for the default manager\nfunc DefaultManagerOptions() ManagerOptions {\n\treturn ManagerOptions{\n\t\tShardNumber: 100,\n\t\tGCInterval: time.Minute * 10,\n\t\tEnableImplicitlyTransmitAsync: false,\n\t}\n}","Signature":"func DefaultManagerOptions() ManagerOptions","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":42,"StartOffset":1372,"EndOffset":1386}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":43,"StartOffset":1397,"EndOffset":1411}]},"GetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"gls.go","Line":51,"StartOffset":1548,"EndOffset":1667,"Content":"// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}","Signature":"func GetDefaultManager() *SessionManager","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"gls.go","Line":51,"StartOffset":1622,"EndOffset":1637}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":52,"StartOffset":1648,"EndOffset":1665}]},"Go":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","File":"gls.go","Line":137,"StartOffset":3868,"EndOffset":4049,"Content":"// Go calls f asynchronously and pass caller's session to the new goroutine\nfunc Go(f func()) {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tGoSession(nil, f)\n\t} else {\n\t\tGoSession(s, f)\n\t}\n}","Signature":"func Go(f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"gls.go","Line":138,"StartOffset":3974,"EndOffset":3984},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","File":"gls.go","Line":140,"StartOffset":3999,"EndOffset":4008}]},"GoSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","File":"gls.go","Line":147,"StartOffset":4051,"EndOffset":4361,"Content":"// SessionGo calls f asynchronously and pass s session to the new goroutine\nfunc GoSession(s Session, f func()) {\n\tgo func() {\n\t\tdefer func() {\n\t\t\tif v := recover(); v != nil {\n\t\t\t\tprintln(fmt.Sprintf(\"GoSession recover: %v\", v))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t}()\n\t\tif s != nil {\n\t\t\tBindSession(s)\n\t\t}\n\t\tf()\n\t}()\n}","Signature":"func GoSession(s Session, f func())","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"gls.go","Line":147,"StartOffset":4142,"EndOffset":4151}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"gls.go","Line":153,"StartOffset":4289,"EndOffset":4302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"gls.go","Line":156,"StartOffset":4330,"EndOffset":4341}]},"InitDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"gls.go","Line":64,"StartOffset":1669,"EndOffset":2277,"Content":"// InitDefaultManager update and restart default manager.\n// It accept argument opts and env config both.\n//\n// NOTICE:\n// - It use env SESSION_CONFIG_KEY prior to argument opts;\n// - If both env and opts are empty, it won't reset manager;\n// - For concurrent safety, you can only successfully reset manager ONCE.\n//\n//go:nocheckptr\nfunc InitDefaultManager(opts ManagerOptions) {\n\tdefaultManagerOnce.Do(func() {\n\t\t// env config has high priority\n\t\tcheckEnvOptions(\u0026opts)\n\n\t\tif defaultManagerObj != nil {\n\t\t\tdefaultManagerObj.Close()\n\t\t}\n\t\tobj := NewSessionManager(opts)\n\t\tdefaultManagerObj = \u0026obj\n\t})\n}","Signature":"func InitDefaultManager(opts ManagerOptions)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":64,"StartOffset":2032,"EndOffset":2051}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","File":"gls.go","Line":67,"StartOffset":2123,"EndOffset":2138},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","File":"gls.go","Line":72,"StartOffset":2221,"EndOffset":2238}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","File":"gls.go","Line":70,"StartOffset":2200,"EndOffset":2205}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":69,"StartOffset":2152,"EndOffset":2169}]},"NewSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"session.go","Line":44,"StartOffset":1225,"EndOffset":1436,"Content":"// NewSessionCtx creates and enables a SessionCtx\nfunc NewSessionCtx(ctx context.Context) SessionCtx {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn SessionCtx{\n\t\tenabled: \u0026enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func NewSessionCtx(ctx context.Context) SessionCtx","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":44,"StartOffset":1315,"EndOffset":1325}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":47,"StartOffset":1383,"EndOffset":1393}]},"NewSessionCtxWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","File":"session.go","Line":55,"StartOffset":1438,"EndOffset":1720,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx {\n\tret := NewSessionCtx(ctx)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":55,"StartOffset":1604,"EndOffset":1614}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"session.go","Line":56,"StartOffset":1625,"EndOffset":1638}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","File":"session.go","Line":59,"StartOffset":1692,"EndOffset":1699}]},"NewSessionManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","File":"manager.go","Line":63,"StartOffset":1636,"EndOffset":2138,"Content":"// NewSessionManager creates a SessionManager with default containers\n// If opts.GCInterval \u003e 0, it will start scheduled GC() loop automatically\nfunc NewSessionManager(opts ManagerOptions) SessionManager {\n\tif opts.ShardNumber \u003c= 0 {\n\t\tpanic(\"ShardNumber must be larger than zero\")\n\t}\n\tshards := make([]*shard, opts.ShardNumber)\n\tfor i := range shards {\n\t\tshards[i] = newShard()\n\t}\n\tret := SessionManager{\n\t\tshards: shards,\n\t\topts: opts,\n\t}\n\n\tif opts.GCInterval \u003e 0 {\n\t\tret.startGC()\n\t}\n\treturn ret\n}","Signature":"func NewSessionManager(opts ManagerOptions) SessionManager","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":63,"StartOffset":1804,"EndOffset":1823}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":63,"StartOffset":1825,"EndOffset":1839}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","File":"manager.go","Line":69,"StartOffset":2004,"EndOffset":2012}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","File":"manager.go","Line":77,"StartOffset":2112,"EndOffset":2119}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":67,"StartOffset":1940,"EndOffset":1945},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":71,"StartOffset":2026,"EndOffset":2040}]},"NewSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","File":"session.go","Line":102,"StartOffset":2676,"EndOffset":2897,"Content":"// NewSessionMap creates and enables a SessionMap\nfunc NewSessionMap(m map[interface{}]interface{}) *SessionMap {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn \u0026SessionMap{\n\t\tenabled: \u0026enabled,\n\t\tstorage: m,\n\t}\n}","Signature":"func NewSessionMap(m map[interface{}]interface{}) *SessionMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":102,"StartOffset":2776,"EndOffset":2787}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":105,"StartOffset":2846,"EndOffset":2856}]},"NewSessionMapWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","File":"session.go","Line":113,"StartOffset":2899,"EndOffset":3190,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap {\n\tret := NewSessionMap(m)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":113,"StartOffset":3075,"EndOffset":3086}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","File":"session.go","Line":114,"StartOffset":3097,"EndOffset":3110}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","File":"session.go","Line":117,"StartOffset":3162,"EndOffset":3169}]},"Session.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"session.go","Line":30,"StartOffset":821,"EndOffset":892,"Content":"// Get returns value for specific key\nGet(key interface{}) interface{}","Signature":"// Get returns value for specific key\nGet(key interface{}) interface{}"},"Session.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"session.go","Line":27,"StartOffset":751,"EndOffset":818,"Content":"// IsValid tells if the session is valid at present\nIsValid() bool","Signature":"// IsValid tells if the session is valid at present\nIsValid() bool"},"Session.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"session.go","Line":33,"StartOffset":895,"EndOffset":1025,"Content":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session","Signature":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session"},"SessionCtx.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","File":"session.go","Line":65,"StartOffset":1722,"EndOffset":1813,"Content":"// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}","Signature":"func (self SessionCtx) Disable()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"session.go","Line":70,"StartOffset":1815,"EndOffset":1924,"Content":"// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}","Signature":"func (self SessionCtx) Export() context.Context","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get","File":"session.go","Line":80,"StartOffset":2056,"EndOffset":2177,"Content":"// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}","Signature":"func (self SessionCtx) Get(key interface{}) interface{}","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid","File":"session.go","Line":75,"StartOffset":1926,"EndOffset":2054,"Content":"// IsValid tells if the session is valid at present\nfunc (self SessionCtx) IsValid() bool {\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self SessionCtx) IsValid() bool","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","File":"session.go","Line":85,"StartOffset":2179,"EndOffset":2438,"Content":"// Set value for specific key,and return newly effective session\nfunc (self SessionCtx) WithValue(key interface{}, val interface{}) Session {\n\tctx := context.WithValue(self.storage, key, val)\n\treturn SessionCtx{\n\t\tenabled: self.enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func (self SessionCtx) WithValue(key interface{}, val interface{}) Session","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":85,"StartOffset":2313,"EndOffset":2320}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":87,"StartOffset":2381,"EndOffset":2391}]},"SessionManager.BindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","File":"manager.go","Line":134,"StartOffset":3290,"EndOffset":3573,"Content":"// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(id SessionID, s Session) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(id, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionID(id)\n\t}\n}","Signature":"func (self *SessionManager) BindSession(id SessionID, s Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":134,"StartOffset":3386,"EndOffset":3398},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":134,"StartOffset":3400,"EndOffset":3409}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","File":"manager.go","Line":140,"StartOffset":3547,"EndOffset":3564}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","File":"manager.go","Line":137,"StartOffset":3485,"EndOffset":3490}]},"SessionManager.Close":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","File":"manager.go","Line":200,"StartOffset":4874,"EndOffset":5010,"Content":"// Close stop persistent work for the manager, like GC\nfunc (self SessionManager) Close() {\n\tif self.tik != nil {\n\t\tself.tik.Stop()\n\t}\n}","Signature":"func (self SessionManager) Close()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.GC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","File":"manager.go","Line":163,"StartOffset":4014,"EndOffset":4549,"Content":"// GC sweep invalid sessions and release unused memory\nfunc (self SessionManager) GC() {\n\tif !atomic.CompareAndSwapUint32(\u0026self.inGC, 0, 1) {\n\t\treturn\n\t}\n\n\tfor _, shard := range self.shards {\n\t\tshard.lock.Lock()\n\t\tn := shard.m\n\t\tm := make(map[SessionID]Session, len(n))\n\t\tfor id, s := range n {\n\t\t\t// Warning: may panic here?\n\t\t\tif s.IsValid() {\n\t\t\t\tm[id] = s\n\t\t\t}\n\t\t}\n\t\t// atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(\u0026shard.m)), unsafe.Pointer(\u0026m))\n\t\tshard.m = m\n\t\tshard.lock.Unlock()\n\t}\n\n\tatomic.StoreUint32(\u0026self.inGC, 0)\n}","Signature":"func (self SessionManager) GC()","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"manager.go","Line":174,"StartOffset":4348,"EndOffset":4355}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":171,"StartOffset":4257,"EndOffset":4266},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":171,"StartOffset":4267,"EndOffset":4274}]},"SessionManager.GetSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","File":"manager.go","Line":115,"StartOffset":2768,"EndOffset":3288,"Content":"// Get gets specific session\n// or get inherited session if option EnableImplicitlyTransmitAsync is true\nfunc (self *SessionManager) GetSession(id SessionID) (Session, bool) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\tsession, ok := shard.Load(id)\n\tif ok {\n\t\treturn session, ok\n\t}\n\tif !self.opts.EnableImplicitlyTransmitAsync {\n\t\treturn nil, false\n\t}\n\n\tid, ok = getSessionID()\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tshard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\treturn shard.Load(id)\n}","Signature":"func (self *SessionManager) GetSession(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":115,"StartOffset":2912,"EndOffset":2924}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":115,"StartOffset":2927,"EndOffset":2934}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","File":"manager.go","Line":125,"StartOffset":3153,"EndOffset":3165}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":117,"StartOffset":3030,"EndOffset":3034}]},"SessionManager.Options":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options","File":"manager.go","Line":83,"StartOffset":2140,"EndOffset":2252,"Content":"// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}","Signature":"func (self SessionManager) Options() ManagerOptions","Receiver":{"IsPointer":false,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":83,"StartOffset":2216,"EndOffset":2230}]},"SessionManager.UnbindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","File":"manager.go","Line":149,"StartOffset":3575,"EndOffset":4012,"Content":"// UnbindSession clears current session\n//\n// Notice: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\nfunc (self *SessionManager) UnbindSession(id SessionID) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\t_, ok := shard.Load(id)\n\tif ok {\n\t\tshard.Delete(id)\n\t}\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\tclearSessionID()\n\t}\n}","Signature":"func (self *SessionManager) UnbindSession(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":149,"StartOffset":3805,"EndOffset":3817}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","File":"manager.go","Line":158,"StartOffset":3991,"EndOffset":4005}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":152,"StartOffset":3902,"EndOffset":3906},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","File":"manager.go","Line":154,"StartOffset":3928,"EndOffset":3934}]},"SessionManager.startGC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","File":"manager.go","Line":187,"StartOffset":4551,"EndOffset":4872,"Content":"// startGC start a scheduled goroutine to call GC() according to GCInterval\nfunc (self *SessionManager) startGC() {\n\tif self.opts.GCInterval \u003c time.Second {\n\t\tpanic(\"GCInterval must be larger than 1 second\")\n\t}\n\tself.tik = time.NewTicker(self.opts.GCInterval)\n\tgo func() {\n\t\tfor range self.tik.C {\n\t\t\tself.GC()\n\t\t}\n\t}()\n}","Signature":"func (self *SessionManager) startGC()","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","File":"manager.go","Line":194,"StartOffset":4857,"EndOffset":4859}]},"SessionMap.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","File":"session.go","Line":131,"StartOffset":3359,"EndOffset":3481,"Content":"// Disable ends the session\nfunc (self *SessionMap) Disable() {\n\tif self == nil {\n\t\treturn\n\t}\n\tself.enabled.Store(false)\n}","Signature":"func (self *SessionMap) Disable()","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export","File":"session.go","Line":139,"StartOffset":3483,"EndOffset":3782,"Content":"// Export COPIES and exports underlying map\nfunc (self *SessionMap) Export() map[interface{}]interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tm := make(map[interface{}]interface{}, len(self.storage))\n\tself.lock.RLock()\n\tfor k, v := range self.storage {\n\t\tm[k] = v\n\t}\n\tself.lock.RUnlock()\n\treturn m\n}","Signature":"func (self *SessionMap) Export() map[interface{}]interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get","File":"session.go","Line":153,"StartOffset":3784,"EndOffset":3986,"Content":"// Get value for specific key\nfunc (self *SessionMap) Get(key interface{}) interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.RLock()\n\tval := self.storage[key]\n\tself.lock.RUnlock()\n\treturn val\n}","Signature":"func (self *SessionMap) Get(key interface{}) interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid","File":"session.go","Line":123,"StartOffset":3192,"EndOffset":3357,"Content":"// IsValid tells if the session is valid at present\nfunc (self *SessionMap) IsValid() bool {\n\tif self == nil {\n\t\treturn false\n\t}\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self *SessionMap) IsValid() bool","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","File":"session.go","Line":164,"StartOffset":3988,"EndOffset":4215,"Content":"// Set value for specific key,and return itself\nfunc (self *SessionMap) WithValue(key, val interface{}) Session {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.Lock()\n\tself.storage[key] = val\n\tself.lock.Unlock()\n\treturn self\n}","Signature":"func (self *SessionMap) WithValue(key, val interface{}) Session","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}},"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":164,"StartOffset":4094,"EndOffset":4101}]},"UnbindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"gls.go","Line":129,"StartOffset":3459,"EndOffset":3866,"Content":"// UnbindSession unbind a session (if any) with current goroutine\n//\n// NOTICE: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc UnbindSession() {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.UnbindSession(SessionID(goID()))\n}","Signature":"func UnbindSession()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"gls.go","Line":133,"StartOffset":3856,"EndOffset":3860}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","File":"gls.go","Line":133,"StartOffset":3832,"EndOffset":3845}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"gls.go","Line":133,"StartOffset":3846,"EndOffset":3855}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":130,"StartOffset":3774,"EndOffset":3791}]},"checkEnvOptions":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","File":"gls.go","Line":77,"StartOffset":2279,"EndOffset":2906,"Content":"func checkEnvOptions(opts *ManagerOptions) {\n\tif env := os.Getenv(SESSION_CONFIG_KEY); env != \"\" {\n\t\tenvs := strings.Split(env, \",\")\n\t\t// parse first option as EnableTransparentTransmitAsync\n\t\tif strings.ToLower(envs[0]) == \"true\" {\n\t\t\topts.EnableImplicitlyTransmitAsync = true\n\t\t}\n\n\t\t// parse first option as ShardNumber\n\t\tif len(envs) \u003e 1 {\n\t\t\tif opt, err := strconv.Atoi(envs[1]); err == nil {\n\t\t\t\topts.ShardNumber = opt\n\t\t\t}\n\t\t}\n\n\t\t// parse third option as EnableTransparentTransmitAsync\n\t\tif len(envs) \u003e 2 {\n\t\t\tif d, err := time.ParseDuration(envs[2]); err == nil \u0026\u0026 d \u003e time.Second {\n\t\t\t\topts.GCInterval = d\n\t\t\t}\n\t\t}\n\t}\n}","Signature":"func checkEnvOptions(opts *ManagerOptions)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"gls.go","Line":77,"StartOffset":2300,"EndOffset":2320}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":78,"StartOffset":2345,"EndOffset":2363}]},"clearSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","File":"stubs.go","Line":77,"StartOffset":1687,"EndOffset":1948,"Content":"func clearSessionID() {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn\n\t}\n\tif _, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn\n\t}\n\tn := make(labelMap, len(*m))\n\tfor k, v := range *m {\n\t\tif k != Pprof_Label_Session_ID {\n\t\t\tn[k] = v\n\t\t}\n\t}\n\tsetPprofLabel(\u0026n)\n}","Signature":"func clearSessionID()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":78,"StartOffset":1717,"EndOffset":1729},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":91,"StartOffset":1929,"EndOffset":1942}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":85,"StartOffset":1831,"EndOffset":1839}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":82,"StartOffset":1777,"EndOffset":1799}]},"getPproLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":38,"StartOffset":931,"EndOffset":1022,"Content":"//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap","Signature":"func getPproLabel() *labelMap","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":38,"StartOffset":1013,"EndOffset":1022}]},"getSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","File":"stubs.go","Line":61,"StartOffset":1396,"EndOffset":1685,"Content":"func getSessionID() (SessionID, bool) {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\tif v, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn 0, false\n\t} else {\n\t\tid, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, false\n\t\t}\n\t\treturn SessionID(id), true\n\t}\n}","Signature":"func getSessionID() (SessionID, bool)","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":61,"StartOffset":1417,"EndOffset":1426}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":62,"StartOffset":1442,"EndOffset":1454}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":73,"StartOffset":1661,"EndOffset":1670}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":66,"StartOffset":1511,"EndOffset":1533}]},"goID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","File":"stubs.go","Line":24,"StartOffset":681,"EndOffset":800,"Content":"//go:nocheckptr\nfunc goID() uint64 {\n\tgid, err := runtimex.GID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uint64(gid)\n}","Signature":"func goID() uint64","FunctionCalls":[{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","File":"stubs.go","Line":25,"StartOffset":740,"EndOffset":743}]},"newShard":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","File":"manager.go","Line":55,"StartOffset":1523,"EndOffset":1634,"Content":"func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}","Signature":"func newShard() *shard","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":55,"StartOffset":1539,"EndOffset":1545}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":56,"StartOffset":1560,"EndOffset":1565},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":57,"StartOffset":1585,"EndOffset":1594},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":57,"StartOffset":1595,"EndOffset":1602}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","File":"manager.go","Line":57,"StartOffset":1604,"EndOffset":1619}]},"setPprofLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":35,"StartOffset":835,"EndOffset":929,"Content":"//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)","Signature":"func setPprofLabel(m *labelMap)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":35,"StartOffset":917,"EndOffset":928}]},"shard.Delete":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","File":"manager.go","Line":107,"StartOffset":2677,"EndOffset":2766,"Content":"func (s *shard) Delete(id SessionID) {\n\ts.lock.Lock()\n\tdelete(s.m, id)\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Delete(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":107,"StartOffset":2700,"EndOffset":2712}]},"shard.Load":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","File":"manager.go","Line":90,"StartOffset":2319,"EndOffset":2576,"Content":"func (s *shard) Load(id SessionID) (Session, bool) {\n\ts.lock.RLock()\n\n\t// p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(\u0026s.m)))\n\t// m := *(*map[SessionID]Session)(unsafe.Pointer(p))\n\n\tsession, ok := s.m[id]\n\ts.lock.RUnlock()\n\treturn session, ok\n}","Signature":"func (s *shard) Load(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":90,"StartOffset":2340,"EndOffset":2352}],"Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":90,"StartOffset":2355,"EndOffset":2362}]},"shard.Store":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","File":"manager.go","Line":101,"StartOffset":2578,"EndOffset":2675,"Content":"func (s *shard) Store(id SessionID, se Session) {\n\ts.lock.Lock()\n\ts.m[id] = se\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Store(id SessionID, se Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}},"Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":101,"StartOffset":2600,"EndOffset":2612},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":101,"StartOffset":2614,"EndOffset":2624}]},"transmitSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","File":"stubs.go","Line":42,"StartOffset":1072,"EndOffset":1394,"Content":"func transmitSessionID(id SessionID) {\n\tm := getPproLabel()\n\n\tvar n labelMap\n\tif m == nil {\n\t\tn = make(labelMap)\n\t} else {\n\t\tn = make(labelMap, len(*m))\n\t\tfor k, v := range *m {\n\t\t\tif k != Pprof_Label_Session_ID {\n\t\t\t\tn[k] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}","Signature":"func transmitSessionID(id SessionID)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"stubs.go","Line":42,"StartOffset":1095,"EndOffset":1107}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","File":"stubs.go","Line":43,"StartOffset":1117,"EndOffset":1129},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","File":"stubs.go","Line":58,"StartOffset":1375,"EndOffset":1388}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":45,"StartOffset":1140,"EndOffset":1148}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":51,"StartOffset":1261,"EndOffset":1283}]}},"Types":{"ManagerOptions":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":24,"StartOffset":697,"EndOffset":1270,"Content":"// ManagerOptions for SessionManager\ntype ManagerOptions struct {\n\t// EnableImplicitlyTransmitAsync enables transparently transmit\n\t// current session to children goroutines\n\t//\n\t// WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`,\n\t// otherwise transmitting will be disfunctional\n\tEnableImplicitlyTransmitAsync bool\n\n\t// ShardNumber is used to shard session id, it must be larger than zero\n\tShardNumber int\n\n\t// GCInterval decides the GC interval for SessionManager,\n\t// it must be larger than 1s or zero means disable GC\n\tGCInterval time.Duration\n}"},"Session":{"Exported":true,"TypeKind":"interface","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"session.go","Line":25,"StartOffset":725,"EndOffset":1027,"Content":"// Session represents a local storage for one session\ntype Session interface {\n\t// IsValid tells if the session is valid at present\n\tIsValid() bool\n\n\t// Get returns value for specific key\n\tGet(key interface{}) interface{}\n\n\t// WithValue sets value for specific key,and return newly effective session\n\tWithValue(key interface{}, val interface{}) Session\n}","Methods":{"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue"}}},"SessionCtx":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"session.go","Line":38,"StartOffset":1149,"EndOffset":1223,"Content":"// SessionCtx implements Session with context,\n// which means children session WON'T affect parent and sibling sessions\ntype SessionCtx struct {\n\tenabled *atomic.Value\n\tstorage context.Context\n}","Methods":{"Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable"},"Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export"},"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue"}},"Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"SessionID":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","File":"manager.go","Line":88,"StartOffset":2296,"EndOffset":2317,"Content":"// SessionID is the identity of a session\ntype SessionID uint64"},"SessionManager":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","File":"manager.go","Line":46,"StartOffset":1389,"EndOffset":1495,"Content":"// SessionManager maintain and manage sessions\ntype SessionManager struct {\n\tshards []*shard\n\tinGC uint32\n\ttik *time.Ticker\n\topts ManagerOptions\n}","SubStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"manager.go","Line":50,"StartOffset":1479,"EndOffset":1493}],"Methods":{"BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},"Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close"},"GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC"},"GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},"Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},"UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},"startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC"}}},"SessionMap":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","File":"session.go","Line":95,"StartOffset":2566,"EndOffset":2674,"Content":"// NewSessionMap implements Session with map,\n// which means children session WILL affect parent session and sibling sessions\ntype SessionMap struct {\n\tenabled *atomic.Value\n\tstorage map[interface{}]interface{}\n\tlock sync.RWMutex\n}","Methods":{"Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable"},"Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export"},"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"}},"Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"labelMap":{"Exported":false,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","File":"stubs.go","Line":32,"StartOffset":802,"EndOffset":833,"Content":"type labelMap map[string]string"},"shard":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","File":"manager.go","Line":40,"StartOffset":1272,"EndOffset":1340,"Content":"type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}","SubStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","File":"manager.go","Line":42,"StartOffset":1317,"EndOffset":1338}],"Methods":{"Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},"Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},"Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"}}}},"Vars":{"Pprof_Label_Session_ID":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":40,"StartOffset":1030,"EndOffset":1070,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"const Pprof_Label_Session_ID untyped string = \"go_session_id\""},"SESSION_CONFIG_KEY":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":34,"StartOffset":1142,"EndOffset":1193,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"// SESSION_CONFIG_KEY is the env key for configuring default session manager.\n//\n//\tValue format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval]\n//\t- EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled\n//\t- ShardNumber: integer \u003e 0\n//\t- GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC\n//\n// Once the key is set, default option values will be set if the option value doesn't exist.\nconst SESSION_CONFIG_KEY untyped string = \"CLOUDWEGO_SESSION_CONFIG_KEY\""},"defaultManagerObj":{"IsExported":false,"IsConst":false,"IsPointer":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","File":"gls.go","Line":37,"StartOffset":1202,"EndOffset":1236,"Type":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},"Content":"var defaultManagerObj *SessionManager"},"defaultManagerOnce":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce","File":"gls.go","Line":38,"StartOffset":1238,"EndOffset":1266,"Type":{"ModPath":"","PkgPath":"sync","Name":"Once"},"Content":"var defaultManagerOnce sync.Once"},"defaultShardCap":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","File":"manager.go","Line":53,"StartOffset":1501,"EndOffset":1521,"Type":{"ModPath":"","PkgPath":"","Name":"int"},"Content":"var defaultShardCap int = 10"}}},"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]":{"IsMain":false,"IsTest":true,"PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Functions":{"ASSERT":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":24,"StartOffset":673,"EndOffset":729,"Content":"func ASSERT(v bool) {\n\tif !v {\n\t\tpanic(\"not true!\")\n\t}\n}","Signature":"func ASSERT(v bool)"},"BenchmarkGLS_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","File":"api_test.go","Line":548,"StartOffset":12073,"EndOffset":12559,"Content":"func BenchmarkGLS_Get(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(ss)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = mustCurSession().Get(N / 2)\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(ss)\n\t\t\tfor p.Next() {\n\t\t\t\t_ = mustCurSession().Get(N / 2)\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkGLS_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":549,"StartOffset":12117,"EndOffset":12130},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":556,"StartOffset":12267,"EndOffset":12278},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":558,"StartOffset":12319,"EndOffset":12333},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":560,"StartOffset":12353,"EndOffset":12366}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":558,"StartOffset":12336,"EndOffset":12339}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":550,"StartOffset":12161,"EndOffset":12168}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":551,"StartOffset":12190,"EndOffset":12191}]},"BenchmarkGLS_Set":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","File":"api_test.go","Line":574,"StartOffset":12561,"EndOffset":13082,"Content":"func BenchmarkGLS_Set(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(ss)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\tBindSession(mustCurSession().WithValue(N/2, -1))\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(ss)\n\t\t\tfor p.Next() {\n\t\t\t\tBindSession(mustCurSession().WithValue(N/2, -1))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkGLS_Set(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":575,"StartOffset":12605,"EndOffset":12618},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":583,"StartOffset":12756,"EndOffset":12767},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":585,"StartOffset":12816,"EndOffset":12830},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":587,"StartOffset":12859,"EndOffset":12872}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":585,"StartOffset":12833,"EndOffset":12842}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":576,"StartOffset":12649,"EndOffset":12656}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":578,"StartOffset":12679,"EndOffset":12680}]},"BenchmarkLoops":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkLoops","File":"api_test.go","Line":630,"StartOffset":13770,"EndOffset":13883,"Content":"func BenchmarkLoops(b *testing.B) {\n\tfor i := 0; i \u003c b.N; i++ {\n\t\tfor b := 0; b \u003c 100000; b++ {\n\t\t\t_ = b\n\t\t}\n\t}\n}","Signature":"func BenchmarkLoops(b *testing.B)"},"BenchmarkSessionCtx_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","File":"api_test.go","Line":482,"StartOffset":10854,"EndOffset":11245,"Content":"func BenchmarkSessionCtx_Get(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.Get(N / 2)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.Get(N / 2)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionCtx_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":483,"StartOffset":10905,"EndOffset":10918}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":484,"StartOffset":10949,"EndOffset":10956}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":485,"StartOffset":10978,"EndOffset":10979}]},"BenchmarkSessionCtx_WithValue":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","File":"api_test.go","Line":460,"StartOffset":10439,"EndOffset":10852,"Content":"func BenchmarkSessionCtx_WithValue(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionCtx_WithValue(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":461,"StartOffset":10496,"EndOffset":10509}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":462,"StartOffset":10540,"EndOffset":10547}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":463,"StartOffset":10569,"EndOffset":10570}]},"BenchmarkSessionManager_BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","File":"api_test.go","Line":442,"StartOffset":10115,"EndOffset":10437,"Content":"func BenchmarkSessionManager_BindSession(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\tBindSession(s)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\tBindSession(s)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionManager_BindSession(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":443,"StartOffset":10178,"EndOffset":10191},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":447,"StartOffset":10283,"EndOffset":10294}]},"BenchmarkSessionManager_CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","File":"api_test.go","Line":420,"StartOffset":9708,"EndOffset":10113,"Content":"func BenchmarkSessionManager_CurSession(b *testing.B) {\n\ts := NewSessionCtx(context.Background())\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tBindSession(s)\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = mustCurSession()\n\t\t}\n\t\tUnbindSession()\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tBindSession(s)\n\t\t\tfor p.Next() {\n\t\t\t\t_ = mustCurSession()\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionManager_CurSession(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":421,"StartOffset":9770,"EndOffset":9783},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":424,"StartOffset":9845,"EndOffset":9856},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":426,"StartOffset":9896,"EndOffset":9910},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":428,"StartOffset":9919,"EndOffset":9932}]},"BenchmarkSessionMap_Get":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","File":"api_test.go","Line":526,"StartOffset":11671,"EndOffset":12071,"Content":"func BenchmarkSessionMap_Get(b *testing.B) {\n\ts := NewSessionMap(map[interface{}]interface{}{})\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.Get(N / 2)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.Get(N / 2)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionMap_Get(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":527,"StartOffset":11722,"EndOffset":11735}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":528,"StartOffset":11775,"EndOffset":11782}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":529,"StartOffset":11804,"EndOffset":11805}]},"BenchmarkSessionMap_WithValue":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","File":"api_test.go","Line":504,"StartOffset":11247,"EndOffset":11669,"Content":"func BenchmarkSessionMap_WithValue(b *testing.B) {\n\ts := NewSessionMap(map[interface{}]interface{}{})\n\tvar ss Session = s\n\tfor i := 0; i \u003c N; i++ {\n\t\tss = ss.WithValue(i, i)\n\t}\n\n\tb.Run(\"sync\", func(b *testing.B) {\n\t\tfor i := 0; i \u003c b.N; i++ {\n\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t}\n\t})\n\n\tb.Run(\"parallel\", func(b *testing.B) {\n\t\tb.RunParallel(func(p *testing.PB) {\n\t\t\tfor p.Next() {\n\t\t\t\t_ = ss.WithValue(N/2, -1)\n\t\t\t}\n\t\t})\n\t})\n}","Signature":"func BenchmarkSessionMap_WithValue(b *testing.B)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":505,"StartOffset":11304,"EndOffset":11317}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"api_test.go","Line":506,"StartOffset":11357,"EndOffset":11364}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":507,"StartOffset":11386,"EndOffset":11387}]},"BindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"gls.go","Line":115,"StartOffset":3200,"EndOffset":3457,"Content":"// BindSession binds the session with current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc BindSession(s Session) {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.BindSession(SessionID(goID()), s)\n}","Signature":"func BindSession(s Session)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":119,"StartOffset":3444,"EndOffset":3448}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":119,"StartOffset":3434,"EndOffset":3443}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":116,"StartOffset":3364,"EndOffset":3381}]},"CurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"gls.go","Line":104,"StartOffset":2908,"EndOffset":3198,"Content":"// CurSession gets the session for current goroutine\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc CurSession() (Session, bool) {\n\tif defaultManagerObj == nil {\n\t\treturn nil, false\n\t}\n\ts, ok := defaultManagerObj.GetSession(SessionID(goID()))\n\treturn s, ok\n}","Signature":"func CurSession() (Session, bool)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":108,"StartOffset":3174,"EndOffset":3178}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":108,"StartOffset":3164,"EndOffset":3173}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":105,"StartOffset":3075,"EndOffset":3092}]},"DefaultManagerOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"gls.go","Line":42,"StartOffset":1270,"EndOffset":1546,"Content":"// DefaultManagerOptions returns default options for the default manager\nfunc DefaultManagerOptions() ManagerOptions {\n\treturn ManagerOptions{\n\t\tShardNumber: 100,\n\t\tGCInterval: time.Minute * 10,\n\t\tEnableImplicitlyTransmitAsync: false,\n\t}\n}","Signature":"func DefaultManagerOptions() ManagerOptions","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"gls.go","Line":43,"StartOffset":1397,"EndOffset":1411}]},"ExampleSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","File":"example_test.go","Line":85,"StartOffset":2059,"EndOffset":4355,"Content":"func ExampleSessionCtx() {\n\t// initialize default manager first\n\tInitDefaultManager(DefaultManagerOptions())\n\n\tvar ctx = context.Background()\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionCtx(ctx) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := GetCurSession().Get(key) // val exists\n\t\tASSERT(val == v)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := GetCurSession().WithValue(key2, v2)\n\t\tval2 := GetCurSession().Get(key2) // val2 == nil\n\t\tASSERT(val2 == nil)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := GetCurSession().Get(key) // val exists\n\t\t\tASSERT(val == v)\n\n\t\t\tval2 := GetCurSession().Get(key2) // val2 exists\n\t\t\tASSERT(val2 == v2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\tASSERT(GetCurSession().IsValid() == false) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := GetCurSession().Get(key) // val exists\n\t\t\tASSERT(v == val)\n\n\t\t\tval2 := GetCurSession().Get(key2) // val2 == nil\n\t\t\tASSERT(val2 == nil)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\tASSERT(GetCurSession().IsValid() == false) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = GetCurSession().Get(key2) // val2 exists\n\t\tASSERT(v2 == val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\tASSERT(next.IsValid() == false) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := GetCurSession().Get(key2) // val2 == nil\n\tASSERT(val2 == nil)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\tASSERT(start.IsValid() == false) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func ExampleSessionCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"example_test.go","Line":87,"StartOffset":2124,"EndOffset":2142},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"example_test.go","Line":87,"StartOffset":2143,"EndOffset":2164},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"example_test.go","Line":96,"StartOffset":2368,"EndOffset":2381},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"example_test.go","Line":102,"StartOffset":2517,"EndOffset":2528},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"example_test.go","Line":105,"StartOffset":2567,"EndOffset":2569},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","File":"example_test.go","Line":107,"StartOffset":2633,"EndOffset":2646},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":108,"StartOffset":2674,"EndOffset":2680},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"example_test.go","Line":118,"StartOffset":2995,"EndOffset":3004},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"example_test.go","Line":186,"StartOffset":4338,"EndOffset":4351}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"example_test.go","Line":107,"StartOffset":2649,"EndOffset":2652},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"example_test.go","Line":113,"StartOffset":2836,"EndOffset":2845},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"example_test.go","Line":130,"StartOffset":3291,"EndOffset":3298}]},"ExampleSessionCtx_EnableImplicitlyTransmitAsync":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","File":"example_test.go","Line":38,"StartOffset":849,"EndOffset":2057,"Content":"func ExampleSessionCtx_EnableImplicitlyTransmitAsync() {\n\t// EnableImplicitlyTransmitAsync must be true\n\tInitDefaultManager(ManagerOptions{\n\t\tShardNumber: 10,\n\t\tEnableImplicitlyTransmitAsync: true,\n\t\tGCInterval: time.Hour,\n\t})\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\tlabels := pprof.Labels(\"c\", \"d\")\n\tpprof.Do(context.Background(), labels, func(ctx context.Context) {})\n\n\ts := NewSessionMap(map[interface{}]interface{}{\n\t\t\"a\": \"b\",\n\t})\n\tBindSession(s)\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\t// labels := pprof.Labels(\"c\", \"d\")\n\t// pprof.Do(context.Background(), labels, func(ctx context.Context){})\n\n\twg := sync.WaitGroup{}\n\twg.Add(3)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\t\t}()\n\n\t\tASSERT(\"b\" == mustCurSession().Get(\"a\"))\n\t\tUnbindSession()\n\t\tASSERT(nil == mustCurSession())\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tASSERT(nil == mustCurSession())\n\t\t}()\n\n\t}()\n\twg.Wait()\n}","Signature":"func ExampleSessionCtx_EnableImplicitlyTransmitAsync()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"example_test.go","Line":40,"StartOffset":954,"EndOffset":972},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"example_test.go","Line":51,"StartOffset":1357,"EndOffset":1370},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"example_test.go","Line":54,"StartOffset":1417,"EndOffset":1428},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","File":"example_test.go","Line":65,"StartOffset":1743,"EndOffset":1749},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"example_test.go","Line":65,"StartOffset":1757,"EndOffset":1771},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"example_test.go","Line":73,"StartOffset":1914,"EndOffset":1927}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"example_test.go","Line":65,"StartOffset":1774,"EndOffset":1777}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"example_test.go","Line":40,"StartOffset":973,"EndOffset":987}]},"GetCurSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","File":"example_test.go","Line":30,"StartOffset":731,"EndOffset":847,"Content":"func GetCurSession() Session {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tpanic(\"can't get current session!\")\n\t}\n\treturn s\n}","Signature":"func GetCurSession() Session","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"example_test.go","Line":31,"StartOffset":772,"EndOffset":782}]},"GetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","File":"gls.go","Line":51,"StartOffset":1548,"EndOffset":1667,"Content":"// GetDefaultManager returns the default manager\nfunc GetDefaultManager() *SessionManager {\n\treturn defaultManagerObj\n}","Signature":"func GetDefaultManager() *SessionManager","GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":52,"StartOffset":1648,"EndOffset":1665}]},"Go":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"gls.go","Line":137,"StartOffset":3868,"EndOffset":4049,"Content":"// Go calls f asynchronously and pass caller's session to the new goroutine\nfunc Go(f func()) {\n\ts, ok := CurSession()\n\tif !ok {\n\t\tGoSession(nil, f)\n\t} else {\n\t\tGoSession(s, f)\n\t}\n}","Signature":"func Go(f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"gls.go","Line":138,"StartOffset":3974,"EndOffset":3984},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"gls.go","Line":140,"StartOffset":3999,"EndOffset":4008}]},"GoSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"gls.go","Line":147,"StartOffset":4051,"EndOffset":4361,"Content":"// SessionGo calls f asynchronously and pass s session to the new goroutine\nfunc GoSession(s Session, f func()) {\n\tgo func() {\n\t\tdefer func() {\n\t\t\tif v := recover(); v != nil {\n\t\t\t\tprintln(fmt.Sprintf(\"GoSession recover: %v\", v))\n\t\t\t}\n\t\t\tUnbindSession()\n\t\t}()\n\t\tif s != nil {\n\t\t\tBindSession(s)\n\t\t}\n\t\tf()\n\t}()\n}","Signature":"func GoSession(s Session, f func())","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"gls.go","Line":153,"StartOffset":4289,"EndOffset":4302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"gls.go","Line":156,"StartOffset":4330,"EndOffset":4341}]},"InitDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"gls.go","Line":64,"StartOffset":1669,"EndOffset":2277,"Content":"// InitDefaultManager update and restart default manager.\n// It accept argument opts and env config both.\n//\n// NOTICE:\n// - It use env SESSION_CONFIG_KEY prior to argument opts;\n// - If both env and opts are empty, it won't reset manager;\n// - For concurrent safety, you can only successfully reset manager ONCE.\n//\n//go:nocheckptr\nfunc InitDefaultManager(opts ManagerOptions) {\n\tdefaultManagerOnce.Do(func() {\n\t\t// env config has high priority\n\t\tcheckEnvOptions(\u0026opts)\n\n\t\tif defaultManagerObj != nil {\n\t\t\tdefaultManagerObj.Close()\n\t\t}\n\t\tobj := NewSessionManager(opts)\n\t\tdefaultManagerObj = \u0026obj\n\t})\n}","Signature":"func InitDefaultManager(opts ManagerOptions)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","File":"gls.go","Line":67,"StartOffset":2123,"EndOffset":2138},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"gls.go","Line":72,"StartOffset":2221,"EndOffset":2238}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":69,"StartOffset":2152,"EndOffset":2169}]},"NewSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"session.go","Line":44,"StartOffset":1225,"EndOffset":1436,"Content":"// NewSessionCtx creates and enables a SessionCtx\nfunc NewSessionCtx(ctx context.Context) SessionCtx {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn SessionCtx{\n\t\tenabled: \u0026enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func NewSessionCtx(ctx context.Context) SessionCtx","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":47,"StartOffset":1383,"EndOffset":1393}]},"NewSessionCtxWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","File":"session.go","Line":55,"StartOffset":1438,"EndOffset":1720,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx {\n\tret := NewSessionCtx(ctx)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionCtxWithTimeout(ctx context.Context, timeout time.Duration) SessionCtx","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"session.go","Line":56,"StartOffset":1625,"EndOffset":1638}]},"NewSessionManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"manager.go","Line":63,"StartOffset":1636,"EndOffset":2138,"Content":"// NewSessionManager creates a SessionManager with default containers\n// If opts.GCInterval \u003e 0, it will start scheduled GC() loop automatically\nfunc NewSessionManager(opts ManagerOptions) SessionManager {\n\tif opts.ShardNumber \u003c= 0 {\n\t\tpanic(\"ShardNumber must be larger than zero\")\n\t}\n\tshards := make([]*shard, opts.ShardNumber)\n\tfor i := range shards {\n\t\tshards[i] = newShard()\n\t}\n\tret := SessionManager{\n\t\tshards: shards,\n\t\topts: opts,\n\t}\n\n\tif opts.GCInterval \u003e 0 {\n\t\tret.startGC()\n\t}\n\treturn ret\n}","Signature":"func NewSessionManager(opts ManagerOptions) SessionManager","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","File":"manager.go","Line":69,"StartOffset":2004,"EndOffset":2012}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":67,"StartOffset":1940,"EndOffset":1945},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","File":"manager.go","Line":71,"StartOffset":2026,"EndOffset":2040}]},"NewSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"session.go","Line":102,"StartOffset":2676,"EndOffset":2897,"Content":"// NewSessionMap creates and enables a SessionMap\nfunc NewSessionMap(m map[interface{}]interface{}) *SessionMap {\n\tvar enabled atomic.Value\n\tenabled.Store(true)\n\treturn \u0026SessionMap{\n\t\tenabled: \u0026enabled,\n\t\tstorage: m,\n\t}\n}","Signature":"func NewSessionMap(m map[interface{}]interface{}) *SessionMap","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","File":"session.go","Line":105,"StartOffset":2846,"EndOffset":2856}]},"NewSessionMapWithTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","File":"session.go","Line":113,"StartOffset":2899,"EndOffset":3190,"Content":"// NewSessionCtx creates and enables a SessionCtx,\n// and disable the session after timeout\nfunc NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap {\n\tret := NewSessionMap(m)\n\tgo func() {\n\t\t\u003c-time.NewTimer(timeout).C\n\t\tret.Disable()\n\t}()\n\treturn ret\n}","Signature":"func NewSessionMapWithTimeout(m map[interface{}]interface{}, timeout time.Duration) *SessionMap","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"session.go","Line":114,"StartOffset":3097,"EndOffset":3110}]},"Session.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get","File":"session.go","Line":30,"StartOffset":821,"EndOffset":892,"Content":"// Get returns value for specific key\nGet(key interface{}) interface{}","Signature":"// Get returns value for specific key\nGet(key interface{}) interface{}"},"Session.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid","File":"session.go","Line":27,"StartOffset":751,"EndOffset":818,"Content":"// IsValid tells if the session is valid at present\nIsValid() bool","Signature":"// IsValid tells if the session is valid at present\nIsValid() bool"},"Session.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue","File":"session.go","Line":33,"StartOffset":895,"EndOffset":1025,"Content":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session","Signature":"// WithValue sets value for specific key,and return newly effective session\nWithValue(key interface{}, val interface{}) Session"},"SessionCtx.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable","File":"session.go","Line":65,"StartOffset":1722,"EndOffset":1813,"Content":"// Disable ends the session\nfunc (self SessionCtx) Disable() {\n\tself.enabled.Store(false)\n}","Signature":"func (self SessionCtx) Disable()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export","File":"session.go","Line":70,"StartOffset":1815,"EndOffset":1924,"Content":"// Export exports underlying context\nfunc (self SessionCtx) Export() context.Context {\n\treturn self.storage\n}","Signature":"func (self SessionCtx) Export() context.Context","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get","File":"session.go","Line":80,"StartOffset":2056,"EndOffset":2177,"Content":"// Get value for specific key\nfunc (self SessionCtx) Get(key interface{}) interface{} {\n\treturn self.storage.Value(key)\n}","Signature":"func (self SessionCtx) Get(key interface{}) interface{}","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid","File":"session.go","Line":75,"StartOffset":1926,"EndOffset":2054,"Content":"// IsValid tells if the session is valid at present\nfunc (self SessionCtx) IsValid() bool {\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self SessionCtx) IsValid() bool","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}}},"SessionCtx.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","File":"session.go","Line":85,"StartOffset":2179,"EndOffset":2438,"Content":"// Set value for specific key,and return newly effective session\nfunc (self SessionCtx) WithValue(key interface{}, val interface{}) Session {\n\tctx := context.WithValue(self.storage, key, val)\n\treturn SessionCtx{\n\t\tenabled: self.enabled,\n\t\tstorage: ctx,\n\t}\n}","Signature":"func (self SessionCtx) WithValue(key interface{}, val interface{}) Session","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}},"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":87,"StartOffset":2381,"EndOffset":2391}]},"SessionManager.BindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","File":"manager.go","Line":134,"StartOffset":3290,"EndOffset":3573,"Content":"// BindSession binds the session with current goroutine\nfunc (self *SessionManager) BindSession(id SessionID, s Session) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\tshard.Store(id, s)\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\ttransmitSessionID(id)\n\t}\n}","Signature":"func (self *SessionManager) BindSession(id SessionID, s Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","File":"manager.go","Line":140,"StartOffset":3547,"EndOffset":3564}]},"SessionManager.Close":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close","File":"manager.go","Line":200,"StartOffset":4874,"EndOffset":5010,"Content":"// Close stop persistent work for the manager, like GC\nfunc (self SessionManager) Close() {\n\tif self.tik != nil {\n\t\tself.tik.Stop()\n\t}\n}","Signature":"func (self SessionManager) Close()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.GC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","File":"manager.go","Line":163,"StartOffset":4014,"EndOffset":4549,"Content":"// GC sweep invalid sessions and release unused memory\nfunc (self SessionManager) GC() {\n\tif !atomic.CompareAndSwapUint32(\u0026self.inGC, 0, 1) {\n\t\treturn\n\t}\n\n\tfor _, shard := range self.shards {\n\t\tshard.lock.Lock()\n\t\tn := shard.m\n\t\tm := make(map[SessionID]Session, len(n))\n\t\tfor id, s := range n {\n\t\t\t// Warning: may panic here?\n\t\t\tif s.IsValid() {\n\t\t\t\tm[id] = s\n\t\t\t}\n\t\t}\n\t\t// atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(\u0026shard.m)), unsafe.Pointer(\u0026m))\n\t\tshard.m = m\n\t\tshard.lock.Unlock()\n\t}\n\n\tatomic.StoreUint32(\u0026self.inGC, 0)\n}","Signature":"func (self SessionManager) GC()","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":171,"StartOffset":4257,"EndOffset":4266},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"manager.go","Line":171,"StartOffset":4267,"EndOffset":4274}]},"SessionManager.GetSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","File":"manager.go","Line":115,"StartOffset":2768,"EndOffset":3288,"Content":"// Get gets specific session\n// or get inherited session if option EnableImplicitlyTransmitAsync is true\nfunc (self *SessionManager) GetSession(id SessionID) (Session, bool) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\tsession, ok := shard.Load(id)\n\tif ok {\n\t\treturn session, ok\n\t}\n\tif !self.opts.EnableImplicitlyTransmitAsync {\n\t\treturn nil, false\n\t}\n\n\tid, ok = getSessionID()\n\tif !ok {\n\t\treturn nil, false\n\t}\n\tshard = self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\treturn shard.Load(id)\n}","Signature":"func (self *SessionManager) GetSession(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","File":"manager.go","Line":125,"StartOffset":3153,"EndOffset":3165}]},"SessionManager.Options":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options","File":"manager.go","Line":83,"StartOffset":2140,"EndOffset":2252,"Content":"// Options shows the manager's Options\nfunc (self SessionManager) Options() ManagerOptions {\n\treturn self.opts\n}","Signature":"func (self SessionManager) Options() ManagerOptions","Receiver":{"IsPointer":false,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionManager.UnbindSession":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","File":"manager.go","Line":149,"StartOffset":3575,"EndOffset":4012,"Content":"// UnbindSession clears current session\n//\n// Notice: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\nfunc (self *SessionManager) UnbindSession(id SessionID) {\n\tshard := self.shards[uint64(id)%uint64(self.opts.ShardNumber)]\n\n\t_, ok := shard.Load(id)\n\tif ok {\n\t\tshard.Delete(id)\n\t}\n\n\tif self.opts.EnableImplicitlyTransmitAsync {\n\t\tclearSessionID()\n\t}\n}","Signature":"func (self *SessionManager) UnbindSession(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}},"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","File":"manager.go","Line":158,"StartOffset":3991,"EndOffset":4005}]},"SessionManager.startGC":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC","File":"manager.go","Line":187,"StartOffset":4551,"EndOffset":4872,"Content":"// startGC start a scheduled goroutine to call GC() according to GCInterval\nfunc (self *SessionManager) startGC() {\n\tif self.opts.GCInterval \u003c time.Second {\n\t\tpanic(\"GCInterval must be larger than 1 second\")\n\t}\n\tself.tik = time.NewTicker(self.opts.GCInterval)\n\tgo func() {\n\t\tfor range self.tik.C {\n\t\t\tself.GC()\n\t\t}\n\t}()\n}","Signature":"func (self *SessionManager) startGC()","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}}},"SessionMap.Disable":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable","File":"session.go","Line":131,"StartOffset":3359,"EndOffset":3481,"Content":"// Disable ends the session\nfunc (self *SessionMap) Disable() {\n\tif self == nil {\n\t\treturn\n\t}\n\tself.enabled.Store(false)\n}","Signature":"func (self *SessionMap) Disable()","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Export":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export","File":"session.go","Line":139,"StartOffset":3483,"EndOffset":3782,"Content":"// Export COPIES and exports underlying map\nfunc (self *SessionMap) Export() map[interface{}]interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tm := make(map[interface{}]interface{}, len(self.storage))\n\tself.lock.RLock()\n\tfor k, v := range self.storage {\n\t\tm[k] = v\n\t}\n\tself.lock.RUnlock()\n\treturn m\n}","Signature":"func (self *SessionMap) Export() map[interface{}]interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.Get":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get","File":"session.go","Line":153,"StartOffset":3784,"EndOffset":3986,"Content":"// Get value for specific key\nfunc (self *SessionMap) Get(key interface{}) interface{} {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.RLock()\n\tval := self.storage[key]\n\tself.lock.RUnlock()\n\treturn val\n}","Signature":"func (self *SessionMap) Get(key interface{}) interface{}","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.IsValid":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid","File":"session.go","Line":123,"StartOffset":3192,"EndOffset":3357,"Content":"// IsValid tells if the session is valid at present\nfunc (self *SessionMap) IsValid() bool {\n\tif self == nil {\n\t\treturn false\n\t}\n\treturn self.enabled.Load().(bool)\n}","Signature":"func (self *SessionMap) IsValid() bool","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"SessionMap.WithValue":{"Exported":true,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue","File":"session.go","Line":164,"StartOffset":3988,"EndOffset":4215,"Content":"// Set value for specific key,and return itself\nfunc (self *SessionMap) WithValue(key, val interface{}) Session {\n\tif self == nil {\n\t\treturn nil\n\t}\n\tself.lock.Lock()\n\tself.storage[key] = val\n\tself.lock.Unlock()\n\treturn self\n}","Signature":"func (self *SessionMap) WithValue(key, val interface{}) Session","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}}},"TestMain":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","File":"api_test.go","Line":32,"StartOffset":759,"EndOffset":844,"Content":"func TestMain(m *testing.M) {\n\tInitDefaultManager(DefaultManagerOptions())\n\tm.Run()\n}","Signature":"func TestMain(m *testing.M)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":33,"StartOffset":790,"EndOffset":808},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"api_test.go","Line":33,"StartOffset":809,"EndOffset":830}]},"TestRace":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","File":"api_test.go","Line":394,"StartOffset":9150,"EndOffset":9706,"Content":"func TestRace(t *testing.T) {\n\tmanager := NewSessionManager(ManagerOptions{\n\t\tShardNumber: 1,\n\t\tGCInterval: time.Second,\n\t})\n\tvar N = 1000\n\tvar start sync.RWMutex\n\tstart.Lock()\n\twg := sync.WaitGroup{}\n\tfor i := 0; i \u003c N; i++ {\n\t\twg.Add(1)\n\t\tgo func(i int) {\n\t\t\tdefer wg.Done()\n\t\t\ts := NewSessionMap(map[interface{}]interface{}{}).WithValue(\"a\", \"b\")\n\t\t\tstart.RLock()\n\t\t\tmanager.BindSession(SessionID(i), s)\n\t\t\tss, ok := manager.GetSession(SessionID(i))\n\t\t\tif !ok || ss.Get(\"a\") != \"b\" {\n\t\t\t\tt.Fatal(\"not equal\")\n\t\t\t}\n\t\t}(i)\n\t}\n\tstart.Unlock()\n\twg.Wait()\n}","Signature":"func TestRace(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":395,"StartOffset":9192,"EndOffset":9209},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":407,"StartOffset":9436,"EndOffset":9449}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","File":"api_test.go","Line":407,"StartOffset":9481,"EndOffset":9490}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":395,"StartOffset":9210,"EndOffset":9224},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":409,"StartOffset":9541,"EndOffset":9550}]},"TestRealBizGLS":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","File":"api_test.go","Line":666,"StartOffset":14381,"EndOffset":15078,"Content":"func TestRealBizGLS(t *testing.T) {\n\tvar runner = func(N int) {\n\t\tm := NewSessionManager(ManagerOptions{\n\t\t\tShardNumber: 100,\n\t\t\tGCInterval: time.Second,\n\t\t})\n\t\ts := \u0026stat{\n\t\t\tmin: time.Duration(math.MaxInt64),\n\t\t}\n\t\tctx, _ := context.WithTimeout(context.Background(), time.Second*60)\n\t\temitLoops(\u0026m, ctx, N, s)\n\t\tgo func(ctx context.Context) {\n\t\t\ttt := time.NewTicker(time.Second)\n\t\t\tfor {\n\t\t\t\tselect {\n\t\t\t\tcase \u003c-tt.C:\n\t\t\t\t\t{\n\t\t\t\t\t\tprintln(s.String())\n\t\t\t\t\t}\n\t\t\t\tcase \u003c-ctx.Done():\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t}\n\t\t}(ctx)\n\t\t\u003c-ctx.Done()\n\t}\n\n\tt.Run(\"10\", func(t *testing.T) {\n\t\trunner(10)\n\t})\n\tt.Run(\"100\", func(t *testing.T) {\n\t\trunner(100)\n\t})\n\tt.Run(\"1000\", func(t *testing.T) {\n\t\trunner(1000)\n\t})\n}","Signature":"func TestRealBizGLS(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":668,"StartOffset":14452,"EndOffset":14469},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","File":"api_test.go","Line":676,"StartOffset":14669,"EndOffset":14678}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":668,"StartOffset":14470,"EndOffset":14484},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","File":"api_test.go","Line":672,"StartOffset":14549,"EndOffset":14553}]},"TestResetDefaultManager":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","File":"api_test.go","Line":37,"StartOffset":846,"EndOffset":2463,"Content":"func TestResetDefaultManager(t *testing.T) {\n\told := defaultManagerObj\n\n\tt.Run(\"arg\", func(t *testing.T) {\n\t\tdefaultManagerOnce = sync.Once{}\n\t\texp := ManagerOptions{\n\t\t\tShardNumber: 1,\n\t\t\tEnableImplicitlyTransmitAsync: true,\n\t\t\tGCInterval: time.Second * 2,\n\t\t}\n\t\tInitDefaultManager(exp)\n\t\tact := defaultManagerObj.Options()\n\t\trequire.Equal(t, exp, act)\n\t})\n\n\tt.Run(\"arg\", func(t *testing.T) {\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv := `true,10,10s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp := DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact := defaultManagerObj.Options()\n\t\texp.ShardNumber = 10\n\t\texp.EnableImplicitlyTransmitAsync = true\n\t\texp.GCInterval = time.Second * 10\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `,1000`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.ShardNumber = 1000\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `,1,2s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.ShardNumber = 1\n\t\texp.GCInterval = time.Second * 2\n\t\trequire.Equal(t, exp, act)\n\n\t\tdefaultManagerOnce = sync.Once{}\n\t\tenv = `true,,2s`\n\t\tos.Setenv(SESSION_CONFIG_KEY, env)\n\t\texp = DefaultManagerOptions()\n\t\tInitDefaultManager(exp)\n\t\tact = defaultManagerObj.Options()\n\t\texp.EnableImplicitlyTransmitAsync = true\n\t\texp.GCInterval = time.Second * 2\n\t\trequire.Equal(t, exp, act)\n\t})\n\n\tdefaultManagerObj = old\n\tdefaultManagerOnce = sync.Once{}\n}","Signature":"func TestResetDefaultManager(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":47,"StartOffset":1147,"EndOffset":1165},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":49,"StartOffset":1218,"EndOffset":1223},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","File":"api_test.go","Line":56,"StartOffset":1381,"EndOffset":1402}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":42,"StartOffset":997,"EndOffset":1011}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"api_test.go","Line":38,"StartOffset":899,"EndOffset":916},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"api_test.go","Line":41,"StartOffset":955,"EndOffset":973},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"api_test.go","Line":55,"StartOffset":1347,"EndOffset":1365}]},"TestSessionCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","File":"api_test.go","Line":154,"StartOffset":3840,"EndOffset":6120,"Content":"func TestSessionCtx(t *testing.T) {\n\tvar ctx = context.Background()\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionCtx(ctx) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := mustCurSession().Get(key) // val exists\n\t\trequire.Equal(t, v, val)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := mustCurSession().WithValue(key2, v2)\n\t\tval2 := mustCurSession().Get(key2) // val2 == nil\n\t\trequire.Nil(t, val2)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exists\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 == nil\n\t\t\trequire.Nil(t, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = mustCurSession().Get(key2) // val2 exists\n\t\trequire.Equal(t, v2, val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\trequire.False(t, next.IsValid()) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := mustCurSession().Get(key2) // val2 == nil\n\trequire.Nil(t, val2)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\trequire.False(t, start.IsValid()) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func TestSessionCtx(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":162,"StartOffset":4075,"EndOffset":4088},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":168,"StartOffset":4224,"EndOffset":4235},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"api_test.go","Line":171,"StartOffset":4274,"EndOffset":4276},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":173,"StartOffset":4340,"EndOffset":4354},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":174,"StartOffset":4390,"EndOffset":4395},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","File":"api_test.go","Line":181,"StartOffset":4635,"EndOffset":4638},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"api_test.go","Line":184,"StartOffset":4714,"EndOffset":4723},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":196,"StartOffset":5013,"EndOffset":5018},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":252,"StartOffset":6103,"EndOffset":6116}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":173,"StartOffset":4357,"EndOffset":4360},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":179,"StartOffset":4553,"EndOffset":4562},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"api_test.go","Line":196,"StartOffset":5039,"EndOffset":5046}]},"TestSessionManager_GC":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","File":"api_test.go","Line":360,"StartOffset":8481,"EndOffset":9148,"Content":"func TestSessionManager_GC(t *testing.T) {\n\tinter := time.Second * 2\n\tsd := 10\n\tmanager := NewSessionManager(ManagerOptions{\n\t\tShardNumber: sd,\n\t\tGCInterval: inter,\n\t})\n\n\tvar N = 1000\n\tfor i := 0; i \u003c N; i++ {\n\t\tm := map[interface{}]interface{}{}\n\t\ts := NewSessionMap(m)\n\t\tmanager.BindSession(SessionID(i), s)\n\t\tif i%2 == 1 {\n\t\t\ts.Disable()\n\t\t}\n\t}\n\tfor _, shard := range manager.shards {\n\t\tshard.lock.Lock()\n\t\tl := len(shard.m)\n\t\tshard.lock.Unlock()\n\t\trequire.Equal(t, N/sd, l)\n\t}\n\ttime.Sleep(inter + inter\u003e\u003e1)\n\tsum := 0\n\tfor _, shard := range manager.shards {\n\t\tshard.lock.Lock()\n\t\tl := len(shard.m)\n\t\tshard.lock.Unlock()\n\t\tsum += l\n\t}\n\trequire.Equal(t, N/2, sum)\n}","Signature":"func TestSessionManager_GC(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","File":"api_test.go","Line":363,"StartOffset":8572,"EndOffset":8589},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":371,"StartOffset":8736,"EndOffset":8749},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":381,"StartOffset":8942,"EndOffset":8947}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":363,"StartOffset":8590,"EndOffset":8604},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":372,"StartOffset":8775,"EndOffset":8784}]},"TestSessionMap":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","File":"api_test.go","Line":260,"StartOffset":6189,"EndOffset":8479,"Content":"func TestSessionMap(t *testing.T) {\n\tvar key, v = \"a\", \"b\"\n\tvar key2, v2 = \"c\", \"d\"\n\tvar sig = make(chan struct{})\n\tvar sig2 = make(chan struct{})\n\n\t// initialize new session with context\n\tvar session = NewSessionMap(map[interface{}]interface{}{}) // implementation...\n\n\t// set specific key-value and update session\n\tstart := session.WithValue(key, v)\n\n\t// set current session\n\tBindSession(start)\n\n\t// pass to new goroutine...\n\tGo(func() {\n\t\t// read specific key under current session\n\t\tval := mustCurSession().Get(key) // val exists\n\t\trequire.Equal(t, v, val)\n\t\t// doSomething....\n\n\t\t// set specific key-value under current session\n\t\t// NOTICE: current session won't change here\n\t\tnext := mustCurSession().WithValue(key2, v2)\n\t\tval2 := mustCurSession().Get(key2) // val2 exist\n\t\trequire.Equal(t, v2, val2)\n\n\t\t// pass both parent session and new session to sub goroutine\n\t\tGoSession(next, func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exists\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g2 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tGo(func() {\n\t\t\t// read specific key under current session\n\t\t\tval := mustCurSession().Get(key) // val exists\n\t\t\trequire.Equal(t, v, val)\n\n\t\t\tval2 := mustCurSession().Get(key2) // val2 exist\n\t\t\trequire.Equal(t, v2, val2)\n\t\t\t// doSomething....\n\n\t\t\tsig2 \u003c- struct{}{}\n\n\t\t\t\u003c-sig\n\t\t\trequire.False(t, mustCurSession().IsValid()) // current session is invalid\n\n\t\t\tprintln(\"g3 done\")\n\t\t\tsig2 \u003c- struct{}{}\n\t\t})\n\n\t\tBindSession(next)\n\t\tval2 = mustCurSession().Get(key2) // val2 exists\n\t\trequire.Equal(t, v2, val2)\n\n\t\tsig2 \u003c- struct{}{}\n\n\t\t\u003c-sig\n\t\trequire.False(t, next.IsValid()) // next is invalid\n\n\t\tprintln(\"g1 done\")\n\t\tsig2 \u003c- struct{}{}\n\t})\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\n\tval2 := mustCurSession().Get(key2) // val2 exists\n\trequire.Equal(t, v2, val2)\n\n\t// initiatively ends the session,\n\t// then all the inherited session (including next) will be disabled\n\tsession.Disable()\n\tclose(sig)\n\n\trequire.False(t, start.IsValid()) // start is invalid\n\n\t\u003c-sig2\n\t\u003c-sig2\n\t\u003c-sig2\n\tprintln(\"g0 done\")\n\n\tUnbindSession()\n}","Signature":"func TestSessionMap(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":267,"StartOffset":6392,"EndOffset":6405},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":273,"StartOffset":6567,"EndOffset":6578},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","File":"api_test.go","Line":276,"StartOffset":6617,"EndOffset":6619},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":278,"StartOffset":6683,"EndOffset":6697},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":279,"StartOffset":6733,"EndOffset":6738},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","File":"api_test.go","Line":289,"StartOffset":7062,"EndOffset":7071},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":301,"StartOffset":7361,"EndOffset":7366},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":357,"StartOffset":8462,"EndOffset":8475}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":278,"StartOffset":6700,"EndOffset":6703},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","File":"api_test.go","Line":284,"StartOffset":6896,"EndOffset":6905},{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","File":"api_test.go","Line":301,"StartOffset":7387,"EndOffset":7394}]},"TestSessionTimeout":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","File":"api_test.go","Line":144,"StartOffset":3513,"EndOffset":3838,"Content":"func TestSessionTimeout(t *testing.T) {\n\ts := NewSessionCtxWithTimeout(context.Background(), time.Second)\n\tss := s.WithValue(1, 2)\n\tm := NewSessionMapWithTimeout(map[interface{}]interface{}{}, time.Second)\n\tmm := m.WithValue(1, 2)\n\ttime.Sleep(time.Second * 2)\n\trequire.False(t, ss.IsValid())\n\trequire.False(t, mm.IsValid())\n}","Signature":"func TestSessionTimeout(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","File":"api_test.go","Line":145,"StartOffset":3559,"EndOffset":3583},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","File":"api_test.go","Line":147,"StartOffset":3650,"EndOffset":3674},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","File":"api_test.go","Line":150,"StartOffset":3782,"EndOffset":3787}]},"TestTransparentTransmitAsync":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","File":"api_test.go","Line":99,"StartOffset":2465,"EndOffset":3511,"Content":"//go:nocheckptr\nfunc TestTransparentTransmitAsync(t *testing.T) {\n\told := defaultManagerObj\n\tInitDefaultManager(ManagerOptions{\n\t\tShardNumber: 10,\n\t\tEnableImplicitlyTransmitAsync: true,\n\t\tGCInterval: time.Second * 2,\n\t})\n\ts := NewSessionMap(map[interface{}]interface{}{\n\t\t\"a\": \"b\",\n\t})\n\n\tlabels := pprof.Labels(\"c\", \"d\")\n\n\t// WARNING: pprof.Do() must be called before BindSession(),\n\t// otherwise transparently transmitting session will be dysfunctional\n\tpprof.Do(context.Background(), labels, func(ctx context.Context) {})\n\n\tBindSession(s)\n\n\twg := sync.WaitGroup{}\n\twg.Add(3)\n\tgo func() {\n\t\tdefer wg.Done()\n\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\t\t}()\n\n\t\trequire.Equal(t, \"b\", mustCurSession().Get(\"a\"))\n\t\tUnbindSession()\n\t\trequire.Nil(t, mustCurSession())\n\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\trequire.Nil(t, mustCurSession())\n\t\t}()\n\t}()\n\n\twg.Wait()\n\tdefaultManagerObj = old\n\tdefaultManagerOnce = sync.Once{}\n}","Signature":"func TestTransparentTransmitAsync(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","File":"api_test.go","Line":101,"StartOffset":2558,"EndOffset":2576},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","File":"api_test.go","Line":106,"StartOffset":2729,"EndOffset":2742},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","File":"api_test.go","Line":116,"StartOffset":3028,"EndOffset":3039},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","File":"api_test.go","Line":122,"StartOffset":3120,"EndOffset":3125},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":122,"StartOffset":3134,"EndOffset":3148},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"api_test.go","Line":130,"StartOffset":3307,"EndOffset":3320},{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","File":"api_test.go","Line":131,"StartOffset":3333,"EndOffset":3336}],"MethodCalls":[{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","File":"api_test.go","Line":122,"StartOffset":3151,"EndOffset":3154}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"api_test.go","Line":101,"StartOffset":2577,"EndOffset":2591}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"api_test.go","Line":100,"StartOffset":2539,"EndOffset":2556},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"api_test.go","Line":141,"StartOffset":3477,"EndOffset":3495}]},"UnbindSession":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","File":"gls.go","Line":129,"StartOffset":3459,"EndOffset":3866,"Content":"// UnbindSession unbind a session (if any) with current goroutine\n//\n// NOTICE: If you want to end the session,\n// please call `Disable()` (or whatever make the session invalid)\n// on your session's implementation\n//\n// NOTICE: MUST call `InitDefaultManager()` once before using this API\nfunc UnbindSession() {\n\tif defaultManagerObj == nil {\n\t\treturn\n\t}\n\tdefaultManagerObj.UnbindSession(SessionID(goID()))\n}","Signature":"func UnbindSession()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"gls.go","Line":133,"StartOffset":3856,"EndOffset":3860}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"gls.go","Line":133,"StartOffset":3846,"EndOffset":3855}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":130,"StartOffset":3774,"EndOffset":3791}]},"checkEnvOptions":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","File":"gls.go","Line":77,"StartOffset":2279,"EndOffset":2906,"Content":"func checkEnvOptions(opts *ManagerOptions) {\n\tif env := os.Getenv(SESSION_CONFIG_KEY); env != \"\" {\n\t\tenvs := strings.Split(env, \",\")\n\t\t// parse first option as EnableTransparentTransmitAsync\n\t\tif strings.ToLower(envs[0]) == \"true\" {\n\t\t\topts.EnableImplicitlyTransmitAsync = true\n\t\t}\n\n\t\t// parse first option as ShardNumber\n\t\tif len(envs) \u003e 1 {\n\t\t\tif opt, err := strconv.Atoi(envs[1]); err == nil {\n\t\t\t\topts.ShardNumber = opt\n\t\t\t}\n\t\t}\n\n\t\t// parse third option as EnableTransparentTransmitAsync\n\t\tif len(envs) \u003e 2 {\n\t\t\tif d, err := time.ParseDuration(envs[2]); err == nil \u0026\u0026 d \u003e time.Second {\n\t\t\t\topts.GCInterval = d\n\t\t\t}\n\t\t}\n\t}\n}","Signature":"func checkEnvOptions(opts *ManagerOptions)","GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":78,"StartOffset":2345,"EndOffset":2363}]},"clearSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","File":"stubs.go","Line":77,"StartOffset":1687,"EndOffset":1948,"Content":"func clearSessionID() {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn\n\t}\n\tif _, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn\n\t}\n\tn := make(labelMap, len(*m))\n\tfor k, v := range *m {\n\t\tif k != Pprof_Label_Session_ID {\n\t\t\tn[k] = v\n\t\t}\n\t}\n\tsetPprofLabel(\u0026n)\n}","Signature":"func clearSessionID()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":78,"StartOffset":1717,"EndOffset":1729},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":91,"StartOffset":1929,"EndOffset":1942}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":85,"StartOffset":1831,"EndOffset":1839}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":82,"StartOffset":1777,"EndOffset":1799}]},"emitLoops":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","File":"api_test.go","Line":601,"StartOffset":13084,"EndOffset":13768,"Content":"func emitLoops(m *SessionManager, ctx context.Context, N int, s *stat) {\n\tfor i := 0; i \u003c N; i++ {\n\t\tgo func() {\n\t\t\tfor {\n\t\t\t\tif ctx.Err() != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tstart := time.Now()\n\t\t\t\tsession := NewSessionCtx(ctx)\n\t\t\t\tss := session.WithValue(\"a\", \"b\")\n\t\t\t\tm.BindSession(SessionID(goID()), ss)\n\t\t\t\tsss, _ := m.GetSession(SessionID(goID()))\n\t\t\t\tif val := sss.Get(\"a\"); val != \"b\" {\n\t\t\t\t\tpanic(fmt.Sprintf(\"unexpected val: %#v\", val))\n\t\t\t\t}\n\t\t\t\tm.UnbindSession(SessionID(goID()))\n\t\t\t\tcost := time.Now().Sub(start)\n\t\t\t\ts.Update(cost)\n\t\t\t\tfor a := 0; a \u003c 10; a++ {\n\t\t\t\t\ttime.Sleep(time.Microsecond * 50)\n\t\t\t\t\tfor b := 0; b \u003c 100000; b++ {\n\t\t\t\t\t\t_ = b\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n}","Signature":"func emitLoops(m *SessionManager, ctx context.Context, N int, s *stat)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","File":"api_test.go","Line":609,"StartOffset":13289,"EndOffset":13302},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"api_test.go","Line":611,"StartOffset":13374,"EndOffset":13378}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"api_test.go","Line":611,"StartOffset":13364,"EndOffset":13373}]},"getPproLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":38,"StartOffset":931,"EndOffset":1022,"Content":"//go:linkname getPproLabel runtime/pprof.runtime_getProfLabel\nfunc getPproLabel() *labelMap","Signature":"func getPproLabel() *labelMap"},"getSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","File":"stubs.go","Line":61,"StartOffset":1396,"EndOffset":1685,"Content":"func getSessionID() (SessionID, bool) {\n\tm := getPproLabel()\n\tif m == nil {\n\t\treturn 0, false\n\t}\n\tif v, ok := (*m)[Pprof_Label_Session_ID]; !ok {\n\t\treturn 0, false\n\t} else {\n\t\tid, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn 0, false\n\t\t}\n\t\treturn SessionID(id), true\n\t}\n}","Signature":"func getSessionID() (SessionID, bool)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":62,"StartOffset":1442,"EndOffset":1454}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"stubs.go","Line":73,"StartOffset":1661,"EndOffset":1670}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":66,"StartOffset":1511,"EndOffset":1533}]},"goID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","File":"stubs.go","Line":24,"StartOffset":681,"EndOffset":800,"Content":"//go:nocheckptr\nfunc goID() uint64 {\n\tgid, err := runtimex.GID()\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn uint64(gid)\n}","Signature":"func goID() uint64","FunctionCalls":[{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","File":"stubs.go","Line":25,"StartOffset":740,"EndOffset":743}]},"mustCurSession":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","File":"api_test.go","Line":255,"StartOffset":6122,"EndOffset":6187,"Content":"func mustCurSession() Session {\n\ts, _ := CurSession()\n\treturn s\n}","Signature":"func mustCurSession() Session","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","File":"api_test.go","Line":256,"StartOffset":6163,"EndOffset":6173}]},"newShard":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","File":"manager.go","Line":55,"StartOffset":1523,"EndOffset":1634,"Content":"func newShard() *shard {\n\tret := new(shard)\n\tret.m = make(map[SessionID]Session, defaultShardCap)\n\treturn ret\n}","Signature":"func newShard() *shard","Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":56,"StartOffset":1560,"EndOffset":1565},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":57,"StartOffset":1585,"EndOffset":1594},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"manager.go","Line":57,"StartOffset":1595,"EndOffset":1602}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","File":"manager.go","Line":57,"StartOffset":1604,"EndOffset":1619}]},"setPprofLabel":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":35,"StartOffset":835,"EndOffset":929,"Content":"//go:linkname setPprofLabel runtime/pprof.runtime_setProfLabel\nfunc setPprofLabel(m *labelMap)","Signature":"func setPprofLabel(m *labelMap)"},"shard.Delete":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete","File":"manager.go","Line":107,"StartOffset":2677,"EndOffset":2766,"Content":"func (s *shard) Delete(id SessionID) {\n\ts.lock.Lock()\n\tdelete(s.m, id)\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Delete(id SessionID)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"shard.Load":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load","File":"manager.go","Line":90,"StartOffset":2319,"EndOffset":2576,"Content":"func (s *shard) Load(id SessionID) (Session, bool) {\n\ts.lock.RLock()\n\n\t// p := atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(\u0026s.m)))\n\t// m := *(*map[SessionID]Session)(unsafe.Pointer(p))\n\n\tsession, ok := s.m[id]\n\ts.lock.RUnlock()\n\treturn session, ok\n}","Signature":"func (s *shard) Load(id SessionID) (Session, bool)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"shard.Store":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store","File":"manager.go","Line":101,"StartOffset":2578,"EndOffset":2675,"Content":"func (s *shard) Store(id SessionID, se Session) {\n\ts.lock.Lock()\n\ts.m[id] = se\n\ts.lock.Unlock()\n}","Signature":"func (s *shard) Store(id SessionID, se Session)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}}},"stat.String":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String","File":"api_test.go","Line":660,"StartOffset":14204,"EndOffset":14379,"Content":"func (st *stat) String() string {\n\tst.mux.RLock()\n\tdefer st.mux.RUnlock()\n\treturn fmt.Sprintf(\"min:%dns, max:%dns, avg:%dns\", st.min, st.max, st.sum/time.Duration(st.count))\n}","Signature":"func (st *stat) String() string","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}}},"stat.Update":{"Exported":false,"IsMethod":true,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update","File":"api_test.go","Line":647,"StartOffset":14000,"EndOffset":14202,"Content":"func (st *stat) Update(cost time.Duration) {\n\tst.mux.Lock()\n\tdefer st.mux.Unlock()\n\tif cost \u003e st.max {\n\t\tst.max = cost\n\t} else if cost \u003c st.min {\n\t\tst.min = cost\n\t}\n\tst.count++\n\tst.sum += cost\n\treturn\n}","Signature":"func (st *stat) Update(cost time.Duration)","Receiver":{"IsPointer":true,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}}},"transmitSessionID":{"Exported":false,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","File":"stubs.go","Line":42,"StartOffset":1072,"EndOffset":1394,"Content":"func transmitSessionID(id SessionID) {\n\tm := getPproLabel()\n\n\tvar n labelMap\n\tif m == nil {\n\t\tn = make(labelMap)\n\t} else {\n\t\tn = make(labelMap, len(*m))\n\t\tfor k, v := range *m {\n\t\t\tif k != Pprof_Label_Session_ID {\n\t\t\t\tn[k] = v\n\t\t\t}\n\t\t}\n\t}\n\n\tn[Pprof_Label_Session_ID] = strconv.FormatInt(int64(id), 10)\n\tsetPprofLabel(\u0026n)\n}","Signature":"func transmitSessionID(id SessionID)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","File":"stubs.go","Line":43,"StartOffset":1117,"EndOffset":1129},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","File":"stubs.go","Line":58,"StartOffset":1375,"EndOffset":1388}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":45,"StartOffset":1140,"EndOffset":1148}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":51,"StartOffset":1261,"EndOffset":1283}]}},"Types":{"ManagerOptions":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","File":"manager.go","Line":24,"StartOffset":697,"EndOffset":1270,"Content":"// ManagerOptions for SessionManager\ntype ManagerOptions struct {\n\t// EnableImplicitlyTransmitAsync enables transparently transmit\n\t// current session to children goroutines\n\t//\n\t// WARNING: Once this option enables, if you want to use `pprof.Do()`, it must be called before `BindSession()`,\n\t// otherwise transmitting will be disfunctional\n\tEnableImplicitlyTransmitAsync bool\n\n\t// ShardNumber is used to shard session id, it must be larger than zero\n\tShardNumber int\n\n\t// GCInterval decides the GC interval for SessionManager,\n\t// it must be larger than 1s or zero means disable GC\n\tGCInterval time.Duration\n}"},"Session":{"Exported":true,"TypeKind":"interface","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","File":"session.go","Line":25,"StartOffset":725,"EndOffset":1027,"Content":"// Session represents a local storage for one session\ntype Session interface {\n\t// IsValid tells if the session is valid at present\n\tIsValid() bool\n\n\t// Get returns value for specific key\n\tGet(key interface{}) interface{}\n\n\t// WithValue sets value for specific key,and return newly effective session\n\tWithValue(key interface{}, val interface{}) Session\n}","Methods":{"Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get"},"IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid"},"WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue"}}},"SessionCtx":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","File":"session.go","Line":38,"StartOffset":1149,"EndOffset":1223,"Content":"// SessionCtx implements Session with context,\n// which means children session WON'T affect parent and sibling sessions\ntype SessionCtx struct {\n\tenabled *atomic.Value\n\tstorage context.Context\n}","Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"SessionID":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","File":"manager.go","Line":88,"StartOffset":2296,"EndOffset":2317,"Content":"// SessionID is the identity of a session\ntype SessionID uint64"},"SessionManager":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","File":"manager.go","Line":46,"StartOffset":1389,"EndOffset":1495,"Content":"// SessionManager maintain and manage sessions\ntype SessionManager struct {\n\tshards []*shard\n\tinGC uint32\n\ttik *time.Ticker\n\topts ManagerOptions\n}"},"SessionMap":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","File":"session.go","Line":95,"StartOffset":2566,"EndOffset":2674,"Content":"// NewSessionMap implements Session with map,\n// which means children session WILL affect parent session and sibling sessions\ntype SessionMap struct {\n\tenabled *atomic.Value\n\tstorage map[interface{}]interface{}\n\tlock sync.RWMutex\n}","Implements":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"labelMap":{"Exported":false,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","File":"stubs.go","Line":32,"StartOffset":802,"EndOffset":833,"Content":"type labelMap map[string]string"},"shard":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","File":"manager.go","Line":40,"StartOffset":1272,"EndOffset":1340,"Content":"type shard struct {\n\tlock sync.RWMutex\n\tm map[SessionID]Session\n}"},"stat":{"Exported":false,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","File":"api_test.go","Line":638,"StartOffset":13885,"EndOffset":13998,"Content":"type stat struct {\n\tmax time.Duration\n\tmin time.Duration\n\tsum time.Duration\n\tcount int\n\n\tmux sync.RWMutex\n}"}},"Vars":{"N":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","File":"api_test.go","Line":30,"StartOffset":751,"EndOffset":757,"Type":{"ModPath":"","PkgPath":"","Name":"untyped int"},"Content":"const N untyped int = 10"},"Pprof_Label_Session_ID":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","File":"stubs.go","Line":40,"StartOffset":1030,"EndOffset":1070,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"const Pprof_Label_Session_ID untyped string = \"go_session_id\""},"SESSION_CONFIG_KEY":{"IsExported":true,"IsConst":true,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","File":"gls.go","Line":34,"StartOffset":1142,"EndOffset":1193,"Type":{"ModPath":"","PkgPath":"","Name":"untyped string"},"Content":"// SESSION_CONFIG_KEY is the env key for configuring default session manager.\n//\n//\tValue format: [EnableImplicitlyTransmitAsync][,ShardNumber][,GCInterval]\n//\t- EnableImplicitlyTransmitAsync: 'true' means enabled, otherwist means disabled\n//\t- ShardNumber: integer \u003e 0\n//\t- GCInterval: Golang time.Duration format, such as '10m' means ten minutes for each GC\n//\n// Once the key is set, default option values will be set if the option value doesn't exist.\nconst SESSION_CONFIG_KEY untyped string = \"CLOUDWEGO_SESSION_CONFIG_KEY\""},"defaultManagerObj":{"IsExported":false,"IsConst":false,"IsPointer":true,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","File":"gls.go","Line":37,"StartOffset":1202,"EndOffset":1236,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},"Content":"var defaultManagerObj *localsession.SessionManager"},"defaultManagerOnce":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","File":"gls.go","Line":38,"StartOffset":1238,"EndOffset":1266,"Type":{"ModPath":"","PkgPath":"sync","Name":"Once"},"Content":"var defaultManagerOnce sync.Once"},"defaultShardCap":{"IsExported":false,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","File":"manager.go","Line":53,"StartOffset":1501,"EndOffset":1521,"Type":{"ModPath":"","PkgPath":"","Name":"int"},"Content":"var defaultShardCap int = 10"}}},"github.com/cloudwego/localsession/backup":{"IsMain":false,"IsTest":false,"PkgPath":"github.com/cloudwego/localsession/backup","Functions":{"BackupCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","File":"backup/metainfo.go","Line":104,"StartOffset":2573,"EndOffset":2753,"Content":"// Set current Sessioin\nfunc BackupCtx(ctx context.Context) {\n\tif localsession.GetDefaultManager() == nil {\n\t\treturn\n\t}\n\tlocalsession.BindSession(localsession.NewSessionCtx(ctx))\n}","Signature":"func BackupCtx(ctx context.Context)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"backup/metainfo.go","Line":105,"StartOffset":2652,"EndOffset":2669},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"backup/metainfo.go","Line":108,"StartOffset":2707,"EndOffset":2718},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"backup/metainfo.go","Line":108,"StartOffset":2732,"EndOffset":2745}]},"ClearCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","File":"backup/metainfo.go","Line":112,"StartOffset":2755,"EndOffset":2829,"Content":"// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}","Signature":"func ClearCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"backup/metainfo.go","Line":113,"StartOffset":2812,"EndOffset":2825}]},"DefaultOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","File":"backup/metainfo.go","Line":36,"StartOffset":965,"EndOffset":1118,"Content":"// Default Options\nfunc DefaultOptions() Options {\n\treturn Options{\n\t\tEnable: false,\n\t\tManagerOptions: localsession.DefaultManagerOptions(),\n\t}\n}","Signature":"func DefaultOptions() Options","Results":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":36,"StartOffset":1006,"EndOffset":1013}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"backup/metainfo.go","Line":39,"StartOffset":1089,"EndOffset":1110}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":37,"StartOffset":1024,"EndOffset":1031}]},"Init":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","File":"backup/metainfo.go","Line":45,"StartOffset":1120,"EndOffset":1327,"Content":"// Init gloabal session manager\n// It uses env config first, the key is localsession.SESSION_CONFIG_KEY\nfunc Init(opts Options) {\n\tif opts.Enable {\n\t\tlocalsession.InitDefaultManager(opts.ManagerOptions)\n\t}\n}","Signature":"func Init(opts Options)","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":45,"StartOffset":1234,"EndOffset":1246}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"backup/metainfo.go","Line":47,"StartOffset":1283,"EndOffset":1301}]},"RecoverCtxOnDemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","File":"backup/metainfo.go","Line":54,"StartOffset":1329,"EndOffset":2571,"Content":"// If handler != nil, this func will try to merge metainfo\n// and pre-defined key-values (through Options.BackupHanlder)\n// from backup context into given context\nfunc RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context {\n\tif handler == nil {\n\t\treturn ctx\n\t}\n\ts, ok := localsession.CurSession()\n\tif !ok {\n\t\treturn ctx\n\t}\n\tc, ok := s.(localsession.SessionCtx)\n\tif !ok {\n\t\treturn ctx\n\t}\n\tpre := c.Export()\n\n\t// trigger user-defined handler if any\n\tnctx, backup := handler(pre, ctx)\n\tif !backup {\n\t\treturn ctx\n\t}\n\tctx = nctx\n\n\t// two-way merge all persistent metainfo if pre context has\n\tif n := metainfo.CountPersistentValues(pre); n \u003e 0 {\n\t\t// persistent kvs\n\t\tkvs := make([]string, 0, n*2)\n\t\tmkvs := metainfo.GetAllPersistentValues(ctx)\n\n\t\t// incoming ctx is prior to session\n\t\tif len(mkvs) == 0 {\n\t\t\t// merge all kvs from pre\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\t// filter kvs which exists in cur\n\t\t\t\tif _, ok := mkvs[k]; !ok {\n\t\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t\tctx = metainfo.WithPersistentValues(ctx, kvs...)\n\t}\n\n\treturn ctx\n}","Signature":"func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context","Params":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","File":"backup/metainfo.go","Line":54,"StartOffset":1538,"EndOffset":1559}],"FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"backup/metainfo.go","Line":58,"StartOffset":1639,"EndOffset":1649},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","File":"backup/metainfo.go","Line":76,"StartOffset":1959,"EndOffset":1980},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","File":"backup/metainfo.go","Line":79,"StartOffset":2066,"EndOffset":2088},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","File":"backup/metainfo.go","Line":84,"StartOffset":2196,"EndOffset":2217},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo.go","Line":97,"StartOffset":2520,"EndOffset":2540}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"backup/metainfo.go","Line":66,"StartOffset":1752,"EndOffset":1758}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"backup/metainfo.go","Line":62,"StartOffset":1704,"EndOffset":1714}]}},"Types":{"BackupHandler":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","File":"backup/metainfo.go","Line":27,"StartOffset":800,"EndOffset":885,"Content":"// BackupHandler is used to decide and recover prev context to cur context\ntype BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool)"},"Options":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","File":"backup/metainfo.go","Line":30,"StartOffset":898,"EndOffset":963,"Content":"// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}","InlineStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"backup/metainfo.go","Line":32,"StartOffset":934,"EndOffset":961}]}},"Vars":{}},"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]":{"IsMain":false,"IsTest":true,"PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Functions":{"BackupCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","File":"backup/metainfo.go","Line":104,"StartOffset":2573,"EndOffset":2753,"Content":"// Set current Sessioin\nfunc BackupCtx(ctx context.Context) {\n\tif localsession.GetDefaultManager() == nil {\n\t\treturn\n\t}\n\tlocalsession.BindSession(localsession.NewSessionCtx(ctx))\n}","Signature":"func BackupCtx(ctx context.Context)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","File":"backup/metainfo.go","Line":105,"StartOffset":2652,"EndOffset":2669},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","File":"backup/metainfo.go","Line":108,"StartOffset":2707,"EndOffset":2718},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","File":"backup/metainfo.go","Line":108,"StartOffset":2732,"EndOffset":2745}]},"ClearCtx":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","File":"backup/metainfo.go","Line":112,"StartOffset":2755,"EndOffset":2829,"Content":"// Unset current Session\nfunc ClearCtx() {\n\tlocalsession.UnbindSession()\n}","Signature":"func ClearCtx()","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","File":"backup/metainfo.go","Line":113,"StartOffset":2812,"EndOffset":2825}]},"DefaultOptions":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","File":"backup/metainfo.go","Line":36,"StartOffset":965,"EndOffset":1118,"Content":"// Default Options\nfunc DefaultOptions() Options {\n\treturn Options{\n\t\tEnable: false,\n\t\tManagerOptions: localsession.DefaultManagerOptions(),\n\t}\n}","Signature":"func DefaultOptions() Options","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","File":"backup/metainfo.go","Line":39,"StartOffset":1089,"EndOffset":1110}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","File":"backup/metainfo.go","Line":37,"StartOffset":1024,"EndOffset":1031}]},"Init":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","File":"backup/metainfo.go","Line":45,"StartOffset":1120,"EndOffset":1327,"Content":"// Init gloabal session manager\n// It uses env config first, the key is localsession.SESSION_CONFIG_KEY\nfunc Init(opts Options) {\n\tif opts.Enable {\n\t\tlocalsession.InitDefaultManager(opts.ManagerOptions)\n\t}\n}","Signature":"func Init(opts Options)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","File":"backup/metainfo.go","Line":47,"StartOffset":1283,"EndOffset":1301}]},"RecoverCtxOnDemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","File":"backup/metainfo.go","Line":54,"StartOffset":1329,"EndOffset":2571,"Content":"// If handler != nil, this func will try to merge metainfo\n// and pre-defined key-values (through Options.BackupHanlder)\n// from backup context into given context\nfunc RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context {\n\tif handler == nil {\n\t\treturn ctx\n\t}\n\ts, ok := localsession.CurSession()\n\tif !ok {\n\t\treturn ctx\n\t}\n\tc, ok := s.(localsession.SessionCtx)\n\tif !ok {\n\t\treturn ctx\n\t}\n\tpre := c.Export()\n\n\t// trigger user-defined handler if any\n\tnctx, backup := handler(pre, ctx)\n\tif !backup {\n\t\treturn ctx\n\t}\n\tctx = nctx\n\n\t// two-way merge all persistent metainfo if pre context has\n\tif n := metainfo.CountPersistentValues(pre); n \u003e 0 {\n\t\t// persistent kvs\n\t\tkvs := make([]string, 0, n*2)\n\t\tmkvs := metainfo.GetAllPersistentValues(ctx)\n\n\t\t// incoming ctx is prior to session\n\t\tif len(mkvs) == 0 {\n\t\t\t// merge all kvs from pre\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\treturn true\n\t\t\t})\n\t\t} else {\n\t\t\tmetainfo.RangePersistentValues(pre, func(k, v string) bool {\n\t\t\t\t// filter kvs which exists in cur\n\t\t\t\tif _, ok := mkvs[k]; !ok {\n\t\t\t\t\tkvs = append(kvs, k, v)\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t})\n\t\t}\n\t\tctx = metainfo.WithPersistentValues(ctx, kvs...)\n\t}\n\n\treturn ctx\n}","Signature":"func RecoverCtxOnDemands(ctx context.Context, handler BackupHandler) context.Context","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","File":"backup/metainfo.go","Line":58,"StartOffset":1639,"EndOffset":1649},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","File":"backup/metainfo.go","Line":76,"StartOffset":1959,"EndOffset":1980},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","File":"backup/metainfo.go","Line":79,"StartOffset":2066,"EndOffset":2088},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","File":"backup/metainfo.go","Line":84,"StartOffset":2196,"EndOffset":2217},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo.go","Line":97,"StartOffset":2520,"EndOffset":2540}],"MethodCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","File":"backup/metainfo.go","Line":66,"StartOffset":1752,"EndOffset":1758}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","File":"backup/metainfo.go","Line":62,"StartOffset":1704,"EndOffset":1714}]},"TestMain":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","File":"backup/metainfo_test.go","Line":27,"StartOffset":704,"EndOffset":854,"Content":"func TestMain(m *testing.M) {\n\topts := DefaultOptions()\n\topts.EnableImplicitlyTransmitAsync = true\n\topts.Enable = true\n\tInit(opts)\n\tos.Exit(m.Run())\n}","Signature":"func TestMain(m *testing.M)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","File":"backup/metainfo_test.go","Line":28,"StartOffset":743,"EndOffset":757},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","File":"backup/metainfo_test.go","Line":31,"StartOffset":824,"EndOffset":828}]},"TestRecoverCtxOndemands":{"Exported":true,"IsMethod":false,"IsInterfaceMethod":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","File":"backup/metainfo_test.go","Line":39,"StartOffset":918,"EndOffset":2703,"Content":"func TestRecoverCtxOndemands(t *testing.T) {\n\tctx := context.WithValue(context.Background(), CtxKeyTest1, \"c\")\n\tBackupCtx(metainfo.WithPersistentValues(ctx, \"a\", \"a\", \"b\", \"b\"))\n\n\thandler := BackupHandler(func(prev, cur context.Context) (ctx context.Context, backup bool) {\n\t\tif v := cur.Value(CtxKeyTest1); v == nil {\n\t\t\tv = prev.Value(CtxKeyTest1)\n\t\t\tif v != nil {\n\t\t\t\tctx = context.WithValue(cur, CtxKeyTest1, v)\n\t\t\t} else {\n\t\t\t\tctx = cur\n\t\t\t}\n\t\t\treturn ctx, true\n\t\t}\n\t\treturn cur, false\n\t})\n\ttype args struct {\n\t\tctx context.Context\n\t\thandler BackupHandler\n\t}\n\ttests := []struct {\n\t\tname string\n\t\targs args\n\t\twant context.Context\n\t}{\n\t\t{\n\t\t\tname: \"triggered\",\n\t\t\targs: args{\n\t\t\t\tctx: metainfo.WithValue(metainfo.WithPersistentValue(context.Background(), \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t\t\thandler: handler,\n\t\t\t},\n\t\t\twant: metainfo.WithPersistentValues(ctx, \"a\", \"aa\", \"b\", \"b\"),\n\t\t},\n\t\t{\n\t\t\tname: \"not triggered\",\n\t\t\targs: args{\n\t\t\t\tctx: metainfo.WithValue(metainfo.WithPersistentValue(ctx, \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t\t\thandler: handler,\n\t\t\t},\n\t\t\twant: metainfo.WithValue(metainfo.WithPersistentValue(ctx, \"a\", \"aa\"), \"b\", \"bb\"),\n\t\t},\n\t}\n\tfor _, tt := range tests {\n\t\tt.Run(tt.name, func(t *testing.T) {\n\t\t\tif got := RecoverCtxOnDemands(tt.args.ctx, tt.args.handler); got != nil {\n\t\t\t\tif v := got.Value(CtxKeyTest1); v == nil {\n\t\t\t\t\tt.Errorf(\"not got CtxKeyTest1\")\n\t\t\t\t}\n\t\t\t\ta, _ := metainfo.GetPersistentValue(got, \"a\")\n\t\t\t\tae, _ := metainfo.GetPersistentValue(tt.want, \"a\")\n\t\t\t\tif a != ae {\n\t\t\t\t\tt.Errorf(\"CurSession() = %v, want %v\", a, ae)\n\t\t\t\t}\n\t\t\t\tb, _ := metainfo.GetPersistentValue(got, \"b\")\n\t\t\t\tbe, _ := metainfo.GetPersistentValue(tt.want, \"b\")\n\t\t\t\tif b != be {\n\t\t\t\t\tt.Errorf(\"CurSession() = %v, want %v\", b, be)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tt.Fatal(\"no got\")\n\t\t\t}\n\t\t})\n\t}\n}","Signature":"func TestRecoverCtxOndemands(t *testing.T)","FunctionCalls":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","File":"backup/metainfo_test.go","Line":41,"StartOffset":1030,"EndOffset":1039},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","File":"backup/metainfo_test.go","Line":41,"StartOffset":1049,"EndOffset":1069},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","File":"backup/metainfo_test.go","Line":67,"StartOffset":1623,"EndOffset":1632},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","File":"backup/metainfo_test.go","Line":67,"StartOffset":1642,"EndOffset":1661},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","File":"backup/metainfo_test.go","Line":83,"StartOffset":2143,"EndOffset":2162},{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","File":"backup/metainfo_test.go","Line":87,"StartOffset":2318,"EndOffset":2336}],"Types":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","File":"backup/metainfo_test.go","Line":43,"StartOffset":1109,"EndOffset":1122},{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","File":"backup/metainfo_test.go","Line":61,"StartOffset":1528,"EndOffset":1532}],"GlobalVars":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","File":"backup/metainfo_test.go","Line":40,"StartOffset":1011,"EndOffset":1022}]}},"Types":{"BackupHandler":{"Exported":true,"TypeKind":"typedef","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","File":"backup/metainfo.go","Line":27,"StartOffset":800,"EndOffset":885,"Content":"// BackupHandler is used to decide and recover prev context to cur context\ntype BackupHandler func(prev, cur context.Context) (ctx context.Context, backup bool)"},"CtxKeyTestType":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTestType","File":"backup/metainfo_test.go","Line":35,"StartOffset":856,"EndOffset":884,"Content":"type CtxKeyTestType struct{}"},"Options":{"Exported":true,"TypeKind":"struct","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","File":"backup/metainfo.go","Line":30,"StartOffset":898,"EndOffset":963,"Content":"// Options\ntype Options struct {\n\tEnable bool\n\tlocalsession.ManagerOptions\n}","InlineStruct":[{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","File":"backup/metainfo.go","Line":32,"StartOffset":934,"EndOffset":961}]}},"Vars":{"CtxKeyTest1":{"IsExported":true,"IsConst":false,"IsPointer":false,"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","File":"backup/metainfo_test.go","Line":37,"StartOffset":890,"EndOffset":916,"Type":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType"},"Content":"var CtxKeyTest1 backup.CtxKeyTestType"}}}},"Dependencies":{"github.com/bytedance/gopkg":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","github.com/cloudwego/runtimex":"github.com/cloudwego/runtimex@v0.1.1","github.com/davecgh/go-spew":"github.com/davecgh/go-spew@v1.1.0","github.com/modern-go/reflect2":"github.com/modern-go/reflect2@v1.0.2","github.com/pmezard/go-difflib":"github.com/pmezard/go-difflib@v1.0.0","github.com/stretchr/testify":"github.com/stretchr/testify@v1.7.0","golang.org/x/net":"golang.org/x/net@v0.0.0-20221014081412-f15817d10f9b","golang.org/x/text":"golang.org/x/text@v0.3.7","gopkg.in/yaml.v3":"gopkg.in/yaml.v3@v3.0.0-20200313102051-9f266ea9e77c"},"Files":{"../../../../../Library/Caches/go-build/82/82c49baef651a00e1ad23746fdae64f5320212275be6cba7762255b951c019a7-d":{"Path":"../../../../../Library/Caches/go-build/82/82c49baef651a00e1ad23746fdae64f5320212275be6cba7762255b951c019a7-d","Imports":[{"Path":"\"os\""},{"Path":"\"reflect\""},{"Path":"\"testing\""},{"Path":"\"testing/internal/testdeps\""},{"Alias":"_test","Path":"\"github.com/cloudwego/localsession\""}],"Package":"github.com/cloudwego/localsession.test"},"../../../../../Library/Caches/go-build/d5/d5836dbfe100333ed76b708e65390a160b80c1433a312f94a9c2ba23d005dbd6-d":{"Path":"../../../../../Library/Caches/go-build/d5/d5836dbfe100333ed76b708e65390a160b80c1433a312f94a9c2ba23d005dbd6-d","Imports":[{"Path":"\"os\""},{"Path":"\"reflect\""},{"Path":"\"testing\""},{"Path":"\"testing/internal/testdeps\""},{"Alias":"_test","Path":"\"github.com/cloudwego/localsession/backup\""}],"Package":"github.com/cloudwego/localsession/backup.test"},".github/ISSUE_TEMPLATE/bug_report.md":{"Path":".github/ISSUE_TEMPLATE/bug_report.md"},".github/ISSUE_TEMPLATE/feature_request.md":{"Path":".github/ISSUE_TEMPLATE/feature_request.md"},".github/PULL_REQUEST_TEMPLATE.md":{"Path":".github/PULL_REQUEST_TEMPLATE.md"},".github/workflows/release-check.yml":{"Path":".github/workflows/release-check.yml"},".github/workflows/tests.yml":{"Path":".github/workflows/tests.yml"},".gitignore":{"Path":".gitignore"},".golangci.yaml":{"Path":".golangci.yaml"},".licenserc.yaml":{"Path":".licenserc.yaml"},"CODE_OF_CONDUCT.md":{"Path":"CODE_OF_CONDUCT.md"},"CONTRIBUTING.md":{"Path":"CONTRIBUTING.md"},"LICENSE-APACHE":{"Path":"LICENSE-APACHE"},"README.md":{"Path":"README.md"},"_typos.toml":{"Path":"_typos.toml"},"api_test.go":{"Path":"api_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"fmt\""},{"Path":"\"math\""},{"Path":"\"os\""},{"Path":"\"runtime/pprof\""},{"Path":"\"sync\""},{"Path":"\"testing\""},{"Path":"\"time\""},{"Path":"\"github.com/stretchr/testify/require\""}],"Package":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]"},"backup/metainfo.go":{"Path":"backup/metainfo.go","Imports":[{"Path":"\"context\""},{"Path":"\"github.com/bytedance/gopkg/cloud/metainfo\""},{"Path":"\"github.com/cloudwego/localsession\""}],"Package":"github.com/cloudwego/localsession/backup"},"backup/metainfo_test.go":{"Path":"backup/metainfo_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"os\""},{"Path":"\"testing\""},{"Path":"\"github.com/bytedance/gopkg/cloud/metainfo\""}],"Package":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]"},"check_branch_name.sh":{"Path":"check_branch_name.sh"},"example_test.go":{"Path":"example_test.go","Imports":[{"Path":"\"context\""},{"Path":"\"runtime/pprof\""},{"Path":"\"sync\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]"},"gls.go":{"Path":"gls.go","Imports":[{"Path":"\"fmt\""},{"Path":"\"os\""},{"Path":"\"strconv\""},{"Path":"\"strings\""},{"Path":"\"sync\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"go.mod":{"Path":"go.mod"},"go.sum":{"Path":"go.sum"},"manager.go":{"Path":"manager.go","Imports":[{"Path":"\"sync\""},{"Path":"\"sync/atomic\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"session.go":{"Path":"session.go","Imports":[{"Path":"\"context\""},{"Path":"\"sync\""},{"Path":"\"sync/atomic\""},{"Path":"\"time\""}],"Package":"github.com/cloudwego/localsession"},"stubs.go":{"Path":"stubs.go","Imports":[{"Path":"\"strconv\""},{"Alias":"_","Path":"\"unsafe\""},{"Path":"\"github.com/cloudwego/runtimex\""}],"Package":"github.com/cloudwego/localsession"}}}},"Graph":{"?#int":{"ModPath":"","PkgPath":"","Name":"int","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap"}]},"?#untyped int":{"ModPath":"","PkgPath":"","Name":"untyped int","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N"}]},"?#untyped string":{"ModPath":"","PkgPath":"","Name":"untyped string","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY"}]},"?github.com/cloudwego/localsession#Session.Get":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":19}]},"?github.com/cloudwego/localsession#Session.IsValid":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":45},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":42}]},"?github.com/cloudwego/localsession#Session.WithValue":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":28},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":24},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":25}]},"?github.com/cloudwego/localsession#SessionCtx":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue"}]},"?github.com/cloudwego/localsession#SessionManager":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj"}]},"?github.com/cloudwego/localsession#SessionMap":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue"}]},"?github.com/cloudwego/localsession#SessionMap.WithValue":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":13}]},"?github.com/cloudwego/localsession#shard":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load"}]},"?github.com/cloudwego/localsession#stat":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String"}]},"?github.com/cloudwego/localsession/backup#CtxKeyTestType":{"ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1"}]},"?sync#Once":{"ModPath":"","PkgPath":"sync","Name":"Once","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce"}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#CountPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":22}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#GetAllPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":25},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":25}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#GetPersistentValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":48}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#RangePersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":30},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":30}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithPersistentValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":28}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithPersistentValues":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":43}]},"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b?github.com/bytedance/gopkg/cloud/metainfo#WithValue":{"ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":28}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ASSERT":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkGLS_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":12},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkGLS_Set":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":13},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkLoops":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkLoops","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionCtx_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionCtx_WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionManager_BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionManager_CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionMap_Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BenchmarkSessionMap_WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#DefaultManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":19}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ExampleSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":20},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":33},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":101},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":22},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":28},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":45}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ExampleSessionCtx_EnableImplicitlyTransmitAsync":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ASSERT","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":35},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GetCurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetCurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":22}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Go":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":20},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":17}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#GoSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":33},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":29},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":30}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#InitDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#ManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#N":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"N","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionCtxWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","Line":8}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","Line":3}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#NewSessionMapWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Pprof_Label_Session_ID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SESSION_CONFIG_KEY":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionCtx_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_Get","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionMap_WithValue","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.Get","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.IsValid","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#Session.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session.WithValue","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","Line":2}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionCtx.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionCtx","Line":2},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Line":15},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":6},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Close","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":8},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":10},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.Options","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":9},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionManager.startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.startGC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":3}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#SessionMap.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionMap.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestMain":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestMain","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestRace":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRace","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":13},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":15}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestRealBizGLS":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestResetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":10},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"DefaultManagerOptions","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Line":18}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":17},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":19},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":20},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":30},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":42},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":98},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":19},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":25},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":42}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionManager_GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":11},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":21},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Go","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":18},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":29},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":97},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":18},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Line":24},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":41}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestSessionTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMapWithTimeout","Line":3},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#TestTransparentTransmitAsync":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionMap","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":17},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":31},{"Kind":"Dependency","ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Line":32},{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ManagerOptions","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Line":42}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":31},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx","Line":101},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":35},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":13},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":97},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":98},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GoSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#checkEnvOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"checkEnvOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SESSION_CONFIG_KEY","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#clearSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.UnbindSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultManagerObj":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerObj","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"InitDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"GetDefaultManager","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultManagerOnce":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultManagerOnce","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"sync","Name":"Once"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":42},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#defaultShardCap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#emitLoops":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionCtx","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":10}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#getPproLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#getSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.GetSession","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#goID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"emitLoops","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#labelMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#mustCurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"mustCurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"CurSession","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Get","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"ExampleSessionCtx_EnableImplicitlyTransmitAsync","Line":27},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkGLS_Set","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":18},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"BenchmarkSessionManager_CurSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":19}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#newShard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionID","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"defaultShardCap","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#setPprofLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"clearSessionID","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"newShard","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"NewSessionManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Delete","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Load","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#shard.Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"shard.Store","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestRealBizGLS","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat.String":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.String","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#stat.Update":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"stat.Update","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession","Name":"stat"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]#transmitSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"transmitSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"setPprofLabel","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"labelMap","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"Pprof_Label_Session_ID","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"SessionManager.BindSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#CurSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#DefaultManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#GetDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Go":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#GoSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Go","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#InitDefaultManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#ManagerOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionCtxWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":8}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#NewSessionMapWithTimeout":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Pprof_Label_Session_ID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SESSION_CONFIG_KEY":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"untyped string"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.Get","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Type":"FUNC","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":11}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#Session.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.WithValue","Type":"FUNC"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":8}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtxWithTimeout","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":12}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionCtx.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager","Type":"TYPE","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.BindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.Close":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Close","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.GC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session.IsValid","Line":11},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Line":7}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.GetSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":10},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.Options","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":9},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionManager.startGC":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.startGC","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GC","Line":7},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":14}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMap"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout"}],"Implements":[{"Kind":"Implement","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Disable":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Disable","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionMapWithTimeout","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Export":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Export","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.Get":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.Get","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.IsValid":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.IsValid","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#SessionMap.WithValue":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap.WithValue","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionMap"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#UnbindSession":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GoSession","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#checkEnvOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"checkEnvOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SESSION_CONFIG_KEY","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#clearSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":9}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerObj":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerObj","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":5},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultManagerOnce":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultManagerOnce","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"sync","Name":"Once"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#defaultShardCap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"","Name":"int"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#getPproLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#getSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":5}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":10}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#goID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#labelMap":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":8},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#newShard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"defaultShardCap","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#setPprofLabel":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"clearSessionID","Line":14},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Line":16}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard","Type":"TYPE","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"newShard"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionManager","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Delete":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Delete","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":5}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Load":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Load","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.GetSession","Line":2},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.UnbindSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#shard.Store":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard.Store","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Session"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"shard"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession#transmitSessionID":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"transmitSessionID","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionID"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"getPproLabel","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"setPprofLabel","Line":16},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"labelMap","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"Pprof_Label_Session_ID","Line":9}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionManager.BindSession","Line":6}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#BackupCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":4}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#BackupHandler":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#ClearCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"ClearCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#CtxKeyTest1":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","Type":"VAR","Dependencies":[{"Kind":"Dependency","ModPath":"","PkgPath":"github.com/cloudwego/localsession/backup","Name":"CtxKeyTestType"}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#CtxKeyTestType":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTestType","Type":"TYPE"},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#DefaultOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Line":3},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","Line":1}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#Init":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":2}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Options","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":1}],"Inherits":[{"Kind":"Inherit","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#RecoverCtxOnDemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Line":22},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Line":25},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Line":30},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":8}],"References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":44}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#TestMain":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestMain","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"DefaultOptions","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"Init","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#TestRecoverCtxOndemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupCtx","Line":2},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":2},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithValue","Line":28},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValue","Line":28},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"RecoverCtxOnDemands","Line":44},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetPersistentValue","Line":48},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"BackupHandler","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","Line":22},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"CtxKeyTest1","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]#args":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"args","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup [github.com/cloudwego/localsession/backup.test]","Name":"TestRecoverCtxOndemands","Line":22}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#BackupCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"GetDefaultManager","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"BindSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"NewSessionCtx","Line":4}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#BackupHandler":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands"}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#ClearCtx":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"ClearCtx","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"UnbindSession","Line":1}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#DefaultOptions":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"DefaultManagerOptions","Line":3}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#Init":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"InitDefaultManager","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#Options":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Options","Type":"TYPE","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"DefaultOptions"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"Init"}],"Inherits":[{"Kind":"Inherit","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"ManagerOptions","Line":2}]},"github.com/cloudwego/localsession?github.com/cloudwego/localsession/backup#RecoverCtxOnDemands":{"ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"RecoverCtxOnDemands","Type":"FUNC","Dependencies":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession/backup","Name":"BackupHandler"},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"CurSession","Line":4},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"CountPersistentValues","Line":22},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"GetAllPersistentValues","Line":25},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"RangePersistentValues","Line":30},{"Kind":"Dependency","ModPath":"github.com/bytedance/gopkg@v0.0.0-20230728082804-614d0af6619b","PkgPath":"github.com/bytedance/gopkg/cloud/metainfo","Name":"WithPersistentValues","Line":43},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx.Export","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"SessionCtx","Line":8}]},"github.com/cloudwego/runtimex@v0.1.1?github.com/cloudwego/runtimex#GID":{"ModPath":"github.com/cloudwego/runtimex@v0.1.1","PkgPath":"github.com/cloudwego/runtimex","Name":"GID","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession","Name":"goID","Line":1},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"goID","Line":1}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#Equal":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Equal","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":23},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestResetDefaultManager","Line":12},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":19},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionManager_GC","Line":21},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":20}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#False":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"False","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionTimeout","Line":6},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionMap","Line":41},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":42}]},"github.com/stretchr/testify@v1.7.0?github.com/stretchr/testify/require#Nil":{"ModPath":"github.com/stretchr/testify@v1.7.0","PkgPath":"github.com/stretchr/testify/require","Name":"Nil","Type":"UNKNOWN","References":[{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestTransparentTransmitAsync","Line":32},{"Kind":"Dependency","ModPath":"github.com/cloudwego/localsession","PkgPath":"github.com/cloudwego/localsession [github.com/cloudwego/localsession.test]","Name":"TestSessionCtx","Line":27}]}}} \ No newline at end of file diff --git a/testdata/java/5_gradle_project/app/build.gradle b/testdata/java/5_gradle_project/app/build.gradle new file mode 100644 index 00000000..cafd15d0 --- /dev/null +++ b/testdata/java/5_gradle_project/app/build.gradle @@ -0,0 +1,10 @@ +plugins { + id 'java' +} + +group = 'com.example' +version = '1.0.0' + +dependencies { + implementation project(':core') +} diff --git a/testdata/java/5_gradle_project/app/src/main/java/com/example/app/App.java b/testdata/java/5_gradle_project/app/src/main/java/com/example/app/App.java new file mode 100644 index 00000000..182a7289 --- /dev/null +++ b/testdata/java/5_gradle_project/app/src/main/java/com/example/app/App.java @@ -0,0 +1,10 @@ +package com.example.app; + +import com.example.core.Core; + +public class App { + public static void main(String[] args) { + Core core = new Core(); + System.out.println(core.greet("World")); + } +} diff --git a/testdata/java/5_gradle_project/build.gradle b/testdata/java/5_gradle_project/build.gradle new file mode 100644 index 00000000..4ce89b4f --- /dev/null +++ b/testdata/java/5_gradle_project/build.gradle @@ -0,0 +1,2 @@ +group = 'com.example' +version = '1.0.0' diff --git a/testdata/java/5_gradle_project/core/build.gradle b/testdata/java/5_gradle_project/core/build.gradle new file mode 100644 index 00000000..198faec3 --- /dev/null +++ b/testdata/java/5_gradle_project/core/build.gradle @@ -0,0 +1,6 @@ +plugins { + id 'java-library' +} + +group = 'com.example' +version = '1.0.0' diff --git a/testdata/java/5_gradle_project/core/src/main/java/com/example/core/Core.java b/testdata/java/5_gradle_project/core/src/main/java/com/example/core/Core.java new file mode 100644 index 00000000..38e063e1 --- /dev/null +++ b/testdata/java/5_gradle_project/core/src/main/java/com/example/core/Core.java @@ -0,0 +1,7 @@ +package com.example.core; + +public class Core { + public String greet(String name) { + return "Hello, " + name + "!"; + } +} diff --git a/testdata/java/5_gradle_project/settings.gradle b/testdata/java/5_gradle_project/settings.gradle new file mode 100644 index 00000000..9069371a --- /dev/null +++ b/testdata/java/5_gradle_project/settings.gradle @@ -0,0 +1,2 @@ +rootProject.name = 'my-gradle-app' +include ':app', ':core'