diff --git a/docs/plans/2026-03-14-dtp-parser-design.md b/docs/plans/2026-03-14-dtp-parser-design.md new file mode 100644 index 0000000..dc439a0 --- /dev/null +++ b/docs/plans/2026-03-14-dtp-parser-design.md @@ -0,0 +1,75 @@ +# dotTrace DTP Parser Design + +**Goal:** Build a repository-local tool that starts from a raw dotTrace `.dtp` snapshot family and emits machine-readable JSON call-tree data suitable for LLM-driven hotspot analysis. + +**Context** + +The target snapshot format is JetBrains dotTrace multi-file storage: + +- `snapshot.dtp` is the index/manifest. +- `snapshot.dtp.0000`, `.0001`, and related files hold the storage sections. +- `snapshot.dtp.States` holds UI state and is not sufficient for call-tree analysis. + +The internal binary layout is not publicly specified. A direct handwritten decoder would be brittle and expensive to maintain. The machine already has dotTrace installed, and the shipped JetBrains assemblies expose snapshot storage, metadata, and performance call-tree readers. The design therefore uses dotTrace’s local runtime libraries as the authoritative decoder while still starting from the raw `.dtp` files. + +**Architecture** + +Two layers: + +1. A small .NET helper opens the raw snapshot, reads the performance DFS call-tree and node payload sections, resolves function names through the profiler metadata section, and emits JSON. +2. A Python CLI is the user-facing entrypoint. It validates input, builds or reuses the helper, runs it, and writes JSON to stdout or a file. + +This keeps the user workflow Python-first while using the only reliable decoder available for the undocumented snapshot format. + +**Output schema** + +The JSON should support both direct consumption and downstream summarization: + +- `snapshot`: source path, thread count, node count, payload type. +- `thread_roots`: thread root metadata. +- `call_tree`: synthetic root with recursive children. +- `hotspots`: flat top lists for inclusive and exclusive time. + +Each node should include: + +- `id`: stable offset-based identifier. +- `name`: resolved method or synthetic node name. +- `kind`: `root`, `thread`, `method`, or `special`. +- `inclusive_time` +- `exclusive_time` +- `call_count` +- `thread_name` when relevant +- `children` + +**Resolution strategy** + +Method names are resolved from the snapshot’s metadata section: + +- Use the snapshot’s FUID-to-metadata converter. +- Map `FunctionUID` to `FunctionId`. +- Resolve `MetadataId`. +- Read function and class data with `MetadataSectionHelpers`. + +Synthetic and special frames fall back to explicit labels instead of opaque numeric values where possible. + +**Error handling** + +The tool should fail loudly for the cases that matter: + +- Missing dotTrace assemblies. +- Unsupported snapshot layout. +- Missing metadata sections. +- Helper build or execution failure. + +Errors should name the failing stage so the Python wrapper can surface actionable messages. + +**Testing** + +Use the checked-in sample snapshot at `snapshots/js-ordered-consume.dtp` for an end-to-end test: + +- JSON parses successfully. +- The root contains thread children. +- Hotspot lists are populated. +- At least one non-special method name is resolved. + +This is enough to verify the extraction path without freezing the entire output. diff --git a/docs/plans/2026-03-14-dtp-parser.md b/docs/plans/2026-03-14-dtp-parser.md new file mode 100644 index 0000000..7a0e0de --- /dev/null +++ b/docs/plans/2026-03-14-dtp-parser.md @@ -0,0 +1,186 @@ +# dotTrace DTP Parser Implementation Plan + +> **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. + +**Goal:** Add a Python-first tool that reads a raw dotTrace `.dtp` snapshot family and emits JSON call-tree and hotspot data for LLM analysis. + +**Architecture:** A small .NET helper uses JetBrains’ local dotTrace assemblies to decode snapshot storage, performance call-tree nodes, payloads, and metadata. A Python wrapper validates input, builds the helper if needed, runs it, and writes the resulting JSON. + +**Tech Stack:** Python 3 standard library, .NET 10 console app, local JetBrains dotTrace assemblies, `unittest` + +--- + +### Task 1: Add the failing end-to-end test + +**Files:** +- Create: `tools/tests/test_dtp_parser.py` + +**Step 1: Write the failing test** + +Write a `unittest` test that runs: + +```bash +python3 tools/dtp_parse.py snapshots/js-ordered-consume.dtp --stdout +``` + +and asserts: + +- exit code is `0` +- stdout is valid JSON +- `call_tree.children` is non-empty +- `hotspots.inclusive` is non-empty +- at least one node name is not marked as special + +**Step 2: Run test to verify it fails** + +Run: `python3 -m unittest tools.tests.test_dtp_parser -v` + +Expected: FAIL because `tools/dtp_parse.py` does not exist yet. + +**Step 3: Commit** + +```bash +git add tools/tests/test_dtp_parser.py +git commit -m "test: add dtp parser end-to-end expectation" +``` + +### Task 2: Implement the .NET snapshot extractor + +**Files:** +- Create: `tools/DtpSnapshotExtractor/DtpSnapshotExtractor.csproj` +- Create: `tools/DtpSnapshotExtractor/Program.cs` + +**Step 1: Write the minimal implementation** + +Implement a console app that: + +- accepts snapshot path and optional output path +- opens the snapshot through JetBrains snapshot storage +- constructs performance call-tree and payload readers +- resolves method names via metadata sections +- builds a JSON object with root tree, thread roots, and hotspot lists +- writes JSON to stdout or output file + +**Step 2: Run helper directly** + +Run: + +```bash +dotnet run --project tools/DtpSnapshotExtractor -- snapshots/js-ordered-consume.dtp +``` + +Expected: JSON is emitted successfully. + +**Step 3: Commit** + +```bash +git add tools/DtpSnapshotExtractor/DtpSnapshotExtractor.csproj tools/DtpSnapshotExtractor/Program.cs +git commit -m "feat: add dottrace snapshot extractor helper" +``` + +### Task 3: Implement the Python entrypoint + +**Files:** +- Create: `tools/dtp_parse.py` + +**Step 1: Write the minimal implementation** + +Implement a CLI that: + +- accepts snapshot path +- supports `--out` and `--stdout` +- checks that dotTrace assemblies exist in the local install +- runs `dotnet run --project tools/DtpSnapshotExtractor -- ` +- forwards JSON output + +**Step 2: Run the wrapper** + +Run: + +```bash +python3 tools/dtp_parse.py snapshots/js-ordered-consume.dtp --stdout +``` + +Expected: JSON is emitted successfully. + +**Step 3: Commit** + +```bash +git add tools/dtp_parse.py +git commit -m "feat: add python dtp parsing entrypoint" +``` + +### Task 4: Make the test pass and tighten output + +**Files:** +- Modify: `tools/DtpSnapshotExtractor/Program.cs` +- Modify: `tools/dtp_parse.py` +- Modify: `tools/tests/test_dtp_parser.py` + +**Step 1: Run the failing test** + +Run: `python3 -m unittest tools.tests.test_dtp_parser -v` + +Expected: FAIL with an output-schema or execution issue. + +**Step 2: Fix the minimal failing behavior** + +Adjust: + +- special-node labeling +- JSON schema stability +- helper invocation details +- fallback behavior for unresolved metadata + +**Step 3: Re-run the test** + +Run: `python3 -m unittest tools.tests.test_dtp_parser -v` + +Expected: PASS + +**Step 4: Commit** + +```bash +git add tools/DtpSnapshotExtractor/Program.cs tools/dtp_parse.py tools/tests/test_dtp_parser.py +git commit -m "test: verify dtp parser output" +``` + +### Task 5: Final verification + +**Files:** +- Modify: none unless fixes are required + +**Step 1: Run end-to-end extraction** + +Run: + +```bash +python3 tools/dtp_parse.py snapshots/js-ordered-consume.dtp --out /tmp/js-ordered-consume-calltree.json +``` + +Expected: JSON file is created. + +**Step 2: Run test suite** + +Run: + +```bash +python3 -m unittest tools.tests.test_dtp_parser -v +``` + +Expected: PASS + +**Step 3: Inspect a hotspot sample** + +Confirm the JSON contains: + +- resolved method names +- inclusive and exclusive hotspot lists +- nested thread call trees + +**Step 4: Commit** + +```bash +git add docs/plans/2026-03-14-dtp-parser-design.md docs/plans/2026-03-14-dtp-parser.md +git commit -m "docs: add dtp parser design and plan" +``` diff --git a/dottrace.md b/dottrace.md index 3c74a64..e64995d 100644 --- a/dottrace.md +++ b/dottrace.md @@ -196,6 +196,83 @@ Open `.dtp` / `.dtt` snapshot files in: open /Users/dohertj2/Applications/dotTrace.app --args ./snapshots/nats-sampling.dtp ``` +## Parsing Raw `.dtp` Snapshots To JSON + +The repository includes a Python-first parser for raw dotTrace sampling and tracing snapshots: + +- Python entrypoint: [tools/dtp_parse.py](/Users/dohertj2/Desktop/natsdotnet/tools/dtp_parse.py) +- .NET helper: [tools/DtpSnapshotExtractor/Program.cs](/Users/dohertj2/Desktop/natsdotnet/tools/DtpSnapshotExtractor/Program.cs) + +The parser starts from the raw `.dtp` snapshot family and emits machine-readable JSON for call-tree and hotspot analysis. It uses the locally installed dotTrace assemblies to decode the snapshot format. + +### Prerequisites + +- `python3` +- `.NET 10 SDK` +- dotTrace installed at `/Users/dohertj2/Applications/dotTrace.app` + +If dotTrace is installed elsewhere, set `DOTTRACE_APP_DIR` to the `Contents/DotFiles` directory: + +```bash +export DOTTRACE_APP_DIR="/path/to/dotTrace.app/Contents/DotFiles" +``` + +### Print JSON to stdout + +```bash +python3 tools/dtp_parse.py snapshots/js-ordered-consume.dtp --stdout +``` + +### Write JSON to a file + +```bash +python3 tools/dtp_parse.py snapshots/js-ordered-consume.dtp \ + --out /tmp/js-ordered-consume-calltree.json +``` + +### Output shape + +The generated JSON contains: + +- `snapshot` — source path, payload type, thread count, node count +- `threadRoots` — top-level thread roots with inclusive time +- `callTree` — nested call tree rooted at a synthetic `` +- `hotspots` — flat `inclusive` and `exclusive` method lists + +Hotspot entries are method-first. Synthetic frames such as thread roots are excluded from the hotspot lists so the output is easier to feed into an LLM for slowdown analysis. + +### Typical analysis workflow + +1. Capture a snapshot with `dottrace`. +2. Convert the raw `.dtp` snapshot to JSON: + +```bash +python3 tools/dtp_parse.py snapshots/nats-sampling.dtp \ + --out /tmp/nats-sampling-calltree.json +``` + +3. Inspect the top hotspots: + +```bash +python3 - <<'PY' +import json +with open('/tmp/nats-sampling-calltree.json') as f: + data = json.load(f) +print('Top inclusive:', data['hotspots']['inclusive'][0]['name']) +print('Top exclusive:', data['hotspots']['exclusive'][0]['name']) +PY +``` + +4. Feed the JSON into downstream tooling or an LLM to walk the call tree and identify expensive paths. + +### Verification + +Run the parser test with: + +```bash +python3 -m unittest tools.tests.test_dtp_parser -v +``` + ## Exit Codes | Code | Meaning | @@ -212,3 +289,4 @@ open /Users/dohertj2/Applications/dotTrace.app --args ./snapshots/nats-sampling. ```bash mkdir -p snapshots ``` +- The parser currently targets raw `.dtp` snapshots. Timeline `.dtt` snapshots are still intended for the GUI viewer. diff --git a/snapshots/js-ordered-consume2.dtp b/snapshots/js-ordered-consume2.dtp new file mode 100644 index 0000000..c0b08be Binary files /dev/null and b/snapshots/js-ordered-consume2.dtp differ diff --git a/snapshots/js-ordered-consume2.dtp.0000 b/snapshots/js-ordered-consume2.dtp.0000 new file mode 100644 index 0000000..cab8e32 Binary files /dev/null and b/snapshots/js-ordered-consume2.dtp.0000 differ diff --git a/snapshots/js-ordered-consume2.dtp.0001 b/snapshots/js-ordered-consume2.dtp.0001 new file mode 100644 index 0000000..dee4bd5 Binary files /dev/null and b/snapshots/js-ordered-consume2.dtp.0001 differ diff --git a/snapshots/js-ordered-consume2.dtp.0002 b/snapshots/js-ordered-consume2.dtp.0002 new file mode 100644 index 0000000..c5bff3a Binary files /dev/null and b/snapshots/js-ordered-consume2.dtp.0002 differ diff --git a/snapshots/js-ordered-consume2.dtp.0003 b/snapshots/js-ordered-consume2.dtp.0003 new file mode 100644 index 0000000..e083ca1 Binary files /dev/null and b/snapshots/js-ordered-consume2.dtp.0003 differ diff --git a/snapshots/js-ordered-consume3.dtp b/snapshots/js-ordered-consume3.dtp new file mode 100644 index 0000000..353fcdf Binary files /dev/null and b/snapshots/js-ordered-consume3.dtp differ diff --git a/snapshots/js-ordered-consume3.dtp.0000 b/snapshots/js-ordered-consume3.dtp.0000 new file mode 100644 index 0000000..487c325 Binary files /dev/null and b/snapshots/js-ordered-consume3.dtp.0000 differ diff --git a/snapshots/js-ordered-consume3.dtp.0001 b/snapshots/js-ordered-consume3.dtp.0001 new file mode 100644 index 0000000..a06e083 Binary files /dev/null and b/snapshots/js-ordered-consume3.dtp.0001 differ diff --git a/snapshots/js-ordered-consume3.dtp.0002 b/snapshots/js-ordered-consume3.dtp.0002 new file mode 100644 index 0000000..d6dbd45 Binary files /dev/null and b/snapshots/js-ordered-consume3.dtp.0002 differ diff --git a/snapshots/js-ordered-consume3.dtp.0003 b/snapshots/js-ordered-consume3.dtp.0003 new file mode 100644 index 0000000..accc542 Binary files /dev/null and b/snapshots/js-ordered-consume3.dtp.0003 differ diff --git a/snapshots/js-ordered-consume3.dtp.States b/snapshots/js-ordered-consume3.dtp.States new file mode 100644 index 0000000..7f7e7d0 Binary files /dev/null and b/snapshots/js-ordered-consume3.dtp.States differ diff --git a/src-docs-fixed.md b/src-docs-fixed.md index 93ec035..f087584 100644 --- a/src-docs-fixed.md +++ b/src-docs-fixed.md @@ -1,481 +1,11 @@ # Documentation Analysis Report Files Scanned: 273 -Files With Issues: 166 -Total Issues: 858 +Files With Issues: 36 +Total Issues: 48 ## Issues -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxConnections -MESSAGE: Property 'MaxConnections' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxSubscriptions -MESSAGE: Property 'MaxSubscriptions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DefaultPermissions -MESSAGE: Property 'DefaultPermissions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Service -MESSAGE: Property 'Service' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Stream -MESSAGE: Property 'Stream' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 39 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ServiceAccount -MESSAGE: Property 'ServiceAccount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 40 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ServiceSubject -MESSAGE: Property 'ServiceSubject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 41 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: StreamAccount -MESSAGE: Property 'StreamAccount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 42 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: StreamSubject -MESSAGE: Property 'StreamSubject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountConfig.cs -LINE: 43 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: To -MESSAGE: Property 'To' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountImportExport.cs -LINE: 18 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DetectCycle(Account from, Account to, HashSet? visited) -MESSAGE: Method 'DetectCycle(Account from, Account to, HashSet? visited)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountImportExport.cs -LINE: 18 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DetectCycle(Account from, Account to, HashSet? visited) -MESSAGE: Method 'DetectCycle(Account from, Account to, HashSet? visited)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountImportExport.cs -LINE: 18 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DetectCycle(Account from, Account to, HashSet? visited) -MESSAGE: Method 'DetectCycle(Account from, Account to, HashSet? visited)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountImportExport.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject) -MESSAGE: Method 'ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountImportExport.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject) -MESSAGE: Method 'ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AccountImportExport.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject) -MESSAGE: Method 'ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: AuthorizeAsync(ExternalAuthRequest request, CancellationToken ct) -MESSAGE: Method 'AuthorizeAsync(ExternalAuthRequest request, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Enabled -MESSAGE: Property 'Enabled' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Timeout -MESSAGE: Property 'Timeout' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Client -MESSAGE: Property 'Client' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Enabled -MESSAGE: Property 'Enabled' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 30 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: UsernamePrefix -MESSAGE: Property 'UsernamePrefix' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthExtensionOptions.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthResult.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Identity -MESSAGE: Property 'Identity' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthResult.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AccountName -MESSAGE: Property 'AccountName' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthResult.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Permissions -MESSAGE: Property 'Permissions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthResult.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Expiry -MESSAGE: Property 'Expiry' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthResult.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxJetStreamStreams -MESSAGE: Property 'MaxJetStreamStreams' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthResult.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: JetStreamTier -MESSAGE: Property 'JetStreamTier' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsAuthRequired -MESSAGE: Property 'IsAuthRequired' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NonceRequired -MESSAGE: Property 'NonceRequired' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build(NatsOptions options) -MESSAGE: Method 'Build(NatsOptions options)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 100 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Authenticate(ClientAuthContext context) -MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 148 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GenerateNonce() -MESSAGE: Method 'GenerateNonce()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 155 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ValidateMqttCredentials(string? configuredUsername, string? configuredPassword, string? providedUsername, string? providedPassword) -MESSAGE: Method 'ValidateMqttCredentials(string? configuredUsername, string? configuredPassword, string? providedUsername, string? providedPassword)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/AuthService.cs -LINE: 168 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: EncodeNonce(byte[] nonce) -MESSAGE: Method 'EncodeNonce(byte[] nonce)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build(Permissions? permissions) -MESSAGE: Method 'Build(Permissions? permissions)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 36 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ResponseTracker -MESSAGE: Property 'ResponseTracker' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsPublishAllowed(string subject) -MESSAGE: Method 'IsPublishAllowed(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 59 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsSubscribeAllowed(string subject, string? queue) -MESSAGE: Method 'IsSubscribeAllowed(string subject, string? queue)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 70 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsDeliveryAllowed(string subject) -MESSAGE: Method 'IsDeliveryAllowed(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 77 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 95 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build(SubjectPermission? permission) -MESSAGE: Method 'Build(SubjectPermission? permission)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 126 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsAllowed(string subject) -MESSAGE: Method 'IsAllowed(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 145 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsDenied(string subject) -MESSAGE: Method 'IsDenied(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 152 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsDeliveryAllowed(string subject) -MESSAGE: Method 'IsDeliveryAllowed(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ClientPermissions.cs -LINE: 160 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ExternalAuthCalloutAuthenticator.cs LINE: 12 CATEGORY: MissingDoc @@ -496,46 +26,6 @@ MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documen --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/IAuthenticator.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Authenticate(ClientAuthContext context) -MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/IAuthenticator.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Opts -MESSAGE: Property 'Opts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/IAuthenticator.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Nonce -MESSAGE: Property 'Nonce' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/IAuthenticator.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ClientCertificate -MESSAGE: Property 'ClientCertificate' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/AccountClaims.cs LINE: 102 CATEGORY: MissingDoc @@ -556,36 +46,6 @@ MESSAGE: Property 'Tier' is missing XML documentation --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/AccountResolver.cs -LINE: 20 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FetchAsync(string accountNkey) -MESSAGE: Method 'FetchAsync(string accountNkey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/AccountResolver.cs -LINE: 26 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StoreAsync(string accountNkey, string jwt) -MESSAGE: Method 'StoreAsync(string accountNkey, string jwt)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/AccountResolver.cs -LINE: 26 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StoreAsync(string accountNkey, string jwt) -MESSAGE: Method 'StoreAsync(string accountNkey, string jwt)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/JwtConnectionTypes.cs LINE: 18 CATEGORY: MissingDoc @@ -597,107 +57,7 @@ MESSAGE: Method 'Convert(IEnumerable? values)' is missing XML documentat --- FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsJwt(string token) -MESSAGE: Method 'IsJwt(string token)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 31 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(string token) -MESSAGE: Method 'Decode(string token)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 71 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DecodeUserClaims(string token) -MESSAGE: Method 'DecodeUserClaims(string token)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 91 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DecodeAccountClaims(string token) -MESSAGE: Method 'DecodeAccountClaims(string token)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 110 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Verify(string token, string publicNkey) -MESSAGE: Method 'Verify(string token, string publicNkey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 110 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Verify(string token, string publicNkey) -MESSAGE: Method 'Verify(string token, string publicNkey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 132 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: VerifyNonce(byte[] nonce, string signature, string publicNkey) -MESSAGE: Method 'VerifyNonce(byte[] nonce, string signature, string publicNkey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 132 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: VerifyNonce(byte[] nonce, string signature, string publicNkey) -MESSAGE: Method 'VerifyNonce(byte[] nonce, string signature, string publicNkey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 132 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: VerifyNonce(byte[] nonce, string signature, string publicNkey) -MESSAGE: Method 'VerifyNonce(byte[] nonce, string signature, string publicNkey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 153 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Base64UrlDecode(string input) -MESSAGE: Method 'Base64UrlDecode(string input)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 216 +LINE: 226 CATEGORY: MissingDoc SEVERITY: Error MEMBER: Property @@ -707,7 +67,7 @@ MESSAGE: Property 'Algorithm' is missing XML documentation --- FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/NatsJwt.cs -LINE: 219 +LINE: 230 CATEGORY: MissingDoc SEVERITY: Error MEMBER: Property @@ -746,246 +106,6 @@ MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documen --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Nkey -MESSAGE: Property 'Nkey' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Permissions -MESSAGE: Property 'Permissions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SigningKey -MESSAGE: Property 'SigningKey' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Issued -MESSAGE: Property 'Issued' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AllowedConnectionTypes -MESSAGE: Property 'AllowedConnectionTypes' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/NKeyUser.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ProxyRequired -MESSAGE: Property 'ProxyRequired' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 21 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: PermissionLruCache(int capacity) -MESSAGE: Constructor 'PermissionLruCache(int capacity)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 54 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryGet(string key, bool value) -MESSAGE: Method 'TryGet(string key, bool value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 54 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryGet(string key, bool value) -MESSAGE: Method 'TryGet(string key, bool value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Set(string key, bool value) -MESSAGE: Method 'Set(string key, bool value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Set(string key, bool value) -MESSAGE: Method 'Set(string key, bool value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 87 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryGetSub(string subject, bool value) -MESSAGE: Method 'TryGetSub(string subject, bool value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 87 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryGetSub(string subject, bool value) -MESSAGE: Method 'TryGetSub(string subject, bool value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 107 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetSub(string subject, bool allowed) -MESSAGE: Method 'SetSub(string subject, bool allowed)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 107 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetSub(string subject, bool allowed) -MESSAGE: Method 'SetSub(string subject, bool allowed)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/PermissionLruCache.cs -LINE: 119 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Count -MESSAGE: Property 'Count' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Publish -MESSAGE: Property 'Publish' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subscribe -MESSAGE: Property 'Subscribe' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Response -MESSAGE: Property 'Response' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Allow -MESSAGE: Property 'Allow' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Deny -MESSAGE: Property 'Deny' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxMsgs -MESSAGE: Property 'MaxMsgs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Permissions.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Expires -MESSAGE: Property 'Expires' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ProxyAuthenticator.cs LINE: 5 CATEGORY: MissingDoc @@ -996,166 +116,6 @@ MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documen --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ResponseTracker.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ResponseTracker(int maxMsgs, TimeSpan expires) -MESSAGE: Constructor 'ResponseTracker(int maxMsgs, TimeSpan expires)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ResponseTracker.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Count -MESSAGE: Property 'Count' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ResponseTracker.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RegisterReply(string replySubject) -MESSAGE: Method 'RegisterReply(string replySubject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ResponseTracker.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsReplyAllowed(string subject) -MESSAGE: Method 'IsReplyAllowed(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ResponseTracker.cs -LINE: 58 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Prune() -MESSAGE: Method 'Prune()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ServiceLatencyTracker(int maxSamples) -MESSAGE: Constructor 'ServiceLatencyTracker(int maxSamples)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 20 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordLatency(double latencyMs) -MESSAGE: Method 'RecordLatency(double latencyMs)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetP50() -MESSAGE: Method 'GetP50()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetP90() -MESSAGE: Method 'GetP90()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetP99() -MESSAGE: Method 'GetP99()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetPercentile(double percentile) -MESSAGE: Method 'GetPercentile(double percentile)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 64 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TotalRequests -MESSAGE: Property 'TotalRequests' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 69 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AverageLatencyMs -MESSAGE: Property 'AverageLatencyMs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 74 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MinLatencyMs -MESSAGE: Property 'MinLatencyMs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 83 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxLatencyMs -MESSAGE: Property 'MaxLatencyMs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/ServiceLatencyTracker.cs -LINE: 92 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SampleCount -MESSAGE: Property 'SampleCount' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/SimpleUserPasswordAuthenticator.cs LINE: 17 CATEGORY: MissingDoc @@ -1176,56 +136,6 @@ MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documen --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/TlsMapAuthenticator.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: TlsMapAuthenticator(IReadOnlyList users) -MESSAGE: Constructor 'TlsMapAuthenticator(IReadOnlyList users)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/TlsMapAuthenticator.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Authenticate(ClientAuthContext context) -MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/TlsMapAuthenticator.cs -LINE: 68 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetTlsAuthDcs(X500DistinguishedName dn) -MESSAGE: Method 'GetTlsAuthDcs(X500DistinguishedName dn)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/TlsMapAuthenticator.cs -LINE: 85 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DnsAltNameLabels(string dnsAltName) -MESSAGE: Method 'DnsAltNameLabels(string dnsAltName)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/TlsMapAuthenticator.cs -LINE: 93 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DnsAltNameMatches(string[] dnsAltNameLabels, IReadOnlyList urls) -MESSAGE: Method 'DnsAltNameMatches(string[] dnsAltNameLabels, IReadOnlyList urls)' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/TokenAuthenticator.cs LINE: 10 CATEGORY: MissingDoc @@ -1246,76 +156,6 @@ MESSAGE: Method 'Authenticate(ClientAuthContext context)' is missing XML documen --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Username -MESSAGE: Property 'Username' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Password -MESSAGE: Property 'Password' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Permissions -MESSAGE: Property 'Permissions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ConnectionDeadline -MESSAGE: Property 'ConnectionDeadline' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AllowedConnectionTypes -MESSAGE: Property 'AllowedConnectionTypes' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/User.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ProxyRequired -MESSAGE: Property 'ProxyRequired' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/UserPasswordAuthenticator.cs LINE: 16 CATEGORY: MissingDoc @@ -1346,36 +186,6 @@ MESSAGE: Method 'ToReasonString(ClientClosedReason reason)' is missing XML docum --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientFlags.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetFlag(ClientFlags flag) -MESSAGE: Method 'SetFlag(ClientFlags flag)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientFlags.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ClearFlag(ClientFlags flag) -MESSAGE: Method 'ClearFlag(ClientFlags flag)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientFlags.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HasFlag(ClientFlags flag) -MESSAGE: Method 'HasFlag(ClientFlags flag)' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientKind.cs LINE: 20 CATEGORY: MissingDoc @@ -1386,366 +196,6 @@ MESSAGE: Method 'IsInternal(ClientKind kind)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TraceMsgDelivery(string subject, string destination, int payloadSize) -MESSAGE: Method 'TraceMsgDelivery(string subject, string destination, int payloadSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TraceMsgDelivery(string subject, string destination, int payloadSize) -MESSAGE: Method 'TraceMsgDelivery(string subject, string destination, int payloadSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TraceMsgDelivery(string subject, string destination, int payloadSize) -MESSAGE: Method 'TraceMsgDelivery(string subject, string destination, int payloadSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldEcho(string publisherClientId, string subscriberClientId) -MESSAGE: Method 'ShouldEcho(string publisherClientId, string subscriberClientId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldEcho(string publisherClientId, string subscriberClientId) -MESSAGE: Method 'ShouldEcho(string publisherClientId, string subscriberClientId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 79 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 80 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Destination -MESSAGE: Property 'Destination' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 81 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: PayloadSize -MESSAGE: Property 'PayloadSize' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/ClientTraceInfo.cs -LINE: 82 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TimestampUtc -MESSAGE: Property 'TimestampUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Name -MESSAGE: Property 'Name' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Host -MESSAGE: Property 'Host' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Port -MESSAGE: Property 'Port' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: PoolSize -MESSAGE: Property 'PoolSize' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Routes -MESSAGE: Property 'Routes' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Accounts -MESSAGE: Property 'Accounts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Compression -MESSAGE: Property 'Compression' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ClusterOptions.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: WriteDeadline -MESSAGE: Property 'WriteDeadline' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ProcessConfigFile(string filePath) -MESSAGE: Method 'ProcessConfigFile(string filePath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ProcessConfig(string configText) -MESSAGE: Method 'ProcessConfig(string configText)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 45 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ApplyConfig(Dictionary config, NatsOptions opts) -MESSAGE: Method 'ApplyConfig(Dictionary config, NatsOptions opts)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 45 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ApplyConfig(Dictionary config, NatsOptions opts) -MESSAGE: Method 'ApplyConfig(Dictionary config, NatsOptions opts)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 426 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseDuration(object? value) -MESSAGE: Method 'ParseDuration(object? value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 1880 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Errors -MESSAGE: Property 'Errors' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 1881 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Warnings -MESSAGE: Property 'Warnings' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 1890 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SourceLocation -MESSAGE: Property 'SourceLocation' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigProcessor.cs -LINE: 1900 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Field -MESSAGE: Property 'Field' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigReloader.cs -LINE: 813 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors) -MESSAGE: Constructor 'ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigReloader.cs -LINE: 813 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors) -MESSAGE: Constructor 'ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigReloader.cs -LINE: 813 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors) -MESSAGE: Constructor 'ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigReloader.cs -LINE: 813 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors) -MESSAGE: Constructor 'ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/ConfigReloader.cs -LINE: 813 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors) -MESSAGE: Constructor 'ConfigReloadResult(bool Unchanged, NatsOptions? NewOptions, string? NewDigest, List? Changes, List? Errors)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/IConfigChange.cs -LINE: 49 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Name -MESSAGE: Property 'Name' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/IConfigChange.cs -LINE: 50 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsLoggingChange -MESSAGE: Property 'IsLoggingChange' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/IConfigChange.cs -LINE: 51 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsAuthChange -MESSAGE: Property 'IsAuthChange' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/IConfigChange.cs -LINE: 52 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsTlsChange -MESSAGE: Property 'IsTlsChange' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/IConfigChange.cs -LINE: 53 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsNonReloadable -MESSAGE: Property 'IsNonReloadable' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfLexer.cs LINE: 66 CATEGORY: MissingDoc @@ -1756,936 +206,6 @@ MESSAGE: Method 'Tokenize(string input)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 31 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Parse(string data) -MESSAGE: Method 'Parse(string data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 43 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseWithChecks(string data) -MESSAGE: Method 'ParseWithChecks(string data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 48 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseFile(string filePath) -MESSAGE: Method 'ParseFile(string filePath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 55 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseFileWithChecks(string filePath) -MESSAGE: Method 'ParseFileWithChecks(string filePath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 71 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseFileWithDigest(string filePath) -MESSAGE: Method 'ParseFileWithDigest(string filePath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 88 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseFileWithChecksDigest(string filePath) -MESSAGE: Method 'ParseFileWithChecksDigest(string filePath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 207 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Mapping -MESSAGE: Property 'Mapping' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 209 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ParserState(IReadOnlyList tokens, string baseDir) -MESSAGE: Constructor 'ParserState(IReadOnlyList tokens, string baseDir)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 214 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ParserState(IReadOnlyList tokens, string baseDir, HashSet envVarReferences, int includeDepth) -MESSAGE: Constructor 'ParserState(IReadOnlyList tokens, string baseDir, HashSet envVarReferences, int includeDepth)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfParser.cs -LINE: 222 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Run() -MESSAGE: Method 'Run()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 39 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: PedanticToken(Token item, object? value, bool usedVariable, string sourceFile) -MESSAGE: Constructor 'PedanticToken(Token item, object? value, bool usedVariable, string sourceFile)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 47 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: MarshalJson() -MESSAGE: Method 'MarshalJson()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 49 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Value() -MESSAGE: Method 'Value()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 51 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Line() -MESSAGE: Method 'Line()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 53 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsUsedVariable() -MESSAGE: Method 'IsUsedVariable()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 55 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SourceFile() -MESSAGE: Method 'SourceFile()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfToken.cs -LINE: 57 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Position() -MESSAGE: Method 'Position()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 80 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Compress(ReadOnlySpan payload, EventCompressionType compression) -MESSAGE: Method 'Compress(ReadOnlySpan payload, EventCompressionType compression)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 80 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Compress(ReadOnlySpan payload, EventCompressionType compression) -MESSAGE: Method 'Compress(ReadOnlySpan payload, EventCompressionType compression)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 107 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decompress(ReadOnlySpan compressed, EventCompressionType compression) -MESSAGE: Method 'Decompress(ReadOnlySpan compressed, EventCompressionType compression)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 107 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decompress(ReadOnlySpan compressed, EventCompressionType compression) -MESSAGE: Method 'Decompress(ReadOnlySpan compressed, EventCompressionType compression)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 153 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CompressIfBeneficial(ReadOnlySpan payload, EventCompressionType compression, int thresholdBytes) -MESSAGE: Method 'CompressIfBeneficial(ReadOnlySpan payload, EventCompressionType compression, int thresholdBytes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 153 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CompressIfBeneficial(ReadOnlySpan payload, EventCompressionType compression, int thresholdBytes) -MESSAGE: Method 'CompressIfBeneficial(ReadOnlySpan payload, EventCompressionType compression, int thresholdBytes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 153 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CompressIfBeneficial(ReadOnlySpan payload, EventCompressionType compression, int thresholdBytes) -MESSAGE: Method 'CompressIfBeneficial(ReadOnlySpan payload, EventCompressionType compression, int thresholdBytes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventCompressor.cs -LINE: 192 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetAcceptEncoding(string? acceptEncoding) -MESSAGE: Method 'GetAcceptEncoding(string? acceptEncoding)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 78 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'sub' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 79 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'client' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 80 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'account' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 81 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'subject' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 82 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'reply' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 83 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'headers' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Events/EventSubjects.cs -LINE: 84 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Delegate -SIGNATURE: SystemMessageHandler -MESSAGE: Parameter 'message' in delegate 'SystemMessageHandler' is missing from XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 48 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatSub(string account, string subject) -MESSAGE: Method 'FormatSub(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 48 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatSub(string account, string subject) -MESSAGE: Method 'FormatSub(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 56 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatUnsub(string account, string subject) -MESSAGE: Method 'FormatUnsub(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 56 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatUnsub(string account, string subject) -MESSAGE: Method 'FormatUnsub(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 65 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatMode(string account, GatewayInterestMode mode) -MESSAGE: Method 'FormatMode(string account, GatewayInterestMode mode)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 65 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatMode(string account, GatewayInterestMode mode) -MESSAGE: Method 'FormatMode(string account, GatewayInterestMode mode)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayCommands.cs -LINE: 76 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseCommandType(ReadOnlySpan line) -MESSAGE: Method 'ParseCommandType(ReadOnlySpan line)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 45 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: GatewayInterestTracker(int noInterestThreshold) -MESSAGE: Constructor 'GatewayInterestTracker(int noInterestThreshold)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 54 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetMode(string account) -MESSAGE: Method 'GetMode(string account)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 61 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TrackInterest(string account, string subject) -MESSAGE: Method 'TrackInterest(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 61 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TrackInterest(string account, string subject) -MESSAGE: Method 'TrackInterest(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 86 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TrackNoInterest(string account, string subject) -MESSAGE: Method 'TrackNoInterest(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 86 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TrackNoInterest(string account, string subject) -MESSAGE: Method 'TrackNoInterest(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 113 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldForward(string account, string subject) -MESSAGE: Method 'ShouldForward(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 113 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldForward(string account, string subject) -MESSAGE: Method 'ShouldForward(string account, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 144 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SwitchToInterestOnly(string account) -MESSAGE: Method 'SwitchToInterestOnly(string account)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Gateways/GatewayInterestTracker.cs -LINE: 182 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Mode -MESSAGE: Property 'Mode' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportAuth.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TokenRequired -MESSAGE: Property 'TokenRequired' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportAuth.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AccountPosition -MESSAGE: Property 'AccountPosition' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportAuth.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ApprovedAccounts -MESSAGE: Property 'ApprovedAccounts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportAuth.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: RevokedAccounts -MESSAGE: Property 'RevokedAccounts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportAuth.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsAuthorized(Account account) -MESSAGE: Method 'IsAuthorized(Account account)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportMap.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Streams -MESSAGE: Property 'Streams' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportMap.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Services -MESSAGE: Property 'Services' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ExportMap.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Responses -MESSAGE: Property 'Responses' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ImportMap.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Streams -MESSAGE: Property 'Streams' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ImportMap.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Services -MESSAGE: Property 'Services' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ImportMap.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: AddServiceImport(ServiceImport si) -MESSAGE: Method 'AddServiceImport(ServiceImport si)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Type -MESSAGE: Property 'Type' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Requestor -MESSAGE: Property 'Requestor' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Responder -MESSAGE: Property 'Responder' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Status -MESSAGE: Property 'Status' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ServiceLatencyNanos -MESSAGE: Property 'ServiceLatencyNanos' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TotalLatencyNanos -MESSAGE: Property 'TotalLatencyNanos' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ShouldSample(ServiceLatency latency) -MESSAGE: Method 'ShouldSample(ServiceLatency latency)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/LatencyTracker.cs -LINE: 35 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: BuildLatencyMsg(string requestor, string responder, TimeSpan serviceLatency, TimeSpan totalLatency) -MESSAGE: Method 'BuildLatencyMsg(string requestor, string responder, TimeSpan serviceLatency, TimeSpan totalLatency)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ResponseRouter.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateResponseImport(Account exporterAccount, ServiceImport originalImport, string originalReply) -MESSAGE: Method 'CreateResponseImport(Account exporterAccount, ServiceImport originalImport, string originalReply)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ResponseRouter.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateResponseImport(Account exporterAccount, ServiceImport originalImport, string originalReply) -MESSAGE: Method 'CreateResponseImport(Account exporterAccount, ServiceImport originalImport, string originalReply)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ResponseRouter.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateResponseImport(Account exporterAccount, ServiceImport originalImport, string originalReply) -MESSAGE: Method 'CreateResponseImport(Account exporterAccount, ServiceImport originalImport, string originalReply)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ResponseRouter.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi) -MESSAGE: Method 'CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ResponseRouter.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi) -MESSAGE: Method 'CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ResponseRouter.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi) -MESSAGE: Method 'CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceExport.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Auth -MESSAGE: Property 'Auth' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceExport.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceExport.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ResponseType -MESSAGE: Property 'ResponseType' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceExport.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ResponseThreshold -MESSAGE: Property 'ResponseThreshold' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceExport.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Latency -MESSAGE: Property 'Latency' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceExport.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AllowTrace -MESSAGE: Property 'AllowTrace' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DestinationAccount -MESSAGE: Property 'DestinationAccount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: From -MESSAGE: Property 'From' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: To -MESSAGE: Property 'To' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Transform -MESSAGE: Property 'Transform' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Export -MESSAGE: Property 'Export' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ResponseType -MESSAGE: Property 'ResponseType' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sid -MESSAGE: Property 'Sid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsResponse -MESSAGE: Property 'IsResponse' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: UsePub -MESSAGE: Property 'UsePub' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Invalid -MESSAGE: Property 'Invalid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Share -MESSAGE: Property 'Share' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Tracking -MESSAGE: Property 'Tracking' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceImport.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TimestampTicks -MESSAGE: Property 'TimestampTicks' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/ServiceLatency.cs LINE: 5 CATEGORY: MissingDoc @@ -2716,316 +236,6 @@ MESSAGE: Property 'Auth' is missing XML documentation --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/StreamImport.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SourceAccount -MESSAGE: Property 'SourceAccount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/StreamImport.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: From -MESSAGE: Property 'From' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/StreamImport.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: To -MESSAGE: Property 'To' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/StreamImport.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Transform -MESSAGE: Property 'Transform' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/StreamImport.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: UsePub -MESSAGE: Property 'UsePub' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Imports/StreamImport.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Invalid -MESSAGE: Property 'Invalid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Id -MESSAGE: Property 'Id' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Kind -MESSAGE: Property 'Kind' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsInternal -MESSAGE: Property 'IsInternal' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ClientOpts -MESSAGE: Property 'ClientOpts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Permissions -MESSAGE: Property 'Permissions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SendMessage(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload) -MESSAGE: Method 'SendMessage(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SendMessageNoFlush(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload) -MESSAGE: Method 'SendMessageNoFlush(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SignalFlush() -MESSAGE: Method 'SignalFlush()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: QueueOutbound(ReadOnlyMemory data) -MESSAGE: Method 'QueueOutbound(ReadOnlyMemory data)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/INatsClient.cs -LINE: 21 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RemoveSubscription(string sid) -MESSAGE: Method 'RemoveSubscription(string sid)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Nodes.cs -LINE: 185 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetPrefix(ReadOnlySpan pre) -MESSAGE: Method 'SetPrefix(ReadOnlySpan pre)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Nodes.cs -LINE: 186 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: AddChild(byte c, INode n) -MESSAGE: Method 'AddChild(byte c, INode n)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Nodes.cs -LINE: 187 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FindChild(byte c) -MESSAGE: Method 'FindChild(byte c)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Nodes.cs -LINE: 188 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Grow() -MESSAGE: Method 'Grow()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Nodes.cs -LINE: 189 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DeleteChild(byte c) -MESSAGE: Method 'DeleteChild(byte c)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Nodes.cs -LINE: 190 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Shrink() -MESSAGE: Method 'Shrink()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 23 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Pivot(ReadOnlySpan subject, int pos) -MESSAGE: Method 'Pivot(ReadOnlySpan subject, int pos)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 23 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Pivot(ReadOnlySpan subject, int pos) -MESSAGE: Method 'Pivot(ReadOnlySpan subject, int pos)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CommonPrefixLen(ReadOnlySpan s1, ReadOnlySpan s2) -MESSAGE: Method 'CommonPrefixLen(ReadOnlySpan s1, ReadOnlySpan s2)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CommonPrefixLen(ReadOnlySpan s1, ReadOnlySpan s2) -MESSAGE: Method 'CommonPrefixLen(ReadOnlySpan s1, ReadOnlySpan s2)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 47 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CopyBytes(ReadOnlySpan src) -MESSAGE: Method 'CopyBytes(ReadOnlySpan src)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 57 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GenParts(ReadOnlySpan filter) -MESSAGE: Method 'GenParts(ReadOnlySpan filter)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 145 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: MatchPartsAgainstFragment(ReadOnlyMemory[] parts, ReadOnlySpan frag) -MESSAGE: Method 'MatchPartsAgainstFragment(ReadOnlyMemory[] parts, ReadOnlySpan frag)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/SubjectTree/Parts.cs -LINE: 145 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: MatchPartsAgainstFragment(ReadOnlyMemory[] parts, ReadOnlySpan frag) -MESSAGE: Method 'MatchPartsAgainstFragment(ReadOnlyMemory[] parts, ReadOnlySpan frag)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/AdaptiveReadBuffer.cs LINE: 14 CATEGORY: MissingDoc @@ -3046,346 +256,6 @@ MESSAGE: Method 'RecordRead(int bytesRead)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: RentCount -MESSAGE: Property 'RentCount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 27 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ReturnCount -MESSAGE: Property 'ReturnCount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BroadcastCount -MESSAGE: Property 'BroadcastCount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 39 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Rent(int size) -MESSAGE: Method 'Rent(int size)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RentBuffer(int size) -MESSAGE: Method 'RentBuffer(int size)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 97 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReturnBuffer(byte[] buffer) -MESSAGE: Method 'ReturnBuffer(byte[] buffer)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 131 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: BroadcastDrain(IReadOnlyList> pendingWrites, byte[] destination) -MESSAGE: Method 'BroadcastDrain(IReadOnlyList> pendingWrites, byte[] destination)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 131 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: BroadcastDrain(IReadOnlyList> pendingWrites, byte[] destination) -MESSAGE: Method 'BroadcastDrain(IReadOnlyList> pendingWrites, byte[] destination)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 147 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CalculateBroadcastSize(IReadOnlyList> pendingWrites) -MESSAGE: Method 'CalculateBroadcastSize(IReadOnlyList> pendingWrites)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 167 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: PooledMemoryOwner(byte[] buffer, ConcurrentBag pool) -MESSAGE: Constructor 'PooledMemoryOwner(byte[] buffer, ConcurrentBag pool)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 173 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Memory -MESSAGE: Property 'Memory' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/OutboundBufferPool.cs -LINE: 176 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: AdvisoryPublisher(Action publishAction) -MESSAGE: Constructor 'AdvisoryPublisher(Action publishAction)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StreamCreated(string streamName, object? detail) -MESSAGE: Method 'StreamCreated(string streamName, object? detail)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StreamCreated(string streamName, object? detail) -MESSAGE: Method 'StreamCreated(string streamName, object? detail)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 44 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StreamDeleted(string streamName) -MESSAGE: Method 'StreamDeleted(string streamName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 59 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StreamUpdated(string streamName, object? detail) -MESSAGE: Method 'StreamUpdated(string streamName, object? detail)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 59 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StreamUpdated(string streamName, object? detail) -MESSAGE: Method 'StreamUpdated(string streamName, object? detail)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 75 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ConsumerCreated(string streamName, string consumerName) -MESSAGE: Method 'ConsumerCreated(string streamName, string consumerName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 75 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ConsumerCreated(string streamName, string consumerName) -MESSAGE: Method 'ConsumerCreated(string streamName, string consumerName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 91 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ConsumerDeleted(string streamName, string consumerName) -MESSAGE: Method 'ConsumerDeleted(string streamName, string consumerName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs -LINE: 91 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ConsumerDeleted(string streamName, string consumerName) -MESSAGE: Method 'ConsumerDeleted(string streamName, string consumerName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ApiRateLimiter(int maxConcurrent, TimeSpan? dedupTtl) -MESSAGE: Constructor 'ApiRateLimiter(int maxConcurrent, TimeSpan? dedupTtl)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryAcquireAsync(CancellationToken ct) -MESSAGE: Method 'TryAcquireAsync(CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs -LINE: 54 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetCachedResponse(string? requestId) -MESSAGE: Method 'GetCachedResponse(string? requestId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs -LINE: 76 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CacheResponse(string? requestId, JetStreamApiResponse response) -MESSAGE: Method 'CacheResponse(string? requestId, JetStreamApiResponse response)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs -LINE: 76 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CacheResponse(string? requestId, JetStreamApiResponse response) -MESSAGE: Method 'CacheResponse(string? requestId, JetStreamApiResponse response)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs -LINE: 102 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs -LINE: 21 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ClusteredRequestProcessor(TimeSpan? timeout) -MESSAGE: Constructor 'ClusteredRequestProcessor(TimeSpan? timeout)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs -LINE: 50 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WaitForResultAsync(string requestId, CancellationToken ct) -MESSAGE: Method 'WaitForResultAsync(string requestId, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs -LINE: 50 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WaitForResultAsync(string requestId, CancellationToken ct) -MESSAGE: Method 'WaitForResultAsync(string requestId, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs -LINE: 79 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DeliverResult(string requestId, JetStreamApiResponse response) -MESSAGE: Method 'DeliverResult(string requestId, JetStreamApiResponse response)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs -LINE: 79 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DeliverResult(string requestId, JetStreamApiResponse response) -MESSAGE: Method 'DeliverResult(string requestId, JetStreamApiResponse response)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs -LINE: 94 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CancelAll(string reason) -MESSAGE: Method 'CancelAll(string reason)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/AccountApiHandlers.cs LINE: 5 CATEGORY: MissingDoc @@ -3396,86 +266,6 @@ MESSAGE: Method 'HandleInfo(StreamManager streams, ConsumerManager consumers)' i --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleServerRemove() -MESSAGE: Method 'HandleServerRemove()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleAccountPurge(string subject) -MESSAGE: Method 'HandleAccountPurge(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleAccountStreamMove(string subject) -MESSAGE: Method 'HandleAccountStreamMove(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleAccountStreamMoveCancel(string subject) -MESSAGE: Method 'HandleAccountStreamMoveCancel(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleMetaLeaderStepdown(JetStream.Cluster.JetStreamMetaGroup meta) -MESSAGE: Method 'HandleMetaLeaderStepdown(JetStream.Cluster.JetStreamMetaGroup meta)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleStreamLeaderStepdown(string subject, StreamManager streams) -MESSAGE: Method 'HandleStreamLeaderStepdown(string subject, StreamManager streams)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleStreamPeerRemove(string subject) -MESSAGE: Method 'HandleStreamPeerRemove(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleConsumerLeaderStepdown(string subject) -MESSAGE: Method 'HandleConsumerLeaderStepdown(string subject)' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/DirectApiHandlers.cs LINE: 10 CATEGORY: MissingDoc @@ -3526,126 +316,6 @@ MESSAGE: Method 'PlanReplicas(int replicas)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 52 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: EncodeStreamAssignment(StreamAssignment sa) -MESSAGE: Method 'EncodeStreamAssignment(StreamAssignment sa)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 61 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DecodeStreamAssignment(ReadOnlySpan data) -MESSAGE: Method 'DecodeStreamAssignment(ReadOnlySpan data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 87 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: EncodeConsumerAssignment(ConsumerAssignment ca) -MESSAGE: Method 'EncodeConsumerAssignment(ConsumerAssignment ca)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 96 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DecodeConsumerAssignment(ReadOnlySpan data) -MESSAGE: Method 'DecodeConsumerAssignment(ReadOnlySpan data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 131 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CompressIfLarge(byte[] data, int threshold) -MESSAGE: Method 'CompressIfLarge(byte[] data, int threshold)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 131 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CompressIfLarge(byte[] data, int threshold) -MESSAGE: Method 'CompressIfLarge(byte[] data, int threshold)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs -LINE: 151 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DecompressIfNeeded(byte[] data) -MESSAGE: Method 'DecompressIfNeeded(byte[] data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamClusterMonitor(JetStreamMetaGroup meta, ChannelReader entries) -MESSAGE: Constructor 'JetStreamClusterMonitor(JetStreamMetaGroup meta, ChannelReader entries)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamClusterMonitor(JetStreamMetaGroup meta, ChannelReader entries, ILogger logger) -MESSAGE: Constructor 'JetStreamClusterMonitor(JetStreamMetaGroup meta, ChannelReader entries, ILogger logger)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartAsync(CancellationToken ct) -MESSAGE: Method 'StartAsync(CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs -LINE: 78 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WaitForProcessedAsync(int targetCount, CancellationToken ct) -MESSAGE: Method 'WaitForProcessedAsync(int targetCount, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs -LINE: 78 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WaitForProcessedAsync(int targetCount, CancellationToken ct) -MESSAGE: Method 'WaitForProcessedAsync(int targetCount, CancellationToken ct)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/MetaSnapshotCodec.cs LINE: 28 CATEGORY: MissingParam @@ -3666,136 +336,6 @@ MESSAGE: Method 'Decode(byte[] data)' is missing documentati --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight) -MESSAGE: Method 'SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight) -MESSAGE: Method 'SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight) -MESSAGE: Method 'SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight) -MESSAGE: Method 'SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight) -MESSAGE: Method 'SelectPeerGroup(string groupName, int replicas, IReadOnlyList availablePeers, PlacementPolicy? policy, long assetCostWeight)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 204 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: PeerId -MESSAGE: Property 'PeerId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 205 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Cluster -MESSAGE: Property 'Cluster' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 206 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Tags -MESSAGE: Property 'Tags' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 207 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Available -MESSAGE: Property 'Available' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 208 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AvailableStorage -MESSAGE: Property 'AvailableStorage' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 231 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Cluster -MESSAGE: Property 'Cluster' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 232 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Tags -MESSAGE: Property 'Tags' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs -LINE: 233 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ExcludeTags -MESSAGE: Property 'ExcludeTags' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/DeliveryInterestTracker.cs LINE: 15 CATEGORY: MissingDoc @@ -3806,1126 +346,6 @@ MESSAGE: Constructor 'DeliveryInterestTracker(TimeSpan? inactiveTimeout)' is mis --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: FilterSkipTracker(string? filterSubject, IReadOnlyList? filterSubjects) -MESSAGE: Constructor 'FilterSkipTracker(string? filterSubject, IReadOnlyList? filterSubjects)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs -LINE: 49 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldDeliver(string subject) -MESSAGE: Method 'ShouldDeliver(string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs -LINE: 82 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordSkip(ulong sequence) -MESSAGE: Method 'RecordSkip(ulong sequence)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs -LINE: 91 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: NextUnskippedSequence(ulong startSeq) -MESSAGE: Method 'NextUnskippedSequence(ulong startSeq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs -LINE: 103 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: PurgeBelow(ulong floor) -MESSAGE: Method 'PurgeBelow(ulong floor)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 20 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: SampleTracker(double sampleRate, Random? random) -MESSAGE: Constructor 'SampleTracker(double sampleRate, Random? random)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 20 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: SampleTracker(double sampleRate, Random? random) -MESSAGE: Constructor 'SampleTracker(double sampleRate, Random? random)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 64 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject) -MESSAGE: Method 'RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 64 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject) -MESSAGE: Method 'RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 64 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject) -MESSAGE: Method 'RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 81 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseSampleFrequency(string? frequency) -MESSAGE: Method 'ParseSampleFrequency(string? frequency)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 107 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sequence -MESSAGE: Property 'Sequence' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 108 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 109 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DeliveryLatency -MESSAGE: Property 'DeliveryLatency' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs -LINE: 110 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SampledAtUtc -MESSAGE: Property 'SampledAtUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryConsume(long bytes) -MESSAGE: Method 'TryConsume(long bytes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs -LINE: 72 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: EstimateWait(long bytes) -MESSAGE: Method 'EstimateWait(long bytes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs -LINE: 90 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WaitForTokensAsync(long bytes, CancellationToken ct) -MESSAGE: Method 'WaitForTokensAsync(long bytes, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs -LINE: 90 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WaitForTokensAsync(long bytes, CancellationToken ct) -MESSAGE: Method 'WaitForTokensAsync(long bytes, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs -LINE: 110 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: UpdateRate(long bytesPerSecond, long burstSize) -MESSAGE: Method 'UpdateRate(long bytesPerSecond, long burstSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs -LINE: 110 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: UpdateRate(long bytesPerSecond, long burstSize) -MESSAGE: Method 'UpdateRate(long bytesPerSecond, long burstSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ConsumeBytes(long bytes) -MESSAGE: Method 'ConsumeBytes(long bytes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs -LINE: 41 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Count -MESSAGE: Property 'Count' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs -LINE: 42 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsEmpty -MESSAGE: Property 'IsEmpty' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs -LINE: 44 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Enqueue(PullRequest request) -MESSAGE: Method 'Enqueue(PullRequest request)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs -LINE: 46 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryDequeue() -MESSAGE: Method 'TryDequeue()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs -LINE: 54 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RemoveExpired(DateTimeOffset now) -MESSAGE: Method 'RemoveExpired(DateTimeOffset now)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RegisterInterest(string consumer, string filterSubject) -MESSAGE: Method 'RegisterInterest(string consumer, string filterSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RegisterInterest(string consumer, string filterSubject) -MESSAGE: Method 'RegisterInterest(string consumer, string filterSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 29 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: UnregisterInterest(string consumer) -MESSAGE: Method 'UnregisterInterest(string consumer)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 37 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AcknowledgeDelivery(string consumer, ulong seq) -MESSAGE: Method 'AcknowledgeDelivery(string consumer, ulong seq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 37 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AcknowledgeDelivery(string consumer, ulong seq) -MESSAGE: Method 'AcknowledgeDelivery(string consumer, ulong seq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 52 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldRetain(ulong seq, string msgSubject) -MESSAGE: Method 'ShouldRetain(ulong seq, string msgSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/InterestRetentionPolicy.cs -LINE: 52 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldRetain(ulong seq, string msgSubject) -MESSAGE: Method 'ShouldRetain(ulong seq, string msgSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordFindBySubject(long ticks) -MESSAGE: Method 'RecordFindBySubject(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordGetState(long ticks) -MESSAGE: Method 'RecordGetState(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordAppend(long ticks) -MESSAGE: Method 'RecordAppend(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordEnforcePolicies(long ticks) -MESSAGE: Method 'RecordEnforcePolicies(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordCaptureOverhead(long ticks) -MESSAGE: Method 'RecordCaptureOverhead(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 27 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordJsonSerialize(long ticks) -MESSAGE: Method 'RecordJsonSerialize(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordAckDeliver(long ticks) -MESSAGE: Method 'RecordAckDeliver(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RecordTotalProcessMessage(long ticks) -MESSAGE: Method 'RecordTotalProcessMessage(long ticks)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 30 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IncrementCalls() -MESSAGE: Method 'IncrementCalls()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamProfiler.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DumpAndReset() -MESSAGE: Method 'DumpAndReset()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamService.cs -LINE: 47 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: InternalClient -MESSAGE: Property 'InternalClient' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamService.cs -LINE: 48 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsRunning -MESSAGE: Property 'IsRunning' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamService.cs -LINE: 80 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamService(JetStreamOptions options, InternalClient? internalClient) -MESSAGE: Constructor 'JetStreamService(JetStreamOptions options, InternalClient? internalClient)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamService.cs -LINE: 85 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamService(JetStreamOptions options, InternalClient? internalClient, ILoggerFactory loggerFactory) -MESSAGE: Constructor 'JetStreamService(JetStreamOptions options, InternalClient? internalClient, ILoggerFactory loggerFactory)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamService.cs -LINE: 95 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: StartAsync(CancellationToken ct) -MESSAGE: Method 'StartAsync(CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JetStreamService.cs -LINE: 141 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DisposeAsync() -MESSAGE: Method 'DisposeAsync()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 37 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetRequiredApiLevel(Dictionary? metadata) -MESSAGE: Method 'GetRequiredApiLevel(Dictionary? metadata)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 48 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SupportsRequiredApiLevel(Dictionary? metadata) -MESSAGE: Method 'SupportsRequiredApiLevel(Dictionary? metadata)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 63 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetStaticStreamMetadata(StreamConfig cfg) -MESSAGE: Method 'SetStaticStreamMetadata(StreamConfig cfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 101 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetDynamicStreamMetadata(StreamConfig cfg) -MESSAGE: Method 'SetDynamicStreamMetadata(StreamConfig cfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 121 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CopyStreamMetadata(StreamConfig cfg, StreamConfig? prevCfg) -MESSAGE: Method 'CopyStreamMetadata(StreamConfig cfg, StreamConfig? prevCfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 121 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CopyStreamMetadata(StreamConfig cfg, StreamConfig? prevCfg) -MESSAGE: Method 'CopyStreamMetadata(StreamConfig cfg, StreamConfig? prevCfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 132 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetStaticConsumerMetadata(ConsumerConfig cfg) -MESSAGE: Method 'SetStaticConsumerMetadata(ConsumerConfig cfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 157 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetDynamicConsumerMetadata(ConsumerConfig cfg) -MESSAGE: Method 'SetDynamicConsumerMetadata(ConsumerConfig cfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 176 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CopyConsumerMetadata(ConsumerConfig cfg, ConsumerConfig? prevCfg) -MESSAGE: Method 'CopyConsumerMetadata(ConsumerConfig cfg, ConsumerConfig? prevCfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 176 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CopyConsumerMetadata(ConsumerConfig cfg, ConsumerConfig? prevCfg) -MESSAGE: Method 'CopyConsumerMetadata(ConsumerConfig cfg, ConsumerConfig? prevCfg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/JsVersioning.cs -LINE: 187 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DeleteDynamicMetadata(Dictionary metadata) -MESSAGE: Method 'DeleteDynamicMetadata(Dictionary metadata)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/CounterValue.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Value -MESSAGE: Property 'Value' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/CounterValue.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: AsLong() -MESSAGE: Method 'AsLong()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/CounterValue.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FromLong(long value) -MESSAGE: Method 'FromLong(long value)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/CounterValue.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ToPayload() -MESSAGE: Method 'ToPayload()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/CounterValue.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FromPayload(ReadOnlySpan payload) -MESSAGE: Method 'FromPayload(ReadOnlySpan payload)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/StreamState.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Messages -MESSAGE: Property 'Messages' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/StreamState.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: FirstSeq -MESSAGE: Property 'FirstSeq' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/StreamState.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastSeq -MESSAGE: Property 'LastSeq' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/StreamState.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Bytes -MESSAGE: Property 'Bytes' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatSuccess(Span dest, string streamName, ulong seq) -MESSAGE: Method 'FormatSuccess(Span dest, string streamName, ulong seq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatSuccess(Span dest, string streamName, ulong seq) -MESSAGE: Method 'FormatSuccess(Span dest, string streamName, ulong seq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FormatSuccess(Span dest, string streamName, ulong seq) -MESSAGE: Method 'FormatSuccess(Span dest, string streamName, ulong seq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs -LINE: 39 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsSimpleSuccess(PubAck ack) -MESSAGE: Method 'IsSimpleSuccess(PubAck ack)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamPublisher(StreamManager streamManager) -MESSAGE: Constructor 'JetStreamPublisher(StreamManager streamManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryCapture(string subject, ReadOnlyMemory payload, PubAck ack) -MESSAGE: Method 'TryCapture(string subject, ReadOnlyMemory payload, PubAck ack)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryCapture(string subject, ReadOnlyMemory payload, string? msgId, PubAck ack) -MESSAGE: Method 'TryCapture(string subject, ReadOnlyMemory payload, string? msgId, PubAck ack)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryCaptureWithOptions(string subject, ReadOnlyMemory payload, PublishOptions options, PubAck ack) -MESSAGE: Method 'TryCaptureWithOptions(string subject, ReadOnlyMemory payload, PublishOptions options, PubAck ack)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PubAck.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Stream -MESSAGE: Property 'Stream' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PubAck.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Seq -MESSAGE: Property 'Seq' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PubAck.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Duplicate -MESSAGE: Property 'Duplicate' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PubAck.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ErrorCode -MESSAGE: Property 'ErrorCode' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PubAck.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BatchId -MESSAGE: Property 'BatchId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PubAck.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BatchSize -MESSAGE: Property 'BatchSize' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MsgId -MESSAGE: Property 'MsgId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ExpectedLastSeq -MESSAGE: Property 'ExpectedLastSeq' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ExpectedLastSubjectSeq -MESSAGE: Property 'ExpectedLastSubjectSeq' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ExpectedLastSubjectSeqSubject -MESSAGE: Property 'ExpectedLastSubjectSeqSubject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BatchId -MESSAGE: Property 'BatchId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BatchSeq -MESSAGE: Property 'BatchSeq' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BatchCommit -MESSAGE: Property 'BatchCommit' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishOptions.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ExpectedLastMsgId -MESSAGE: Property 'ExpectedLastMsgId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsDuplicate(string? msgId, int duplicateWindowMs, ulong existingSequence) -MESSAGE: Method 'IsDuplicate(string? msgId, int duplicateWindowMs, ulong existingSequence)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Record(string? msgId, ulong sequence) -MESSAGE: Method 'Record(string? msgId, ulong sequence)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs -LINE: 37 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TrimOlderThan(int duplicateWindowMs) -MESSAGE: Method 'TrimOlderThan(int duplicateWindowMs)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs -LINE: 50 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: CheckExpectedLastSeq(ulong expectedLastSeq, ulong actualLastSeq) -MESSAGE: Method 'CheckExpectedLastSeq(ulong expectedLastSeq, ulong actualLastSeq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Encrypt(ReadOnlySpan plaintext, byte[] key, StoreCipher cipher) -MESSAGE: Method 'Encrypt(ReadOnlySpan plaintext, byte[] key, StoreCipher cipher)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Encrypt(ReadOnlySpan plaintext, byte[] key, StoreCipher cipher) -MESSAGE: Method 'Encrypt(ReadOnlySpan plaintext, byte[] key, StoreCipher cipher)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Encrypt(ReadOnlySpan plaintext, byte[] key, StoreCipher cipher) -MESSAGE: Method 'Encrypt(ReadOnlySpan plaintext, byte[] key, StoreCipher cipher)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs -LINE: 118 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decrypt(ReadOnlySpan encrypted, byte[] key, StoreCipher cipher) -MESSAGE: Method 'Decrypt(ReadOnlySpan encrypted, byte[] key, StoreCipher cipher)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs -LINE: 118 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decrypt(ReadOnlySpan encrypted, byte[] key, StoreCipher cipher) -MESSAGE: Method 'Decrypt(ReadOnlySpan encrypted, byte[] key, StoreCipher cipher)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs -LINE: 118 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decrypt(ReadOnlySpan encrypted, byte[] key, StoreCipher cipher) -MESSAGE: Method 'Decrypt(ReadOnlySpan encrypted, byte[] key, StoreCipher cipher)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteAtomicallyAsync(string path, byte[] data) -MESSAGE: Method 'WriteAtomicallyAsync(string path, byte[] data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs -LINE: 21 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteAtomicallyAsync(string path, byte[] data) -MESSAGE: Method 'WriteAtomicallyAsync(string path, byte[] data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs -LINE: 38 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteAtomicallyAsync(string path, ReadOnlyMemory data) -MESSAGE: Method 'WriteAtomicallyAsync(string path, ReadOnlyMemory data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs -LINE: 38 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteAtomicallyAsync(string path, ReadOnlyMemory data) -MESSAGE: Method 'WriteAtomicallyAsync(string path, ReadOnlyMemory data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerState.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Delivered -MESSAGE: Property 'Delivered' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerState.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AckFloor -MESSAGE: Property 'AckFloor' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerState.cs -LINE: 36 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Pending -MESSAGE: Property 'Pending' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerState.cs -LINE: 40 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Redelivered -MESSAGE: Property 'Redelivered' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerStateCodec.cs -LINE: 47 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Encode(ConsumerState state) -MESSAGE: Method 'Encode(ConsumerState state)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerStateCodec.cs -LINE: 108 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan buf) -MESSAGE: Method 'Decode(ReadOnlySpan buf)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStore.cs LINE: 2880 CATEGORY: MissingParam @@ -4936,696 +356,6 @@ MESSAGE: Method 'EvictBlockNoSync(int blockId)' is missing ? metadata) -MESSAGE: Method 'IsMetadataWithinLimit(Dictionary? metadata)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: MetadataByteSize(Dictionary? metadata) -MESSAGE: Method 'MetadataByteSize(Dictionary? metadata)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 46 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Validate(StreamConfig config) -MESSAGE: Method 'Validate(StreamConfig config)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 69 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ValidateClusterConfig(NatsOptions options) -MESSAGE: Method 'ValidateClusterConfig(NatsOptions options)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 87 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsValid -MESSAGE: Property 'IsValid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 88 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Message -MESSAGE: Property 'Message' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 96 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Valid() -MESSAGE: Method 'Valid()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs -LINE: 97 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Invalid(string message) -MESSAGE: Method 'Invalid(string message)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Jwt -MESSAGE: Property 'Jwt' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Nkey -MESSAGE: Property 'Nkey' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sig -MESSAGE: Property 'Sig' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Hub -MESSAGE: Property 'Hub' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Cluster -MESSAGE: Property 'Cluster' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Headers -MESSAGE: Property 'Headers' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: JetStream -MESSAGE: Property 'JetStream' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Compression -MESSAGE: Property 'Compression' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 35 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: RemoteAccount -MESSAGE: Property 'RemoteAccount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafConnectInfo.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Proto -MESSAGE: Property 'Proto' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 35 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke) -MESSAGE: Constructor 'LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 43 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, IReadOnlyList denyImports) -MESSAGE: Constructor 'LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, IReadOnlyList denyImports)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 43 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, IReadOnlyList denyImports) -MESSAGE: Constructor 'LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, IReadOnlyList denyImports)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 43 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, IReadOnlyList denyImports) -MESSAGE: Constructor 'LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, IReadOnlyList denyImports)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 77 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Map(string account, string subject, LeafMapDirection direction) -MESSAGE: Method 'Map(string account, string subject, LeafMapDirection direction)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 77 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Map(string account, string subject, LeafMapDirection direction) -MESSAGE: Method 'Map(string account, string subject, LeafMapDirection direction)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 77 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Map(string account, string subject, LeafMapDirection direction) -MESSAGE: Method 'Map(string account, string subject, LeafMapDirection direction)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 92 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsSubjectAllowed(string subject, LeafMapDirection direction) -MESSAGE: Method 'IsSubjectAllowed(string subject, LeafMapDirection direction)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs -LINE: 92 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsSubjectAllowed(string subject, LeafMapDirection direction) -MESSAGE: Method 'IsSubjectAllowed(string subject, LeafMapDirection direction)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafLoopDetector.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HasLoopMarker(string subject) -MESSAGE: Method 'HasLoopMarker(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafLoopDetector.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Mark(string subject, string serverId) -MESSAGE: Method 'Mark(string subject, string serverId)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafLoopDetector.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsLooped(string subject, string localServerId) -MESSAGE: Method 'IsLooped(string subject, string localServerId)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafLoopDetector.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryUnmark(string subject, string unmarked) -MESSAGE: Method 'TryUnmark(string subject, string unmarked)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafSubKey.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: KeyFromSub(Subscription sub) -MESSAGE: Method 'KeyFromSub(Subscription sub)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/LeafSubKey.cs -LINE: 27 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: KeyFromSubWithOrigin(Subscription sub, string? origin) -MESSAGE: Method 'KeyFromSubWithOrigin(Subscription sub, string? origin)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: WebSocketStreamAdapter(SystemWebSocket ws, int initialBufferSize) -MESSAGE: Constructor 'WebSocketStreamAdapter(SystemWebSocket ws, int initialBufferSize)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 37 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsConnected -MESSAGE: Property 'IsConnected' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BytesRead -MESSAGE: Property 'BytesRead' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 39 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BytesWritten -MESSAGE: Property 'BytesWritten' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 40 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MessagesRead -MESSAGE: Property 'MessagesRead' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 41 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MessagesWritten -MESSAGE: Property 'MessagesWritten' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 199 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Seek(long offset, SeekOrigin origin) -MESSAGE: Method 'Seek(long offset, SeekOrigin origin)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 200 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetLength(long value) -MESSAGE: Method 'SetLength(long value)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 201 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Read(byte[] buffer, int offset, int count) -MESSAGE: Method 'Read(byte[] buffer, int offset, int count)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 202 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Write(byte[] buffer, int offset, int count) -MESSAGE: Method 'Write(byte[] buffer, int offset, int count)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 203 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Flush() -MESSAGE: Method 'Flush()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs -LINE: 205 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose(bool disposing) -MESSAGE: Method 'Dispose(bool disposing)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/AccountzHandler.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: AccountzHandler(NatsServer server) -MESSAGE: Constructor 'AccountzHandler(NatsServer server)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/AccountzHandler.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build() -MESSAGE: Method 'Build()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/AccountzHandler.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: BuildStats() -MESSAGE: Method 'BuildStats()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ClosedConnectionRingBuffer(int capacity) -MESSAGE: Constructor 'ClosedConnectionRingBuffer(int capacity)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Capacity -MESSAGE: Property 'Capacity' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Count -MESSAGE: Property 'Count' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TotalClosed -MESSAGE: Property 'TotalClosed' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs -LINE: 37 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Add(ClosedClient info) -MESSAGE: Method 'Add(ClosedClient info)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs -LINE: 63 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetRecent(int count) -MESSAGE: Method 'GetRecent(int count)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/ConnzHandler.cs LINE: 13 CATEGORY: MissingDoc @@ -5636,436 +366,6 @@ MESSAGE: Method 'HandleConnz(HttpContext ctx)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/GatewayzHandler.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: GatewayzHandler(NatsServer server) -MESSAGE: Constructor 'GatewayzHandler(NatsServer server)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/GatewayzHandler.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build() -MESSAGE: Method 'Build()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Status -MESSAGE: Property 'Status' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: StatusCode -MESSAGE: Property 'StatusCode' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Error -MESSAGE: Property 'Error' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Errors -MESSAGE: Property 'Errors' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Ok() -MESSAGE: Method 'Ok()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Type -MESSAGE: Property 'Type' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Healthz.cs -LINE: 35 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Error -MESSAGE: Property 'Error' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JszHandler(NatsServer server, NatsOptions options) -MESSAGE: Constructor 'JszHandler(NatsServer server, NatsOptions options)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build() -MESSAGE: Method 'Build()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 41 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ServerId -MESSAGE: Property 'ServerId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 44 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Now -MESSAGE: Property 'Now' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 47 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Enabled -MESSAGE: Property 'Enabled' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 50 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Memory -MESSAGE: Property 'Memory' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 53 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Storage -MESSAGE: Property 'Storage' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 56 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Streams -MESSAGE: Property 'Streams' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 59 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Consumers -MESSAGE: Property 'Consumers' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 62 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ApiTotal -MESSAGE: Property 'ApiTotal' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 65 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ApiErrors -MESSAGE: Property 'ApiErrors' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/JszHandler.cs -LINE: 68 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Config -MESSAGE: Property 'Config' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/LeafzHandler.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: LeafzHandler(NatsServer server) -MESSAGE: Constructor 'LeafzHandler(NatsServer server)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/LeafzHandler.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build() -MESSAGE: Method 'Build()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/MonitorServer.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: MonitorServer(NatsServer server, NatsOptions options, ServerStats stats, ILoggerFactory loggerFactory) -MESSAGE: Constructor 'MonitorServer(NatsServer server, NatsOptions options, ServerStats stats, ILoggerFactory loggerFactory)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/MonitorServer.cs -LINE: 140 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: StartAsync(CancellationToken ct) -MESSAGE: Method 'StartAsync(CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/MonitorServer.cs -LINE: 146 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DisposeAsync() -MESSAGE: Method 'DisposeAsync()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/PprofHandler.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Index() -MESSAGE: Method 'Index()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/PprofHandler.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: CaptureCpuProfile(int seconds) -MESSAGE: Method 'CaptureCpuProfile(int seconds)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/RoutezHandler.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: RoutezHandler(NatsServer server) -MESSAGE: Constructor 'RoutezHandler(NatsServer server)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/RoutezHandler.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Build() -MESSAGE: Method 'Build()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Id -MESSAGE: Property 'Id' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Now -MESSAGE: Property 'Now' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumSubs -MESSAGE: Property 'NumSubs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumCache -MESSAGE: Property 'NumCache' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Total -MESSAGE: Property 'Total' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Offset -MESSAGE: Property 'Offset' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Limit -MESSAGE: Property 'Limit' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subs -MESSAGE: Property 'Subs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 40 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Offset -MESSAGE: Property 'Offset' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 41 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Limit -MESSAGE: Property 'Limit' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 42 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subscriptions -MESSAGE: Property 'Subscriptions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 43 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/Subsz.cs -LINE: 44 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Test -MESSAGE: Property 'Test' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/SubszHandler.cs LINE: 12 CATEGORY: MissingDoc @@ -6076,246 +376,6 @@ MESSAGE: Method 'HandleSubsz(HttpContext ctx)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FromCertificate(X509Certificate2? cert) -MESSAGE: Method 'FromCertificate(X509Certificate2? cert)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FromClosedClient(ClosedClient closed) -MESSAGE: Method 'FromClosedClient(ClosedClient closed)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs -LINE: 40 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ToClosedFields(X509Certificate2? cert) -MESSAGE: Method 'ToClosedFields(X509Certificate2? cert)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/VarzHandler.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: VarzHandler(NatsServer server, NatsOptions options, ILoggerFactory loggerFactory) -MESSAGE: Constructor 'VarzHandler(NatsServer server, NatsOptions options, ILoggerFactory loggerFactory)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/VarzHandler.cs -LINE: 36 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleVarzAsync(CancellationToken ct) -MESSAGE: Method 'HandleVarzAsync(CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Monitoring/VarzHandler.cs -LINE: 151 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttPacketReader.cs -LINE: 35 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Read(ReadOnlySpan buffer) -MESSAGE: Method 'Read(ReadOnlySpan buffer)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttPacketReader.cs -LINE: 61 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryRead(ReadOnlySequence buffer, MqttControlPacket? packet, SequencePosition consumed) -MESSAGE: Method 'TryRead(ReadOnlySequence buffer, MqttControlPacket? packet, SequencePosition consumed)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttPacketReader.cs -LINE: 61 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryRead(ReadOnlySequence buffer, MqttControlPacket? packet, SequencePosition consumed) -MESSAGE: Method 'TryRead(ReadOnlySequence buffer, MqttControlPacket? packet, SequencePosition consumed)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttPacketReader.cs -LINE: 61 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryRead(ReadOnlySequence buffer, MqttControlPacket? packet, SequencePosition consumed) -MESSAGE: Method 'TryRead(ReadOnlySequence buffer, MqttControlPacket? packet, SequencePosition consumed)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttPacketReader.cs -LINE: 123 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DecodeRemainingLength(ReadOnlySpan encoded, int consumed) -MESSAGE: Method 'DecodeRemainingLength(ReadOnlySpan encoded, int consumed)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttProtocolParser.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ParsePacket(ReadOnlySpan packet) -MESSAGE: Method 'ParsePacket(ReadOnlySpan packet)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttProtocolParser.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: WritePacket(MqttControlPacketType type, ReadOnlySpan payload, byte flags) -MESSAGE: Method 'WritePacket(MqttControlPacketType type, ReadOnlySpan payload, byte flags)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttProtocolParser.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ParseLine(string line) -MESSAGE: Method 'ParseLine(string line)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Register(string topic, byte[] payload, ulong streamSequence) -MESSAGE: Method 'Register(string topic, byte[] payload, ulong streamSequence)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Register(string topic, byte[] payload, ulong streamSequence) -MESSAGE: Method 'Register(string topic, byte[] payload, ulong streamSequence)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Register(string topic, byte[] payload, ulong streamSequence) -MESSAGE: Method 'Register(string topic, byte[] payload, ulong streamSequence)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 47 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Acknowledge(ushort packetId) -MESSAGE: Method 'Acknowledge(ushort packetId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 72 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsPending(ushort packetId) -MESSAGE: Method 'IsPending(ushort packetId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 93 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: PacketId -MESSAGE: Property 'PacketId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 94 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Topic -MESSAGE: Property 'Topic' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 95 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Payload -MESSAGE: Property 'Payload' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 96 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SentAtUtc -MESSAGE: Property 'SentAtUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs -LINE: 97 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DeliveryCount -MESSAGE: Property 'DeliveryCount' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttStreamInitializer.cs LINE: 21 CATEGORY: MissingDoc @@ -6326,76 +386,6 @@ MESSAGE: Constructor 'MqttStreamInitializer(StreamManager streamManager)' is mis --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 37 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: NatsToMqttBytes(string natsSubject) -MESSAGE: Method 'NatsToMqttBytes(string natsSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 68 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: MqttToNats(string mqttTopic) -MESSAGE: Method 'MqttToNats(string mqttTopic)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 105 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: NatsToMqtt(string natsSubject) -MESSAGE: Method 'NatsToMqtt(string natsSubject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 155 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsDollarTopic(string mqttTopic) -MESSAGE: Method 'IsDollarTopic(string mqttTopic)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 162 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsDollarFilter(string mqttFilter) -MESSAGE: Method 'IsDollarFilter(string mqttFilter)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 170 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WildcardMatchesDollarTopic(string mqttFilter, string mqttTopic) -MESSAGE: Method 'WildcardMatchesDollarTopic(string mqttFilter, string mqttTopic)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttTopicMapper.cs -LINE: 170 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WildcardMatchesDollarTopic(string mqttFilter, string mqttTopic) -MESSAGE: Method 'WildcardMatchesDollarTopic(string mqttFilter, string mqttTopic)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ClientCommandMatrix.cs LINE: 5 CATEGORY: MissingDoc @@ -6406,496 +396,6 @@ MESSAGE: Method 'IsAllowed(global::NATS.Server.ClientKind kind, string? op)' is --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/MessageTraceContext.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Empty -MESSAGE: Property 'Empty' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/MessageTraceContext.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: CreateFromConnect(ClientOptions? connectOpts) -MESSAGE: Method 'CreateFromConnect(ClientOptions? connectOpts)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsHeaderParser.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Status -MESSAGE: Property 'Status' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsHeaderParser.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Description -MESSAGE: Property 'Description' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsHeaderParser.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Headers -MESSAGE: Property 'Headers' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsHeaderParser.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Parse(ReadOnlySpan data) -MESSAGE: Method 'Parse(ReadOnlySpan data)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Type -MESSAGE: Property 'Type' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Operation -MESSAGE: Property 'Operation' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ReplyTo -MESSAGE: Property 'ReplyTo' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Queue -MESSAGE: Property 'Queue' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sid -MESSAGE: Property 'Sid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxMessages -MESSAGE: Property 'MaxMessages' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: HeaderSize -MESSAGE: Property 'HeaderSize' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Payload -MESSAGE: Property 'Payload' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Simple(CommandType type, string operation) -MESSAGE: Method 'Simple(CommandType type, string operation)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 21 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetPayloadMemory() -MESSAGE: Method 'GetPayloadMemory()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Materialize() -MESSAGE: Method 'Materialize()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ProtoWire.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ScanField(ReadOnlySpan buffer) -MESSAGE: Method 'ScanField(ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ProtoWire.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ScanTag(ReadOnlySpan buffer) -MESSAGE: Method 'ScanTag(ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ProtoWire.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ScanFieldValue(int wireType, ReadOnlySpan buffer) -MESSAGE: Method 'ScanFieldValue(int wireType, ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ProtoWire.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ScanVarint(ReadOnlySpan buffer) -MESSAGE: Method 'ScanVarint(ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ProtoWire.cs -LINE: 65 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ScanBytes(ReadOnlySpan buffer) -MESSAGE: Method 'ScanBytes(ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ProtoWire.cs -LINE: 74 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: EncodeVarint(ulong value) -MESSAGE: Method 'EncodeVarint(ulong value)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/CommitQueue.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: EnqueueAsync(T item, CancellationToken ct) -MESSAGE: Method 'EnqueueAsync(T item, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/CommitQueue.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: EnqueueAsync(T item, CancellationToken ct) -MESSAGE: Method 'EnqueueAsync(T item, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/CommitQueue.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: DequeueAsync(CancellationToken ct) -MESSAGE: Method 'DequeueAsync(CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/CommitQueue.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryDequeue(T? item) -MESSAGE: Method 'TryDequeue(T? item)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Name -MESSAGE: Property 'Name' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Store -MESSAGE: Property 'Store' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Log -MESSAGE: Property 'Log' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Track -MESSAGE: Property 'Track' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Observer -MESSAGE: Property 'Observer' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Recovering -MESSAGE: Property 'Recovering' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftConfig.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ScaleUp -MESSAGE: Property 'ScaleUp' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftEntry.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ToWire() -MESSAGE: Method 'ToWire()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftEntry.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FromWire(RaftEntryWire wire) -MESSAGE: Method 'FromWire(RaftEntryWire wire)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Entries -MESSAGE: Property 'Entries' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Append(int term, string command) -MESSAGE: Method 'Append(int term, string command)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 26 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AppendWithTimestamp(int term, string command, DateTime timestamp) -MESSAGE: Method 'AppendWithTimestamp(int term, string command, DateTime timestamp)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 26 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AppendWithTimestamp(int term, string command, DateTime timestamp) -MESSAGE: Method 'AppendWithTimestamp(int term, string command, DateTime timestamp)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 26 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AppendWithTimestamp(int term, string command, DateTime timestamp) -MESSAGE: Method 'AppendWithTimestamp(int term, string command, DateTime timestamp)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 36 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: AppendReplicated(RaftLogEntry entry) -MESSAGE: Method 'AppendReplicated(RaftLogEntry entry)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 44 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ReplaceWithSnapshot(RaftSnapshot snapshot) -MESSAGE: Method 'ReplaceWithSnapshot(RaftSnapshot snapshot)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 55 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Compact(long upToIndex) -MESSAGE: Method 'Compact(long upToIndex)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 65 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: PersistAsync(string path, CancellationToken ct) -MESSAGE: Method 'PersistAsync(string path, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 76 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: LoadAsync(string path, CancellationToken ct) -MESSAGE: Method 'LoadAsync(string path, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 91 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BaseIndex -MESSAGE: Property 'BaseIndex' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftLog.cs -LINE: 92 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Entries -MESSAGE: Property 'Entries' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftMembership.cs LINE: 30 CATEGORY: MissingParam @@ -6906,146 +406,6 @@ MESSAGE: Method 'TryParse(string command)' is missing doc --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftPeerState.cs -LINE: 55 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RefreshCurrent(TimeSpan window) -MESSAGE: Method 'RefreshCurrent(TimeSpan window)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftPeerState.cs -LINE: 62 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsCurrent(TimeSpan electionTimeout) -MESSAGE: Method 'IsCurrent(TimeSpan electionTimeout)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftPeerState.cs -LINE: 71 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsHealthy(TimeSpan healthThreshold) -MESSAGE: Method 'IsHealthy(TimeSpan healthThreshold)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftReplicator.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: BacktrackNextIndex(long nextIndex) -MESSAGE: Method 'BacktrackNextIndex(long nextIndex)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftReplicator.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Replicate(RaftLogEntry entry, IReadOnlyList followers) -MESSAGE: Method 'Replicate(RaftLogEntry entry, IReadOnlyList followers)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftReplicator.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ReplicateAsync(string leaderId, RaftLogEntry entry, IReadOnlyList followers, IRaftTransport? transport, CancellationToken ct) -MESSAGE: Method 'ReplicateAsync(string leaderId, RaftLogEntry entry, IReadOnlyList followers, IRaftTransport? transport, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftRpcContracts.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Term -MESSAGE: Property 'Term' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftRpcContracts.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CandidateId -MESSAGE: Property 'CandidateId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftRpcContracts.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Granted -MESSAGE: Property 'Granted' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftRpcContracts.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: FollowerId -MESSAGE: Property 'FollowerId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftRpcContracts.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Success -MESSAGE: Property 'Success' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshot.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastIncludedIndex -MESSAGE: Property 'LastIncludedIndex' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshot.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastIncludedTerm -MESSAGE: Property 'LastIncludedTerm' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshot.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Data -MESSAGE: Property 'Data' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshotCheckpoint.cs LINE: 34 CATEGORY: MissingParam @@ -7056,36 +416,6 @@ MESSAGE: Method 'AddChunk(byte[] chunk)' is missing documen --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshotStore.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: RaftSnapshotStore(string? snapshotPath) -MESSAGE: Constructor 'RaftSnapshotStore(string? snapshotPath)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshotStore.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SaveAsync(RaftSnapshot snapshot, CancellationToken ct) -MESSAGE: Method 'SaveAsync(RaftSnapshot snapshot, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSnapshotStore.cs -LINE: 30 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: LoadAsync(CancellationToken ct) -MESSAGE: Method 'LoadAsync(CancellationToken ct)' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftStateExtensions.cs LINE: 9 CATEGORY: MissingDoc @@ -7096,146 +426,6 @@ MESSAGE: Method 'String(RaftState state)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Vote(string group) -MESSAGE: Method 'Vote(string group)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 28 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AppendEntry(string group) -MESSAGE: Method 'AppendEntry(string group)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 34 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Proposal(string group) -MESSAGE: Method 'Proposal(string group)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 40 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RemovePeer(string group) -MESSAGE: Method 'RemovePeer(string group)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 46 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Reply(string id) -MESSAGE: Method 'Reply(string id)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 52 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CatchupReply(string id) -MESSAGE: Method 'CatchupReply(string id)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftSubjects.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TimeoutNow(string group) -MESSAGE: Method 'TimeoutNow(string group)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftTermState.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CurrentTerm -MESSAGE: Property 'CurrentTerm' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftTermState.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: VotedFor -MESSAGE: Property 'VotedFor' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWal.cs -LINE: 44 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: RaftWal(string path) -MESSAGE: Constructor 'RaftWal(string path)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWal.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AppendAsync(RaftLogEntry entry) -MESSAGE: Method 'AppendAsync(RaftLogEntry entry)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWal.cs -LINE: 93 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CompactAsync(long upToIndex) -MESSAGE: Method 'CompactAsync(long upToIndex)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWal.cs -LINE: 121 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Load(string path) -MESSAGE: Method 'Load(string path)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWal.cs -LINE: 144 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/SnapshotChunkEnumerator.cs LINE: 89 CATEGORY: MissingDoc @@ -7246,236 +436,6 @@ MESSAGE: Method 'GetEnumerator()' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteCompressionCodec.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Compress(ReadOnlySpan data, RouteCompressionLevel level) -MESSAGE: Method 'Compress(ReadOnlySpan data, RouteCompressionLevel level)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteCompressionCodec.cs -LINE: 53 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Compress(ReadOnlySpan data, RouteCompressionLevel level) -MESSAGE: Method 'Compress(ReadOnlySpan data, RouteCompressionLevel level)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteCompressionCodec.cs -LINE: 68 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decompress(ReadOnlySpan compressed) -MESSAGE: Method 'Decompress(ReadOnlySpan compressed)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteCompressionCodec.cs -LINE: 82 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: NegotiateCompression(string localLevel, string remoteLevel) -MESSAGE: Method 'NegotiateCompression(string localLevel, string remoteLevel)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteCompressionCodec.cs -LINE: 82 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: NegotiateCompression(string localLevel, string remoteLevel) -MESSAGE: Method 'NegotiateCompression(string localLevel, string remoteLevel)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteCompressionCodec.cs -LINE: 99 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsCompressed(ReadOnlySpan data) -MESSAGE: Method 'IsCompressed(ReadOnlySpan data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteManager.cs -LINE: 896 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HasSolicitedRoute(string remoteServerId) -MESSAGE: Method 'HasSolicitedRoute(string remoteServerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteManager.cs -LINE: 908 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: UpgradeRouteToSolicited(string remoteServerId) -MESSAGE: Method 'UpgradeRouteToSolicited(string remoteServerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Routes/RouteManager.cs -LINE: 929 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsDuplicateServerName(string remoteServerId) -MESSAGE: Method 'IsDuplicateServerName(string remoteServerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/AcceptLoopErrorHandler.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: AcceptLoopErrorHandler(Action callback) -MESSAGE: Constructor 'AcceptLoopErrorHandler(Action callback)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/AcceptLoopErrorHandler.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: OnAcceptError(Exception ex, EndPoint? endpoint, TimeSpan delay) -MESSAGE: Method 'OnAcceptError(Exception ex, EndPoint? endpoint, TimeSpan delay)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/RateCounter.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: RateCounter(long limit) -MESSAGE: Constructor 'RateCounter(long limit)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/RateCounter.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Allow() -MESSAGE: Method 'Allow()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/RateCounter.cs -LINE: 45 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: CountBlocked() -MESSAGE: Method 'CountBlocked()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/ServerUtilities.cs -LINE: 19 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseHostPort(string hostPort, int defaultPort) -MESSAGE: Method 'ParseHostPort(string hostPort, int defaultPort)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/ServerUtilities.cs -LINE: 19 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseHostPort(string hostPort, int defaultPort) -MESSAGE: Method 'ParseHostPort(string hostPort, int defaultPort)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/ServerUtilities.cs -LINE: 66 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RedactUrlString(string url) -MESSAGE: Method 'RedactUrlString(string url)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Server/ServerUtilities.cs -LINE: 78 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RedactUrlList(IEnumerable urls) -MESSAGE: Method 'RedactUrlList(IEnumerable urls)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/SlopwatchSuppressAttribute.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: RuleId -MESSAGE: Property 'RuleId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/SlopwatchSuppressAttribute.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Justification -MESSAGE: Property 'Justification' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/SlowConsumerTracker.cs -LINE: 33 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordSlowConsumer(ClientKind kind) -MESSAGE: Method 'RecordSlowConsumer(ClientKind kind)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/SlowConsumerTracker.cs -LINE: 43 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetCount(ClientKind kind) -MESSAGE: Method 'GetCount(ClientKind kind)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/SlowConsumerTracker.cs -LINE: 50 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: OnThresholdExceeded(Action callback) -MESSAGE: Method 'OnThresholdExceeded(Action callback)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RemoteSubscription.cs LINE: 11 CATEGORY: MissingDoc @@ -7496,706 +456,6 @@ MESSAGE: Method 'FromRemoteSubscription(RemoteSubscription sub)' is missing XML --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: RouteResultCache(int capacity) -MESSAGE: Constructor 'RouteResultCache(int capacity)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Generation -MESSAGE: Property 'Generation' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Hits -MESSAGE: Property 'Hits' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 30 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Misses -MESSAGE: Property 'Misses' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Count -MESSAGE: Property 'Count' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 39 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryGet(string subject, SubListResult? result) -MESSAGE: Method 'TryGet(string subject, SubListResult? result)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 39 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryGet(string subject, SubListResult? result) -MESSAGE: Method 'TryGet(string subject, SubListResult? result)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Set(string subject, SubListResult result) -MESSAGE: Method 'Set(string subject, SubListResult result)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/RouteResultCache.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Set(string subject, SubListResult result) -MESSAGE: Method 'Set(string subject, SubListResult result)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 31 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Create(string source, string destination) -MESSAGE: Method 'Create(string source, string destination)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 31 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Create(string source, string destination) -MESSAGE: Method 'Create(string source, string destination)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 126 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: NewSubjectTransformWithStrict(string source, string destination, bool strict) -MESSAGE: Method 'NewSubjectTransformWithStrict(string source, string destination, bool strict)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 135 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: NewSubjectTransformStrict(string source, string destination) -MESSAGE: Method 'NewSubjectTransformStrict(string source, string destination)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 138 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ValidateMapping(string destination) -MESSAGE: Method 'ValidateMapping(string destination)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 156 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TransformTokenize(string subject) -MESSAGE: Method 'TransformTokenize(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 173 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TransformUntokenize(string subject) -MESSAGE: Method 'TransformUntokenize(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 188 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Reverse() -MESSAGE: Method 'Reverse()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 233 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Apply(string subject) -MESSAGE: Method 'Apply(string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 251 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TransformSubject(string subject) -MESSAGE: Method 'TransformSubject(string subject)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs -LINE: 888 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: TransformOp(TransformType type) -MESSAGE: Constructor 'TransformOp(TransformType type)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListCacheSweeper.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ScheduleSweep(Action sweep) -MESSAGE: Method 'ScheduleSweep(Action sweep)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListCacheSweeper.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TriggerSweepAsync(Action sweep) -MESSAGE: Method 'TriggerSweepAsync(Action sweep)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListResult.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: PlainSubs -MESSAGE: Property 'PlainSubs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListResult.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: QueueSubs -MESSAGE: Property 'QueueSubs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListResult.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: SubListResult(Subscription[] plainSubs, Subscription[][] queueSubs) -MESSAGE: Constructor 'SubListResult(Subscription[] plainSubs, Subscription[][] queueSubs)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumSubs -MESSAGE: Property 'NumSubs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 6 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumCache -MESSAGE: Property 'NumCache' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumInserts -MESSAGE: Property 'NumInserts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumRemoves -MESSAGE: Property 'NumRemoves' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: NumMatches -MESSAGE: Property 'NumMatches' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CacheHitRate -MESSAGE: Property 'CacheHitRate' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxFanout -MESSAGE: Property 'MaxFanout' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AvgFanout -MESSAGE: Property 'AvgFanout' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TotalFanout -MESSAGE: Property 'TotalFanout' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CacheEntries -MESSAGE: Property 'CacheEntries' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CacheHits -MESSAGE: Property 'CacheHits' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubListStats.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Add(SubListStats stat) -MESSAGE: Method 'Add(SubListStats stat)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/Subscription.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/Subscription.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Queue -MESSAGE: Property 'Queue' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/Subscription.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sid -MESSAGE: Property 'Sid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/Subscription.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Client -MESSAGE: Property 'Client' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/Subscription.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ServiceImport -MESSAGE: Property 'ServiceImport' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/Subscription.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: StreamImport -MESSAGE: Property 'StreamImport' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/OcspConfig.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Mode -MESSAGE: Property 'Mode' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/OcspConfig.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: OverrideUrls -MESSAGE: Property 'OverrideUrls' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/OcspPeerConfig.cs -LINE: 108 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/OcspPeerConfig.cs -LINE: 112 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Issuer -MESSAGE: Property 'Issuer' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/OcspPeerConfig.cs -LINE: 116 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Fingerprint -MESSAGE: Property 'Fingerprint' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/OcspPeerConfig.cs -LINE: 120 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Raw -MESSAGE: Property 'Raw' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: PeekableStream(Stream inner) -MESSAGE: Constructor 'PeekableStream(Stream inner)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: PeekAsync(int count, CancellationToken ct) -MESSAGE: Method 'PeekAsync(int count, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ReadAsync(Memory buffer, CancellationToken ct) -MESSAGE: Method 'ReadAsync(Memory buffer, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 37 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Read(byte[] buffer, int offset, int count) -MESSAGE: Method 'Read(byte[] buffer, int offset, int count)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 51 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ReadAsync(byte[] buffer, int offset, int count, CancellationToken ct) -MESSAGE: Method 'ReadAsync(byte[] buffer, int offset, int count, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 55 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Write(byte[] buffer, int offset, int count) -MESSAGE: Method 'Write(byte[] buffer, int offset, int count)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 56 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: WriteAsync(byte[] buffer, int offset, int count, CancellationToken ct) -MESSAGE: Method 'WriteAsync(byte[] buffer, int offset, int count, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 57 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: WriteAsync(ReadOnlyMemory buffer, CancellationToken ct) -MESSAGE: Method 'WriteAsync(ReadOnlyMemory buffer, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 58 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Flush() -MESSAGE: Method 'Flush()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 59 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FlushAsync(CancellationToken ct) -MESSAGE: Method 'FlushAsync(CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 72 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Seek(long offset, SeekOrigin origin) -MESSAGE: Method 'Seek(long offset, SeekOrigin origin)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 73 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetLength(long value) -MESSAGE: Method 'SetLength(long value)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/PeekableStream.cs -LINE: 75 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose(bool disposing) -MESSAGE: Method 'Dispose(bool disposing)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 24 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: TlsCertificateProvider(string certPath, string? keyPath) -MESSAGE: Constructor 'TlsCertificateProvider(string certPath, string? keyPath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 24 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: TlsCertificateProvider(string certPath, string? keyPath) -MESSAGE: Constructor 'TlsCertificateProvider(string certPath, string? keyPath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Constructor -SIGNATURE: TlsCertificateProvider(X509Certificate2 cert) -MESSAGE: Constructor 'TlsCertificateProvider(X509Certificate2 cert)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 47 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SwapCertificate(string certPath, string? keyPath) -MESSAGE: Method 'SwapCertificate(string certPath, string? keyPath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 47 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SwapCertificate(string certPath, string? keyPath) -MESSAGE: Method 'SwapCertificate(string certPath, string? keyPath)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 57 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SwapCertificate(X509Certificate2 newCert) -MESSAGE: Method 'SwapCertificate(X509Certificate2 newCert)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 73 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SwapSslOptions(SslServerAuthenticationOptions newOptions) -MESSAGE: Method 'SwapSslOptions(SslServerAuthenticationOptions newOptions)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsCertificateProvider.cs -LINE: 85 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsConnectionWrapper.cs LINE: 15 CATEGORY: MissingDoc @@ -8206,36 +466,6 @@ MESSAGE: Method 'NegotiateAsync(Socket socket, Stream networkStream, NatsOptions --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsRateLimiter.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: TlsRateLimiter(long tokensPerSecond) -MESSAGE: Constructor 'TlsRateLimiter(long tokensPerSecond)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsRateLimiter.cs -LINE: 22 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: WaitAsync(CancellationToken ct) -MESSAGE: Method 'WaitAsync(CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Tls/TlsRateLimiter.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketOptionsValidator.cs LINE: 18 CATEGORY: MissingDoc @@ -8246,136 +476,6 @@ MESSAGE: Method 'Validate(NatsOptions options)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CertFile -MESSAGE: Property 'CertFile' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 11 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: KeyFile -MESSAGE: Property 'KeyFile' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CaFile -MESSAGE: Property 'CaFile' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 13 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: RequireClientCert -MESSAGE: Property 'RequireClientCert' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: InsecureSkipVerify -MESSAGE: Property 'InsecureSkipVerify' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 44 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HasChangedFrom(WebSocketTlsConfig? other) -MESSAGE: Method 'HasChangedFrom(WebSocketTlsConfig? other)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FromOptions(NatsOptions options) -MESSAGE: Method 'FromOptions(NatsOptions options)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsAuthConfig.cs -LINE: 5 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ComputeAuthOverride(WebSocketOptions options) -MESSAGE: Method 'ComputeAuthOverride(WebSocketOptions options)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsAuthConfig.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Apply(WebSocketOptions options) -MESSAGE: Method 'Apply(WebSocketOptions options)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsCompression.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Negotiate(string? extensionHeader) -MESSAGE: Method 'Negotiate(string? extensionHeader)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsCompression.cs -LINE: 161 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Compress(ReadOnlySpan data) -MESSAGE: Method 'Compress(ReadOnlySpan data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsCompression.cs -LINE: 193 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decompress(List compressedBuffers, int maxPayload) -MESSAGE: Method 'Decompress(List compressedBuffers, int maxPayload)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsCompression.cs -LINE: 193 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decompress(List compressedBuffers, int maxPayload) -MESSAGE: Method 'Decompress(List compressedBuffers, int maxPayload)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConstants.cs LINE: 64 CATEGORY: MissingDoc @@ -8384,203 +484,3 @@ MEMBER: Method SIGNATURE: IsControlFrame(int opcode) MESSAGE: Method 'IsControlFrame(int opcode)' is missing XML documentation. ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsOriginChecker.cs -LINE: 12 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: WsOriginChecker(bool sameOrigin, List? allowedOrigins) -MESSAGE: Constructor 'WsOriginChecker(bool sameOrigin, List? allowedOrigins)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsOriginChecker.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CheckOrigin(string? origin, string requestHost, bool isTls) -MESSAGE: Method 'CheckOrigin(string? origin, string requestHost, bool isTls)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsOriginChecker.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CheckOrigin(string? origin, string requestHost, bool isTls) -MESSAGE: Method 'CheckOrigin(string? origin, string requestHost, bool isTls)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsOriginChecker.cs -LINE: 32 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CheckOrigin(string? origin, string requestHost, bool isTls) -MESSAGE: Method 'CheckOrigin(string? origin, string requestHost, bool isTls)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: WsReadInfo(bool expectMask) -MESSAGE: Constructor 'WsReadInfo(bool expectMask)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 45 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetMaskKey(ReadOnlySpan key) -MESSAGE: Method 'SetMaskKey(ReadOnlySpan key)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 56 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Unmask(Span buf) -MESSAGE: Method 'Unmask(Span buf)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 100 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload) -MESSAGE: Method 'ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 100 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload) -MESSAGE: Method 'ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 100 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload) -MESSAGE: Method 'ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsReadInfo.cs -LINE: 100 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload) -MESSAGE: Method 'ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: RejectNoMaskingForTest -MESSAGE: Property 'RejectNoMaskingForTest' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryUpgradeAsync(Stream inputStream, Stream outputStream, WebSocketOptions options, CancellationToken ct) -MESSAGE: Method 'TryUpgradeAsync(Stream inputStream, Stream outputStream, WebSocketOptions options, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 181 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ComputeAcceptKey(string clientKey) -MESSAGE: Method 'ComputeAcceptKey(string clientKey)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 203 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsWsUrl(string? url) -MESSAGE: Method 'IsWsUrl(string? url)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 215 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsWssUrl(string? url) -MESSAGE: Method 'IsWssUrl(string? url)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 227 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExtractBearerToken(string? authHeader) -MESSAGE: Method 'ExtractBearerToken(string? authHeader)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 243 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseQueryString(string queryString) -MESSAGE: Method 'ParseQueryString(string queryString)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 289 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FailUnauthorizedAsync(Stream output, string reason) -MESSAGE: Method 'FailUnauthorizedAsync(Stream output, string reason)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsUpgrade.cs -LINE: 289 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: FailUnauthorizedAsync(Stream output, string reason) -MESSAGE: Method 'FailUnauthorizedAsync(Stream output, string reason)' is missing documentation. - diff --git a/src-docs-issues.md b/src-docs-issues.md index 14296b9..93ec035 100644 --- a/src-docs-issues.md +++ b/src-docs-issues.md @@ -1,8 +1,8 @@ # Documentation Analysis Report Files Scanned: 273 -Files With Issues: 186 -Total Issues: 1174 +Files With Issues: 166 +Total Issues: 858 ## Issues @@ -716,146 +716,6 @@ MESSAGE: Property 'Type' is missing XML documentation --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'Expand(string pattern, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/Jwt/PermissionTemplates.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags) -MESSAGE: Method 'ExpandAll(IEnumerable patterns, string name, string subject, string accountName, string accountSubject, string[] userTags, string[] accountTags)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Auth/JwtAuthenticator.cs LINE: 15 CATEGORY: MissingDoc @@ -1886,166 +1746,6 @@ MESSAGE: Property 'IsNonReloadable' is missing XML documentation --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 68 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetConnectDelay(TimeSpan delay) -MESSAGE: Method 'SetConnectDelay(TimeSpan delay)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartMigrateTimer(TimerCallback callback, TimeSpan delay) -MESSAGE: Method 'StartMigrateTimer(TimerCallback callback, TimeSpan delay)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 74 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartMigrateTimer(TimerCallback callback, TimeSpan delay) -MESSAGE: Method 'StartMigrateTimer(TimerCallback callback, TimeSpan delay)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 96 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SaveTlsHostname(string url) -MESSAGE: Method 'SaveTlsHostname(string url)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 106 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SaveUserPassword(string url) -MESSAGE: Method 'SaveUserPassword(string url)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 127 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Host -MESSAGE: Property 'Host' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 128 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Port -MESSAGE: Property 'Port' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 131 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Username -MESSAGE: Property 'Username' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 132 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Password -MESSAGE: Property 'Password' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 133 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AuthTimeout -MESSAGE: Property 'AuthTimeout' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 136 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Advertise -MESSAGE: Property 'Advertise' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 139 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: WriteDeadline -MESSAGE: Property 'WriteDeadline' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 159 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DenyExports -MESSAGE: Property 'DenyExports' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 160 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DenyImports -MESSAGE: Property 'DenyImports' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 161 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ExportSubjects -MESSAGE: Property 'ExportSubjects' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/LeafNodeOptions.cs -LINE: 162 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ImportSubjects -MESSAGE: Property 'ImportSubjects' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Configuration/NatsConfLexer.cs LINE: 66 CATEGORY: MissingDoc @@ -3326,306 +3026,6 @@ MESSAGE: Method 'MatchPartsAgainstFragment(ReadOnlyMemory[] parts, ReadOnl --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 34 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: HashWheel() -MESSAGE: Constructor 'HashWheel()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Add(ulong seq, long expires) -MESSAGE: Method 'Add(ulong seq, long expires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Add(ulong seq, long expires) -MESSAGE: Method 'Add(ulong seq, long expires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 92 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Remove(ulong seq, long expires) -MESSAGE: Method 'Remove(ulong seq, long expires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 92 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Remove(ulong seq, long expires) -MESSAGE: Method 'Remove(ulong seq, long expires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 123 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Update(ulong seq, long oldExpires, long newExpires) -MESSAGE: Method 'Update(ulong seq, long oldExpires, long newExpires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 123 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Update(ulong seq, long oldExpires, long newExpires) -MESSAGE: Method 'Update(ulong seq, long oldExpires, long newExpires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 123 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Update(ulong seq, long oldExpires, long newExpires) -MESSAGE: Method 'Update(ulong seq, long oldExpires, long newExpires)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 135 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpireTasks(Func callback) -MESSAGE: Method 'ExpireTasks(Func callback)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 148 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpireTasksInternal(long ts, Func callback) -MESSAGE: Method 'ExpireTasksInternal(long ts, Func callback)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 148 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ExpireTasksInternal(long ts, Func callback) -MESSAGE: Method 'ExpireTasksInternal(long ts, Func callback)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 219 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetNextExpiration(long before) -MESSAGE: Method 'GetNextExpiration(long before)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 235 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Encode(ulong highSeq) -MESSAGE: Method 'Encode(ulong highSeq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 282 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan buf) -MESSAGE: Method 'Decode(ReadOnlySpan buf)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 415 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Entries -MESSAGE: Property 'Entries' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Internal/TimeHashWheel/HashWheel.cs -LINE: 418 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Lowest -MESSAGE: Property 'Lowest' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Id -MESSAGE: Property 'Id' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Kind -MESSAGE: Property 'Kind' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 16 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsInternal -MESSAGE: Property 'IsInternal' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 17 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Account -MESSAGE: Property 'Account' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ClientOpts -MESSAGE: Property 'ClientOpts' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 19 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Permissions -MESSAGE: Property 'Permissions' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: InternalClient(ulong id, ClientKind kind, Account account) -MESSAGE: Constructor 'InternalClient(ulong id, ClientKind kind, Account account)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 39 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SendMessage(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload) -MESSAGE: Method 'SendMessage(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 45 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SendMessageNoFlush(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload) -MESSAGE: Method 'SendMessageNoFlush(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 52 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SignalFlush() -MESSAGE: Method 'SignalFlush()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 54 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: QueueOutbound(ReadOnlyMemory data) -MESSAGE: Method 'QueueOutbound(ReadOnlyMemory data)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 56 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RemoveSubscription(string sid) -MESSAGE: Method 'RemoveSubscription(string sid)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 62 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: AddSubscription(Subscription sub) -MESSAGE: Method 'AddSubscription(Subscription sub)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/InternalClient.cs -LINE: 67 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subscriptions -MESSAGE: Property 'Subscriptions' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/IO/AdaptiveReadBuffer.cs LINE: 14 CATEGORY: MissingDoc @@ -4076,166 +3476,6 @@ MESSAGE: Method 'HandleConsumerLeaderStepdown(string subject)' is missing XML do --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 20 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleCreate(string subject, ReadOnlySpan payload, ConsumerManager consumerManager) -MESSAGE: Method 'HandleCreate(string subject, ReadOnlySpan payload, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 34 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleInfo(string subject, ConsumerManager consumerManager) -MESSAGE: Method 'HandleInfo(string subject, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 44 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleDelete(string subject, ConsumerManager consumerManager) -MESSAGE: Method 'HandleDelete(string subject, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 56 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleNames(string subject, ReadOnlySpan payload, ConsumerManager consumerManager) -MESSAGE: Method 'HandleNames(string subject, ReadOnlySpan payload, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 73 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleList(string subject, ReadOnlySpan payload, ConsumerManager consumerManager) -MESSAGE: Method 'HandleList(string subject, ReadOnlySpan payload, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 108 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandlePause(string subject, ReadOnlySpan payload, ConsumerManager consumerManager) -MESSAGE: Method 'HandlePause(string subject, ReadOnlySpan payload, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 134 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleReset(string subject, ConsumerManager consumerManager) -MESSAGE: Method 'HandleReset(string subject, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 146 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleUnpin(string subject, ConsumerManager consumerManager) -MESSAGE: Method 'HandleUnpin(string subject, ConsumerManager consumerManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 158 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HandleNext(string subject, ReadOnlySpan payload, ConsumerManager consumerManager, StreamManager streamManager) -MESSAGE: Method 'HandleNext(string subject, ReadOnlySpan payload, ConsumerManager consumerManager, StreamManager streamManager)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 194 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 194 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 194 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 194 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredCreateAsync(string subject, byte[] payload, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 233 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredDeleteAsync(string subject, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredDeleteAsync(string subject, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 233 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredDeleteAsync(string subject, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredDeleteAsync(string subject, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/ConsumerApiHandlers.cs -LINE: 233 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: HandleClusteredDeleteAsync(string subject, JetStreamMetaGroup metaGroup, CancellationToken ct) -MESSAGE: Method 'HandleClusteredDeleteAsync(string subject, JetStreamMetaGroup metaGroup, CancellationToken ct)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/Handlers/DirectApiHandlers.cs LINE: 10 CATEGORY: MissingDoc @@ -4266,156 +3506,6 @@ MESSAGE: Property 'Description' is missing XML documentation --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 17 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct) -MESSAGE: Method 'ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 17 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct) -MESSAGE: Method 'ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 17 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct) -MESSAGE: Method 'ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 17 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct) -MESSAGE: Method 'ForwardAsync(string subject, ReadOnlyMemory payload, string leaderName, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 39 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: DefaultLeaderForwarder(TimeSpan? timeout) -MESSAGE: Constructor 'DefaultLeaderForwarder(TimeSpan? timeout)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 76 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamApiRouter() -MESSAGE: Constructor 'JetStreamApiRouter()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 81 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: JetStreamApiRouter(StreamManager streamManager, ConsumerManager consumerManager, JetStream.Cluster.JetStreamMetaGroup? metaGroup, ILeaderForwarder? forwarder) -MESSAGE: Constructor 'JetStreamApiRouter(StreamManager streamManager, ConsumerManager consumerManager, JetStream.Cluster.JetStreamMetaGroup? metaGroup, ILeaderForwarder? forwarder)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 107 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsLeaderRequired(string subject) -MESSAGE: Method 'IsLeaderRequired(string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 168 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardToLeader(string subject, ReadOnlySpan payload, string leaderName) -MESSAGE: Method 'ForwardToLeader(string subject, ReadOnlySpan payload, string leaderName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 168 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardToLeader(string subject, ReadOnlySpan payload, string leaderName) -MESSAGE: Method 'ForwardToLeader(string subject, ReadOnlySpan payload, string leaderName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 168 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ForwardToLeader(string subject, ReadOnlySpan payload, string leaderName) -MESSAGE: Method 'ForwardToLeader(string subject, ReadOnlySpan payload, string leaderName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 184 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RouteAsync(string subject, ReadOnlyMemory payload, CancellationToken ct) -MESSAGE: Method 'RouteAsync(string subject, ReadOnlyMemory payload, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 184 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RouteAsync(string subject, ReadOnlyMemory payload, CancellationToken ct) -MESSAGE: Method 'RouteAsync(string subject, ReadOnlyMemory payload, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 184 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RouteAsync(string subject, ReadOnlyMemory payload, CancellationToken ct) -MESSAGE: Method 'RouteAsync(string subject, ReadOnlyMemory payload, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Api/JetStreamApiRouter.cs -LINE: 222 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Route(string subject, ReadOnlySpan payload) -MESSAGE: Method 'Route(string subject, ReadOnlySpan payload)' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Cluster/AssetPlacementPlanner.cs LINE: 7 CATEGORY: MissingDoc @@ -4766,476 +3856,6 @@ MESSAGE: Method 'PurgeBelow(ulong floor)' is missing docume --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Register(string groupName, string consumerId, int priority) -MESSAGE: Method 'Register(string groupName, string consumerId, int priority)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Register(string groupName, string consumerId, int priority) -MESSAGE: Method 'Register(string groupName, string consumerId, int priority)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 22 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Register(string groupName, string consumerId, int priority) -MESSAGE: Method 'Register(string groupName, string consumerId, int priority)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 44 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Unregister(string groupName, string consumerId) -MESSAGE: Method 'Unregister(string groupName, string consumerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 44 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Unregister(string groupName, string consumerId) -MESSAGE: Method 'Unregister(string groupName, string consumerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 64 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetActiveConsumer(string groupName) -MESSAGE: Method 'GetActiveConsumer(string groupName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 89 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsActive(string groupName, string consumerId) -MESSAGE: Method 'IsActive(string groupName, string consumerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 89 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsActive(string groupName, string consumerId) -MESSAGE: Method 'IsActive(string groupName, string consumerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 100 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AssignPinId(string groupName, string consumerId) -MESSAGE: Method 'AssignPinId(string groupName, string consumerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 100 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AssignPinId(string groupName, string consumerId) -MESSAGE: Method 'AssignPinId(string groupName, string consumerId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 118 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ValidatePinId(string groupName, string pinId) -MESSAGE: Method 'ValidatePinId(string groupName, string pinId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 118 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ValidatePinId(string groupName, string pinId) -MESSAGE: Method 'ValidatePinId(string groupName, string pinId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 134 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: UnassignPinId(string groupName) -MESSAGE: Method 'UnassignPinId(string groupName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 147 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Lock -MESSAGE: Property 'Lock' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 148 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Members -MESSAGE: Property 'Members' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PriorityGroupManager.cs -LINE: 149 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CurrentPinId -MESSAGE: Property 'CurrentPinId' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DeliverSubject -MESSAGE: Property 'DeliverSubject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 86 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Enqueue(ConsumerHandle consumer, StoredMessage message) -MESSAGE: Method 'Enqueue(ConsumerHandle consumer, StoredMessage message)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 134 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: StartDeliveryLoop(ConsumerHandle consumer, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct) -MESSAGE: Method 'StartDeliveryLoop(ConsumerHandle consumer, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 157 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: StopDeliveryLoop() -MESSAGE: Method 'StopDeliveryLoop()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 169 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct) -MESSAGE: Method 'StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 169 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct) -MESSAGE: Method 'StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 169 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct) -MESSAGE: Method 'StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 169 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct) -MESSAGE: Method 'StartGatherLoop(ConsumerHandle consumer, IStreamStore store, Func, ReadOnlyMemory, CancellationToken, ValueTask> sendMessage, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 197 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Signal(ConsumerSignal signal) -MESSAGE: Method 'Signal(ConsumerSignal signal)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 206 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldDeliverPublic(ConsumerConfig config, string subject) -MESSAGE: Method 'ShouldDeliverPublic(ConsumerConfig config, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 206 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ShouldDeliverPublic(ConsumerConfig config, string subject) -MESSAGE: Method 'ShouldDeliverPublic(ConsumerConfig config, string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 465 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsData -MESSAGE: Property 'IsData' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 466 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsFlowControl -MESSAGE: Property 'IsFlowControl' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 467 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsHeartbeat -MESSAGE: Property 'IsHeartbeat' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 468 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Message -MESSAGE: Property 'Message' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/PushConsumerEngine.cs -LINE: 469 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: AvailableAtUtc -MESSAGE: Property 'AvailableAtUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: RedeliveryTracker(int[] backoffMs) -MESSAGE: Constructor 'RedeliveryTracker(int[] backoffMs)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 35 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: RedeliveryTracker(int maxDeliveries, long ackWaitMs, long[]? backoffMs) -MESSAGE: Constructor 'RedeliveryTracker(int maxDeliveries, long ackWaitMs, long[]? backoffMs)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 46 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Schedule(ulong seq, int deliveryCount, int ackWaitMs) -MESSAGE: Method 'Schedule(ulong seq, int deliveryCount, int ackWaitMs)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 61 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Schedule(ulong seq, DateTimeOffset deadline) -MESSAGE: Method 'Schedule(ulong seq, DateTimeOffset deadline)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 68 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetDue() -MESSAGE: Method 'GetDue()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 87 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetDue(DateTimeOffset now) -MESSAGE: Method 'GetDue(DateTimeOffset now)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 126 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Acknowledge(ulong seq) -MESSAGE: Method 'Acknowledge(ulong seq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 134 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsMaxDeliveries(ulong seq, int maxDeliver) -MESSAGE: Method 'IsMaxDeliveries(ulong seq, int maxDeliver)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 146 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsMaxDeliveries(ulong seq) -MESSAGE: Method 'IsMaxDeliveries(ulong seq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 156 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IncrementDeliveryCount(ulong seq) -MESSAGE: Method 'IncrementDeliveryCount(ulong seq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 163 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: GetBackoffDelay(int deliveryCount) -MESSAGE: Method 'GetBackoffDelay(int deliveryCount)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 175 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsTracking(ulong seq) -MESSAGE: Method 'IsTracking(ulong seq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 177 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: TrackedCount -MESSAGE: Property 'TrackedCount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 194 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DeadlineUtc -MESSAGE: Property 'DeadlineUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/RedeliveryTracker.cs -LINE: 195 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DeliveryCount -MESSAGE: Property 'DeliveryCount' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Consumers/SampleTracker.cs LINE: 20 CATEGORY: MissingParam @@ -5796,386 +4416,6 @@ MESSAGE: Method 'DeleteDynamicMetadata(Dictionary metadata)' is --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 99 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: MirrorCoordinator(IStreamStore targetStore) -MESSAGE: Constructor 'MirrorCoordinator(IStreamStore targetStore)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 114 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: OnOriginAppendAsync(StoredMessage message, CancellationToken ct) -MESSAGE: Method 'OnOriginAppendAsync(StoredMessage message, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 114 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: OnOriginAppendAsync(StoredMessage message, CancellationToken ct) -MESSAGE: Method 'OnOriginAppendAsync(StoredMessage message, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 138 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryEnqueue(StoredMessage message) -MESSAGE: Method 'TryEnqueue(StoredMessage message)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 166 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartPullSyncLoop(IStreamStore originStore, int batchSize) -MESSAGE: Method 'StartPullSyncLoop(IStreamStore originStore, int batchSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 166 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartPullSyncLoop(IStreamStore originStore, int batchSize) -MESSAGE: Method 'StartPullSyncLoop(IStreamStore originStore, int batchSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 257 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordSourceSeq(ulong seq) -MESSAGE: Method 'RecordSourceSeq(ulong seq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 273 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SetError(string message) -MESSAGE: Method 'SetError(string message)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 282 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetHealthReport(ulong? originLastSeq) -MESSAGE: Method 'GetHealthReport(ulong? originLastSeq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 304 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetMirrorInfo(string streamName) -MESSAGE: Method 'GetMirrorInfo(string streamName)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 316 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DisposeAsync() -MESSAGE: Method 'DisposeAsync()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 474 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastOriginSequence -MESSAGE: Property 'LastOriginSequence' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 475 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastSyncUtc -MESSAGE: Property 'LastSyncUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 476 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Lag -MESSAGE: Property 'Lag' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 477 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ConsecutiveFailures -MESSAGE: Property 'ConsecutiveFailures' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 478 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsRunning -MESSAGE: Property 'IsRunning' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/MirrorCoordinator.cs -LINE: 479 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsStalled -MESSAGE: Property 'IsStalled' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 105 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: SourceCoordinator(IStreamStore targetStore, StreamSourceConfig sourceConfig) -MESSAGE: Constructor 'SourceCoordinator(IStreamStore targetStore, StreamSourceConfig sourceConfig)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 162 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: OnOriginAppendAsync(StoredMessage message, CancellationToken ct) -MESSAGE: Method 'OnOriginAppendAsync(StoredMessage message, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 162 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: OnOriginAppendAsync(StoredMessage message, CancellationToken ct) -MESSAGE: Method 'OnOriginAppendAsync(StoredMessage message, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 226 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryEnqueue(StoredMessage message) -MESSAGE: Method 'TryEnqueue(StoredMessage message)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 251 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartPullSyncLoop(IStreamStore originStore, int batchSize) -MESSAGE: Method 'StartPullSyncLoop(IStreamStore originStore, int batchSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 251 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: StartPullSyncLoop(IStreamStore originStore, int batchSize) -MESSAGE: Method 'StartPullSyncLoop(IStreamStore originStore, int batchSize)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 299 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetHealthReport(ulong? originLastSeq) -MESSAGE: Method 'GetHealthReport(ulong? originLastSeq)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 338 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DisposeAsync() -MESSAGE: Method 'DisposeAsync()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 579 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsDuplicate(string msgId) -MESSAGE: Method 'IsDuplicate(string msgId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 589 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RecordMsgId(string msgId) -MESSAGE: Method 'RecordMsgId(string msgId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 600 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: PruneDedupWindow(DateTimeOffset cutoff) -MESSAGE: Method 'PruneDedupWindow(DateTimeOffset cutoff)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 645 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: SourceName -MESSAGE: Property 'SourceName' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 646 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: FilterSubject -MESSAGE: Property 'FilterSubject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 647 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastOriginSequence -MESSAGE: Property 'LastOriginSequence' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 648 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: LastSyncUtc -MESSAGE: Property 'LastSyncUtc' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 649 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Lag -MESSAGE: Property 'Lag' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 650 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ConsecutiveFailures -MESSAGE: Property 'ConsecutiveFailures' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 651 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsRunning -MESSAGE: Property 'IsRunning' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 652 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IsStalled -MESSAGE: Property 'IsStalled' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 653 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: FilteredOutCount -MESSAGE: Property 'FilteredOutCount' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/MirrorSource/SourceCoordinator.cs -LINE: 654 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: DeduplicatedCount -MESSAGE: Property 'DeduplicatedCount' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Models/CounterValue.cs LINE: 10 CATEGORY: MissingDoc @@ -6526,146 +4766,6 @@ MESSAGE: Method 'CheckExpectedLastSeq(ulong expectedLastSeq, ulong actualLastSeq --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sequence -MESSAGE: Property 'Sequence' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 34 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 35 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Payload -MESSAGE: Property 'Payload' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 36 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Timestamp -MESSAGE: Property 'Timestamp' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 49 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SnapshotAsync(StreamHandle stream, CancellationToken ct) -MESSAGE: Method 'SnapshotAsync(StreamHandle stream, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 52 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: RestoreAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct) -MESSAGE: Method 'RestoreAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 69 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateTarSnapshotAsync(StreamHandle stream, CancellationToken ct) -MESSAGE: Method 'CreateTarSnapshotAsync(StreamHandle stream, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 69 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateTarSnapshotAsync(StreamHandle stream, CancellationToken ct) -MESSAGE: Method 'CreateTarSnapshotAsync(StreamHandle stream, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 106 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RestoreTarSnapshotAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct) -MESSAGE: Method 'RestoreTarSnapshotAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 106 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RestoreTarSnapshotAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct) -MESSAGE: Method 'RestoreTarSnapshotAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 106 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RestoreTarSnapshotAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct) -MESSAGE: Method 'RestoreTarSnapshotAsync(StreamHandle stream, ReadOnlyMemory snapshot, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 177 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateTarSnapshotWithDeadlineAsync(StreamHandle stream, TimeSpan deadline, CancellationToken ct) -MESSAGE: Method 'CreateTarSnapshotWithDeadlineAsync(StreamHandle stream, TimeSpan deadline, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 177 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateTarSnapshotWithDeadlineAsync(StreamHandle stream, TimeSpan deadline, CancellationToken ct) -MESSAGE: Method 'CreateTarSnapshotWithDeadlineAsync(StreamHandle stream, TimeSpan deadline, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Snapshots/StreamSnapshotService.cs -LINE: 177 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: CreateTarSnapshotWithDeadlineAsync(StreamHandle stream, TimeSpan deadline, CancellationToken ct) -MESSAGE: Method 'CreateTarSnapshotWithDeadlineAsync(StreamHandle stream, TimeSpan deadline, CancellationToken ct)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs LINE: 73 CATEGORY: MissingParam @@ -6766,156 +4866,6 @@ MESSAGE: Method 'WriteAtomicallyAsync(string path, ReadOnlyMemory data)' i --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 42 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ConsumerFileStore(string stateFile, ConsumerConfig cfg) -MESSAGE: Constructor 'ConsumerFileStore(string stateFile, ConsumerConfig cfg)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 66 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetStarting(ulong sseq) -MESSAGE: Method 'SetStarting(ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 75 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: UpdateStarting(ulong sseq) -MESSAGE: Method 'UpdateStarting(ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 84 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Reset(ulong sseq) -MESSAGE: Method 'Reset(ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 97 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HasState() -MESSAGE: Method 'HasState()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 105 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: UpdateDelivered(ulong dseq, ulong sseq, ulong dc, long ts) -MESSAGE: Method 'UpdateDelivered(ulong dseq, ulong sseq, ulong dc, long ts)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 141 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: UpdateAcks(ulong dseq, ulong sseq) -MESSAGE: Method 'UpdateAcks(ulong dseq, ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 174 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Update(ConsumerState state) -MESSAGE: Method 'Update(ConsumerState state)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 184 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: State() -MESSAGE: Method 'State()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 210 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: BorrowState() -MESSAGE: Method 'BorrowState()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 216 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: EncodedState() -MESSAGE: Method 'EncodedState()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 223 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Type() -MESSAGE: Method 'Type()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 226 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Stop() -MESSAGE: Method 'Stop()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 243 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Delete() -MESSAGE: Method 'Delete()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerFileStore.cs -LINE: 261 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: StreamDelete() -MESSAGE: Method 'StreamDelete()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/ConsumerState.cs LINE: 29 CATEGORY: MissingDoc @@ -7126,296 +5076,6 @@ MESSAGE: Property 'Compression' is missing XML documentation --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 7 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Directory -MESSAGE: Property 'Directory' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 8 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: BlockSizeBytes -MESSAGE: Property 'BlockSizeBytes' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 9 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: IndexManifestFileName -MESSAGE: Property 'IndexManifestFileName' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 10 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxAgeMs -MESSAGE: Property 'MaxAgeMs' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 14 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxBytes -MESSAGE: Property 'MaxBytes' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Discard -MESSAGE: Property 'Discard' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: EnableCompression -MESSAGE: Property 'EnableCompression' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: EnableEncryption -MESSAGE: Property 'EnableEncryption' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: EnablePayloadIntegrityChecks -MESSAGE: Property 'EnablePayloadIntegrityChecks' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 27 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: EncryptionKey -MESSAGE: Property 'EncryptionKey' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 33 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Compression -MESSAGE: Property 'Compression' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 34 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Cipher -MESSAGE: Property 'Cipher' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 38 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxMsgsPerSubject -MESSAGE: Property 'MaxMsgsPerSubject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 44 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxCacheSize -MESSAGE: Property 'MaxCacheSize' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/FileStoreOptions.cs -LINE: 45 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CacheExpiry -MESSAGE: Property 'CacheExpiry' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetStarting(ulong sseq) -MESSAGE: Method 'SetStarting(ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 18 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: UpdateStarting(ulong sseq) -MESSAGE: Method 'UpdateStarting(ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 21 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Reset(ulong sseq) -MESSAGE: Method 'Reset(ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: HasState() -MESSAGE: Method 'HasState()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: UpdateDelivered(ulong dseq, ulong sseq, ulong dc, long ts) -MESSAGE: Method 'UpdateDelivered(ulong dseq, ulong sseq, ulong dc, long ts)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: UpdateAcks(ulong dseq, ulong sseq) -MESSAGE: Method 'UpdateAcks(ulong dseq, ulong sseq)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 34 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Update(ConsumerState state) -MESSAGE: Method 'Update(ConsumerState state)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 37 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: State() -MESSAGE: Method 'State()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 40 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: BorrowState() -MESSAGE: Method 'BorrowState()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 43 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: EncodedState() -MESSAGE: Method 'EncodedState()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 46 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Type() -MESSAGE: Method 'Type()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 49 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Stop() -MESSAGE: Method 'Stop()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 52 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Delete() -MESSAGE: Method 'Delete()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Storage/IConsumerStore.cs -LINE: 55 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: StreamDelete() -MESSAGE: Method 'StreamDelete()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs LINE: 10 CATEGORY: MissingDoc @@ -8476,136 +6136,6 @@ MESSAGE: Method 'Dispose()' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 15 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: MqttFlowController(int defaultMaxAckPending) -MESSAGE: Constructor 'MqttFlowController(int defaultMaxAckPending)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 27 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryAcquireAsync(string subscriptionId, CancellationToken ct) -MESSAGE: Method 'TryAcquireAsync(string subscriptionId, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 27 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TryAcquireAsync(string subscriptionId, CancellationToken ct) -MESSAGE: Method 'TryAcquireAsync(string subscriptionId, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AcquireAsync(string subscriptionId, CancellationToken ct) -MESSAGE: Method 'AcquireAsync(string subscriptionId, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 36 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: AcquireAsync(string subscriptionId, CancellationToken ct) -MESSAGE: Method 'AcquireAsync(string subscriptionId, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 46 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Release(string subscriptionId) -MESSAGE: Method 'Release(string subscriptionId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 60 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: GetPendingCount(string subscriptionId) -MESSAGE: Method 'GetPendingCount(string subscriptionId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 70 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: UpdateLimit(int newLimit) -MESSAGE: Method 'UpdateLimit(int newLimit)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 80 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsAtCapacity(string subscriptionId) -MESSAGE: Method 'IsAtCapacity(string subscriptionId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 90 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: RemoveSubscription(string subscriptionId) -MESSAGE: Method 'RemoveSubscription(string subscriptionId)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 99 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose() -MESSAGE: Method 'Dispose()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 117 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxAckPending -MESSAGE: Property 'MaxAckPending' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttFlowController.cs -LINE: 118 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Semaphore -MESSAGE: Property 'Semaphore' is missing XML documentation - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Mqtt/MqttPacketReader.cs LINE: 35 CATEGORY: MissingParam @@ -8936,206 +6466,6 @@ MESSAGE: Method 'Parse(ReadOnlySpan data)' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Type -MESSAGE: Property 'Type' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 25 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Operation -MESSAGE: Property 'Operation' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Subject -MESSAGE: Property 'Subject' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 27 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: ReplyTo -MESSAGE: Property 'ReplyTo' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 28 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Queue -MESSAGE: Property 'Queue' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 29 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Sid -MESSAGE: Property 'Sid' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 30 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: MaxMessages -MESSAGE: Property 'MaxMessages' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 31 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: HeaderSize -MESSAGE: Property 'HeaderSize' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 32 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Payload -MESSAGE: Property 'Payload' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 34 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Simple(CommandType type, string operation) -MESSAGE: Method 'Simple(CommandType type, string operation)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 42 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: Logger -MESSAGE: Property 'Logger' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 53 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: NatsParser(int maxPayload, ILogger? logger) -MESSAGE: Constructor 'NatsParser(int maxPayload, ILogger? logger)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 68 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryParse(ReadOnlySequence buffer, ParsedCommand command) -MESSAGE: Method 'TryParse(ReadOnlySequence buffer, ParsedCommand command)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 79 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TryParseView(ReadOnlySequence buffer, ParsedCommandView command) -MESSAGE: Method 'TryParseView(ReadOnlySequence buffer, ParsedCommandView command)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 216 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ProtoSnippet(int start, int max, ReadOnlySpan buffer) -MESSAGE: Method 'ProtoSnippet(int start, int max, ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 232 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ProtoSnippet(ReadOnlySpan buffer) -MESSAGE: Method 'ProtoSnippet(ReadOnlySpan buffer)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 471 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ParseSize(Span data) -MESSAGE: Method 'ParseSize(Span data)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 490 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SplitArgs(Span data, Span ranges) -MESSAGE: Method 'SplitArgs(Span data, Span ranges)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 490 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SplitArgs(Span data, Span ranges) -MESSAGE: Method 'SplitArgs(Span data, Span ranges)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/NatsParser.cs -LINE: 528 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: ProtocolViolationException(string message) -MESSAGE: Constructor 'ProtocolViolationException(string message)' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Protocol/ParsedCommandView.cs LINE: 8 CATEGORY: MissingDoc @@ -9906,156 +7236,6 @@ MESSAGE: Method 'Dispose()' is missing XML documentation. --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 109 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 159 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 255 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 343 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 390 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 432 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 478 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 541 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: Decode(ReadOnlySpan msg) -MESSAGE: Method 'Decode(ReadOnlySpan msg)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 569 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteId(Span dest, string id) -MESSAGE: Method 'WriteId(Span dest, string id)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 569 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteId(Span dest, string id) -MESSAGE: Method 'WriteId(Span dest, string id)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 583 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadId(ReadOnlySpan src) -MESSAGE: Method 'ReadId(ReadOnlySpan src)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 597 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteUvarint(Span buf, ulong value) -MESSAGE: Method 'WriteUvarint(Span buf, ulong value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 597 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: WriteUvarint(Span buf, ulong value) -MESSAGE: Method 'WriteUvarint(Span buf, ulong value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 614 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadUvarint(ReadOnlySpan buf, ulong value) -MESSAGE: Method 'ReadUvarint(ReadOnlySpan buf, ulong value)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/RaftWireFormat.cs -LINE: 614 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: ReadUvarint(ReadOnlySpan buf, ulong value) -MESSAGE: Method 'ReadUvarint(ReadOnlySpan buf, ulong value)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Raft/SnapshotChunkEnumerator.cs LINE: 89 CATEGORY: MissingDoc @@ -10406,196 +7586,6 @@ MESSAGE: Method 'Set(string subject, SubListResult result)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 79 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: MatchLiteral(string literal, string pattern) -MESSAGE: Method 'MatchLiteral(string literal, string pattern)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 122 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: NumTokens(string subject) -MESSAGE: Method 'NumTokens(string subject)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 136 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TokenAt(string subject, int index) -MESSAGE: Method 'TokenAt(string subject, int index)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 136 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: TokenAt(string subject, int index) -MESSAGE: Method 'TokenAt(string subject, int index)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 163 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SubjectsCollide(string subj1, string subj2) -MESSAGE: Method 'SubjectsCollide(string subj1, string subj2)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 163 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SubjectsCollide(string subj1, string subj2) -MESSAGE: Method 'SubjectsCollide(string subj1, string subj2)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 205 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SubjectMatchesFilter(string subject, string filter) -MESSAGE: Method 'SubjectMatchesFilter(string subject, string filter)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 207 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SubjectIsSubsetMatch(string subject, string test) -MESSAGE: Method 'SubjectIsSubsetMatch(string subject, string test)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 213 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsSubsetMatch(string[] tokens, string test) -MESSAGE: Method 'IsSubsetMatch(string[] tokens, string test)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 219 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: IsSubsetMatchTokenized(IReadOnlyList tokens, IReadOnlyList test) -MESSAGE: Method 'IsSubsetMatchTokenized(IReadOnlyList tokens, IReadOnlyList test)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 252 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: TokenEquals(ReadOnlySpan token, string candidate) -MESSAGE: Method 'TokenEquals(ReadOnlySpan token, string candidate)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 269 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsValidSubject(string subject, bool checkRunes) -MESSAGE: Method 'IsValidSubject(string subject, bool checkRunes)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectMatch.cs -LINE: 269 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: IsValidSubject(string subject, bool checkRunes) -MESSAGE: Method 'IsValidSubject(string subject, bool checkRunes)' is missing documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/Subscriptions/SubjectTransform.cs LINE: 31 CATEGORY: MissingParam @@ -11386,156 +8376,6 @@ MESSAGE: Method 'Decompress(List compressedBuffers, int maxPayload)' is --- -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 23 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CloseReceived -MESSAGE: Property 'CloseReceived' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 24 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Property -SIGNATURE: CloseStatus -MESSAGE: Property 'CloseStatus' is missing XML documentation - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 26 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Constructor -SIGNATURE: WsConnection(Stream inner, bool compress, bool maskRead, bool maskWrite, bool browser, bool noCompFrag) -MESSAGE: Constructor 'WsConnection(Stream inner, bool compress, bool maskRead, bool maskWrite, bool browser, bool noCompFrag)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 37 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: ReadAsync(Memory buffer, CancellationToken ct) -MESSAGE: Method 'ReadAsync(Memory buffer, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 76 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: WriteAsync(ReadOnlyMemory buffer, CancellationToken ct) -MESSAGE: Method 'WriteAsync(ReadOnlyMemory buffer, CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 148 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SendCloseAsync(ClientClosedReason reason, CancellationToken ct) -MESSAGE: Method 'SendCloseAsync(ClientClosedReason reason, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 148 -CATEGORY: MissingParam -SEVERITY: Warning -MEMBER: Method -SIGNATURE: SendCloseAsync(ClientClosedReason reason, CancellationToken ct) -MESSAGE: Method 'SendCloseAsync(ClientClosedReason reason, CancellationToken ct)' is missing documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 188 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Flush() -MESSAGE: Method 'Flush()' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 189 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: FlushAsync(CancellationToken ct) -MESSAGE: Method 'FlushAsync(CancellationToken ct)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 190 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Read(byte[] buffer, int offset, int count) -MESSAGE: Method 'Read(byte[] buffer, int offset, int count)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 191 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Write(byte[] buffer, int offset, int count) -MESSAGE: Method 'Write(byte[] buffer, int offset, int count)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 192 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Seek(long offset, SeekOrigin origin) -MESSAGE: Method 'Seek(long offset, SeekOrigin origin)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 193 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: SetLength(long value) -MESSAGE: Method 'SetLength(long value)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 195 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: Dispose(bool disposing) -MESSAGE: Method 'Dispose(bool disposing)' is missing XML documentation. - ---- - -FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConnection.cs -LINE: 202 -CATEGORY: MissingDoc -SEVERITY: Error -MEMBER: Method -SIGNATURE: DisposeAsync() -MESSAGE: Method 'DisposeAsync()' is missing XML documentation. - ---- - FILE: /Users/dohertj2/Desktop/natsdotnet/src/NATS.Server/WebSocket/WsConstants.cs LINE: 64 CATEGORY: MissingDoc diff --git a/src/NATS.Server/Auth/AccountConfig.cs b/src/NATS.Server/Auth/AccountConfig.cs index 28d01c0..0951ce0 100644 --- a/src/NATS.Server/Auth/AccountConfig.cs +++ b/src/NATS.Server/Auth/AccountConfig.cs @@ -2,8 +2,11 @@ namespace NATS.Server.Auth; public sealed class AccountConfig { + /// Maximum concurrent client connections allowed for this account (0 = unlimited). public int MaxConnections { get; init; } // 0 = unlimited + /// Maximum subscriptions per client/account context (0 = unlimited). public int MaxSubscriptions { get; init; } // 0 = unlimited + /// Default publish/subscribe permissions applied to users in this account. public Permissions? DefaultPermissions { get; init; } /// Service and stream exports from this account. @@ -19,7 +22,9 @@ public sealed class AccountConfig /// public sealed class ExportDefinition { + /// Service subject exported to other accounts. public string? Service { get; init; } + /// Stream subject exported to other accounts. public string? Stream { get; init; } /// Optional latency tracking subject (e.g. "latency.svc.echo"). @@ -36,9 +41,14 @@ public sealed class ExportDefinition /// public sealed class ImportDefinition { + /// Remote account name for imported service mappings. public string? ServiceAccount { get; init; } + /// Remote service subject imported from . public string? ServiceSubject { get; init; } + /// Remote account name for imported stream mappings. public string? StreamAccount { get; init; } + /// Remote stream subject imported from . public string? StreamSubject { get; init; } + /// Local remapped subject for imported services/streams. public string? To { get; init; } } diff --git a/src/NATS.Server/Auth/AccountImportExport.cs b/src/NATS.Server/Auth/AccountImportExport.cs index eae4238..3aa570a 100644 --- a/src/NATS.Server/Auth/AccountImportExport.cs +++ b/src/NATS.Server/Auth/AccountImportExport.cs @@ -15,6 +15,9 @@ public static class AccountImportExport /// Returns true if following service imports from /// eventually leads back to . /// + /// Starting account whose service-import edges are traversed. + /// Target account that would indicate an import cycle if reached. + /// Visited account-name set used to avoid infinite graph recursion. public static bool DetectCycle(Account from, Account to, HashSet? visited = null) { ArgumentNullException.ThrowIfNull(from); @@ -48,6 +51,9 @@ public static class AccountImportExport /// /// Validates that the import is authorized and does not create a cycle. /// + /// Account requesting to import a service. + /// Account exporting the requested service subject. + /// Exported service subject being imported. /// Thrown when the importing account is not authorized. /// Thrown when the import would create a cycle. public static void ValidateImport(Account importingAccount, Account exportingAccount, string exportSubject) diff --git a/src/NATS.Server/Auth/AuthExtensionOptions.cs b/src/NATS.Server/Auth/AuthExtensionOptions.cs index 37f51b2..3bf22ca 100644 --- a/src/NATS.Server/Auth/AuthExtensionOptions.cs +++ b/src/NATS.Server/Auth/AuthExtensionOptions.cs @@ -2,6 +2,11 @@ namespace NATS.Server.Auth; public interface IExternalAuthClient { + /// + /// Requests an allow/deny decision from an external authentication provider. + /// + /// Credential material and identity hints from the client connection. + /// Cancellation token bound to auth timeout and connection lifecycle. Task AuthorizeAsync(ExternalAuthRequest request, CancellationToken ct); } @@ -19,14 +24,36 @@ public record ExternalAuthDecision( public sealed class ExternalAuthOptions { + /// + /// Gets or sets a value indicating whether external auth callouts are enabled. + /// public bool Enabled { get; set; } + + /// + /// Gets or sets the timeout budget for each external auth decision request. + /// public TimeSpan Timeout { get; set; } = TimeSpan.FromSeconds(2); + + /// + /// Gets or sets the client implementation responsible for external auth decisions. + /// public IExternalAuthClient? Client { get; set; } } public sealed class ProxyAuthOptions { + /// + /// Gets or sets a value indicating whether trusted-proxy authentication mode is enabled. + /// public bool Enabled { get; set; } + + /// + /// Gets or sets the required username prefix marking identities provided by a trusted proxy. + /// public string UsernamePrefix { get; set; } = "proxy:"; + + /// + /// Gets or sets the default account to assign when proxy-authenticated users omit one. + /// public string? Account { get; set; } } diff --git a/src/NATS.Server/Auth/AuthResult.cs b/src/NATS.Server/Auth/AuthResult.cs index dbc6322..3f66026 100644 --- a/src/NATS.Server/Auth/AuthResult.cs +++ b/src/NATS.Server/Auth/AuthResult.cs @@ -2,10 +2,33 @@ namespace NATS.Server.Auth; public sealed class AuthResult { + /// + /// Gets the resolved client identity that successfully authenticated. + /// public required string Identity { get; init; } + + /// + /// Gets the account name assigned to the authenticated identity. + /// public string? AccountName { get; init; } + + /// + /// Gets effective publish/subscribe permissions applied to the connection. + /// public Permissions? Permissions { get; init; } + + /// + /// Gets the credential expiry timestamp after which the connection should be considered invalid. + /// public DateTimeOffset? Expiry { get; init; } + + /// + /// Gets the maximum number of JetStream streams permitted for this identity. + /// public int MaxJetStreamStreams { get; init; } + + /// + /// Gets the JetStream tier assigned for quota enforcement. + /// public string? JetStreamTier { get; init; } } diff --git a/src/NATS.Server/Auth/AuthService.cs b/src/NATS.Server/Auth/AuthService.cs index 1a6eef5..c125fe1 100644 --- a/src/NATS.Server/Auth/AuthService.cs +++ b/src/NATS.Server/Auth/AuthService.cs @@ -15,7 +15,14 @@ public sealed class AuthService private readonly string? _noAuthUser; private readonly Dictionary? _usersMap; + /// + /// Gets a value indicating whether any authentication mechanism is configured. + /// public bool IsAuthRequired { get; } + + /// + /// Gets a value indicating whether the protocol must issue a nonce challenge. + /// public bool NonceRequired { get; } private AuthService(List authenticators, bool authRequired, bool nonceRequired, @@ -28,6 +35,10 @@ public sealed class AuthService _usersMap = usersMap; } + /// + /// Builds an authentication service from server options and configured auth sources. + /// + /// Server options containing static users, tokens, NKeys, and auth extensions. public static AuthService Build(NatsOptions options) { var authenticators = new List(); @@ -97,6 +108,10 @@ public sealed class AuthService return new AuthService(authenticators, authRequired, nonceRequired, options.NoAuthUser, usersMap); } + /// + /// Attempts to authenticate a client CONNECT context against configured authenticators. + /// + /// Client auth context extracted from CONNECT and transport metadata. public AuthResult? Authenticate(ClientAuthContext context) { if (!IsAuthRequired) @@ -145,6 +160,9 @@ public sealed class AuthService return new AuthResult { Identity = _noAuthUser }; } + /// + /// Generates cryptographically strong nonce bytes for NKey/JWT signature challenges. + /// public byte[] GenerateNonce() { Span raw = stackalloc byte[11]; @@ -152,6 +170,13 @@ public sealed class AuthService return raw.ToArray(); } + /// + /// Validates MQTT username/password fields against configured MQTT auth settings. + /// + /// Username configured on the server for MQTT auth. + /// Password configured on the server for MQTT auth. + /// Username supplied by the connecting MQTT client. + /// Password supplied by the connecting MQTT client. public static bool ValidateMqttCredentials( string? configuredUsername, string? configuredPassword, @@ -165,6 +190,10 @@ public sealed class AuthService && string.Equals(configuredPassword, providedPassword, StringComparison.Ordinal); } + /// + /// Encodes nonce bytes into URL-safe base64 format used by NATS auth challenges. + /// + /// Raw nonce bytes generated for the challenge. public string EncodeNonce(byte[] nonce) { return Convert.ToBase64String(nonce) diff --git a/src/NATS.Server/Auth/ClientPermissions.cs b/src/NATS.Server/Auth/ClientPermissions.cs index b4d7dc7..42c44ed 100644 --- a/src/NATS.Server/Auth/ClientPermissions.cs +++ b/src/NATS.Server/Auth/ClientPermissions.cs @@ -16,6 +16,10 @@ public sealed class ClientPermissions : IDisposable _responseTracker = responseTracker; } + /// + /// Builds a runtime client-permissions evaluator from account/user permission config. + /// + /// Permission configuration from auth claims or static config. public static ClientPermissions? Build(Permissions? permissions) { if (permissions == null) @@ -33,8 +37,11 @@ public sealed class ClientPermissions : IDisposable return new ClientPermissions(pub, sub, responseTracker); } + /// Optional tracker used to authorize dynamic response subjects. public ResponseTracker? ResponseTracker => _responseTracker; + /// Determines whether publishing to the given subject is permitted. + /// Publish subject being authorized for the client. public bool IsPublishAllowed(string subject) { if (_publish == null) @@ -56,6 +63,9 @@ public sealed class ClientPermissions : IDisposable return allowed; } + /// Determines whether subscribing to the given subject/queue is permitted. + /// Subscription subject being authorized. + /// Optional queue group name for queue-subscription checks. public bool IsSubscribeAllowed(string subject, string? queue = null) { if (_subscribe == null) @@ -67,6 +77,8 @@ public sealed class ClientPermissions : IDisposable return true; } + /// Determines whether delivering a message on the subject is permitted. + /// Delivery subject evaluated against deny rules. public bool IsDeliveryAllowed(string subject) { if (_subscribe == null) @@ -74,6 +86,7 @@ public sealed class ClientPermissions : IDisposable return _subscribe.IsDeliveryAllowed(subject); } + /// Disposes permission resources used by this evaluator. public void Dispose() { _publish?.Dispose(); @@ -92,6 +105,10 @@ public sealed class PermissionSet : IDisposable _deny = deny; } + /// + /// Builds allow/deny sublists from a subject-permission definition. + /// + /// Allow/deny subject rules. public static PermissionSet? Build(SubjectPermission? permission) { if (permission == null) @@ -123,6 +140,8 @@ public sealed class PermissionSet : IDisposable return new PermissionSet(allow, deny); } + /// Checks whether a subject passes allow/deny evaluation. + /// Subject candidate to evaluate against allow and deny lists. public bool IsAllowed(string subject) { bool allowed = true; @@ -142,6 +161,8 @@ public sealed class PermissionSet : IDisposable return allowed; } + /// Checks whether a subject is explicitly denied. + /// Subject candidate evaluated against deny entries. public bool IsDenied(string subject) { if (_deny == null) return false; @@ -149,6 +170,8 @@ public sealed class PermissionSet : IDisposable return result.PlainSubs.Length > 0 || result.QueueSubs.Length > 0; } + /// Checks delivery permission using deny-list semantics. + /// Subject being delivered to a subscriber. public bool IsDeliveryAllowed(string subject) { if (_deny == null) @@ -157,6 +180,7 @@ public sealed class PermissionSet : IDisposable return result.PlainSubs.Length == 0 && result.QueueSubs.Length == 0; } + /// Disposes internal allow/deny sublists. public void Dispose() { _allow?.Dispose(); diff --git a/src/NATS.Server/Auth/IAuthenticator.cs b/src/NATS.Server/Auth/IAuthenticator.cs index abb8db3..9defe23 100644 --- a/src/NATS.Server/Auth/IAuthenticator.cs +++ b/src/NATS.Server/Auth/IAuthenticator.cs @@ -6,13 +6,28 @@ namespace NATS.Server.Auth; public interface IAuthenticator { + /// + /// Attempts to authenticate a client connection. + /// + /// Authentication context containing credentials and transport metadata. AuthResult? Authenticate(ClientAuthContext context); } public sealed class ClientAuthContext { + /// + /// Gets CONNECT options and credential fields supplied by the client. + /// public required ClientOptions Opts { get; init; } + + /// + /// Gets server-issued nonce bytes used for signature-based auth flows. + /// public required byte[] Nonce { get; init; } + + /// + /// Gets the client TLS certificate presented during handshake, when available. + /// public X509Certificate2? ClientCertificate { get; init; } /// diff --git a/src/NATS.Server/Auth/Jwt/AccountResolver.cs b/src/NATS.Server/Auth/Jwt/AccountResolver.cs index b3739b2..fca855e 100644 --- a/src/NATS.Server/Auth/Jwt/AccountResolver.cs +++ b/src/NATS.Server/Auth/Jwt/AccountResolver.cs @@ -17,12 +17,15 @@ public interface IAccountResolver /// Fetches the JWT for the given account NKey. Returns null when /// the NKey is not known to this resolver. /// + /// Account public NKey used as resolver lookup key. Task FetchAsync(string accountNkey); /// /// Stores (or replaces) the JWT for the given account NKey. Callers that /// target a read-only resolver should check first. /// + /// Account public NKey used as resolver storage key. + /// Account JWT content associated with the key. Task StoreAsync(string accountNkey, string jwt); /// diff --git a/src/NATS.Server/Auth/Jwt/NatsJwt.cs b/src/NATS.Server/Auth/Jwt/NatsJwt.cs index 2b23b5d..67c3c5a 100644 --- a/src/NATS.Server/Auth/Jwt/NatsJwt.cs +++ b/src/NATS.Server/Auth/Jwt/NatsJwt.cs @@ -19,6 +19,7 @@ public static class NatsJwt /// /// Returns true if the string appears to be a JWT (starts with "eyJ"). /// + /// Token string to inspect. public static bool IsJwt(string token) { return !string.IsNullOrEmpty(token) && token.StartsWith(JwtPrefix, StringComparison.Ordinal); @@ -28,6 +29,7 @@ public static class NatsJwt /// Decodes a JWT token into its constituent parts without verifying the signature. /// Returns null if the token is structurally invalid. /// + /// JWT string in header.payload.signature format. public static JwtToken? Decode(string token) { if (string.IsNullOrEmpty(token)) @@ -68,6 +70,7 @@ public static class NatsJwt /// Decodes a JWT token and deserializes the payload as . /// Returns null if the token is structurally invalid or cannot be deserialized. /// + /// JWT string to decode. public static UserClaims? DecodeUserClaims(string token) { var jwt = Decode(token); @@ -88,6 +91,7 @@ public static class NatsJwt /// Decodes a JWT token and deserializes the payload as . /// Returns null if the token is structurally invalid or cannot be deserialized. /// + /// JWT string to decode. public static AccountClaims? DecodeAccountClaims(string token) { var jwt = Decode(token); @@ -107,6 +111,8 @@ public static class NatsJwt /// /// Verifies the Ed25519 signature on a JWT token against the given NKey public key. /// + /// JWT string to verify. + /// Expected signer public NKey. public static bool Verify(string token, string publicNkey) { try @@ -129,6 +135,9 @@ public static class NatsJwt /// Verifies a nonce signature against the given NKey public key. /// Tries base64url decoding first, then falls back to standard base64 (Go compatibility). /// + /// Raw nonce bytes originally issued by the server. + /// Signature string provided by the client. + /// Client public NKey used for verification. public static bool VerifyNonce(byte[] nonce, string signature, string publicNkey) { try @@ -150,6 +159,7 @@ public static class NatsJwt /// Decodes a base64url-encoded byte array. /// Replaces URL-safe characters and adds padding as needed. /// + /// Base64url-encoded string. internal static byte[] Base64UrlDecode(string input) { var s = input.Replace('-', '+').Replace('_', '/'); @@ -214,8 +224,10 @@ public sealed class JwtToken public sealed class JwtHeader { [System.Text.Json.Serialization.JsonPropertyName("alg")] + /// JWT signing algorithm identifier (typically ed25519-nkey for NATS). public string? Algorithm { get; set; } [System.Text.Json.Serialization.JsonPropertyName("typ")] + /// JWT type marker (typically JWT). public string? Type { get; set; } } diff --git a/src/NATS.Server/Auth/NKeyUser.cs b/src/NATS.Server/Auth/NKeyUser.cs index 8714015..ee5763f 100644 --- a/src/NATS.Server/Auth/NKeyUser.cs +++ b/src/NATS.Server/Auth/NKeyUser.cs @@ -2,11 +2,38 @@ namespace NATS.Server.Auth; public sealed class NKeyUser { + /// + /// Gets the public NKey used for challenge-signature authentication. + /// public required string Nkey { get; init; } + + /// + /// Gets publish/subscribe permission rules assigned to this NKey identity. + /// public Permissions? Permissions { get; init; } + + /// + /// Gets the account this NKey user is bound to. + /// public string? Account { get; init; } + + /// + /// Gets an optional signing key used for delegated user JWT issuance. + /// public string? SigningKey { get; init; } + + /// + /// Gets the issuance timestamp associated with this identity claim. + /// public DateTimeOffset? Issued { get; init; } + + /// + /// Gets optional connection-type restrictions for this identity. + /// public IReadOnlySet? AllowedConnectionTypes { get; init; } + + /// + /// Gets a value indicating whether this identity must be presented through proxy auth. + /// public bool ProxyRequired { get; init; } } diff --git a/src/NATS.Server/Auth/PermissionLruCache.cs b/src/NATS.Server/Auth/PermissionLruCache.cs index afd571b..a5a3089 100644 --- a/src/NATS.Server/Auth/PermissionLruCache.cs +++ b/src/NATS.Server/Auth/PermissionLruCache.cs @@ -18,6 +18,10 @@ public sealed class PermissionLruCache private long _generation; private long _cacheGeneration; + /// + /// Creates a fixed-capacity permission LRU cache. + /// + /// Maximum number of cached permission decisions. public PermissionLruCache(int capacity = 128) { _capacity = capacity; @@ -51,6 +55,8 @@ public sealed class PermissionLruCache // ── PUB API (backward-compatible) ──────────────────────────────────────── /// Looks up a PUB permission for . + /// Publish subject cache key. + /// Cached allow/deny decision when present. public bool TryGet(string key, out bool value) { var internalKey = "P:" + key; @@ -71,6 +77,8 @@ public sealed class PermissionLruCache } /// Stores a PUB permission for . + /// Publish subject cache key. + /// Allow/deny decision to cache. public void Set(string key, bool value) { var internalKey = "P:" + key; @@ -84,6 +92,8 @@ public sealed class PermissionLruCache // ── SUB API ─────────────────────────────────────────────────────────────── /// Looks up a SUB permission for . + /// Subscribe subject cache key. + /// Cached allow/deny decision when present. public bool TryGetSub(string subject, out bool value) { var internalKey = "S:" + subject; @@ -104,6 +114,8 @@ public sealed class PermissionLruCache } /// Stores a SUB permission for . + /// Subscribe subject cache key. + /// Allow/deny decision to cache. public void SetSub(string subject, bool allowed) { var internalKey = "S:" + subject; @@ -116,6 +128,7 @@ public sealed class PermissionLruCache // ── Shared ──────────────────────────────────────────────────────────────── + /// Current number of cached entries. public int Count { get diff --git a/src/NATS.Server/Auth/Permissions.cs b/src/NATS.Server/Auth/Permissions.cs index 18ab229..4259eba 100644 --- a/src/NATS.Server/Auth/Permissions.cs +++ b/src/NATS.Server/Auth/Permissions.cs @@ -2,19 +2,44 @@ namespace NATS.Server.Auth; public sealed class Permissions { + /// + /// Gets publish-side allow/deny subject rules. + /// public SubjectPermission? Publish { get; init; } + + /// + /// Gets subscribe-side allow/deny subject rules. + /// public SubjectPermission? Subscribe { get; init; } + + /// + /// Gets dynamic reply-publish permissions granted to request responders. + /// public ResponsePermission? Response { get; init; } } public sealed class SubjectPermission { + /// + /// Gets subject patterns explicitly permitted for the operation. + /// public IReadOnlyList? Allow { get; init; } + + /// + /// Gets subject patterns explicitly denied for the operation. + /// public IReadOnlyList? Deny { get; init; } } public sealed class ResponsePermission { + /// + /// Gets the maximum number of response messages allowed on auto-generated reply subjects. + /// public int MaxMsgs { get; init; } + + /// + /// Gets the expiration window for temporary response permissions. + /// public TimeSpan Expires { get; init; } } diff --git a/src/NATS.Server/Auth/ResponseTracker.cs b/src/NATS.Server/Auth/ResponseTracker.cs index e4e62db..1751e53 100644 --- a/src/NATS.Server/Auth/ResponseTracker.cs +++ b/src/NATS.Server/Auth/ResponseTracker.cs @@ -11,17 +11,29 @@ public sealed class ResponseTracker private readonly Dictionary _replies = new(StringComparer.Ordinal); private readonly object _lock = new(); + /// + /// Creates a tracker for temporary response-subject permissions. + /// + /// Maximum allowed publishes per reply subject (0 for unlimited). + /// TTL for each registered reply subject ( for no TTL). public ResponseTracker(int maxMsgs, TimeSpan expires) { _maxMsgs = maxMsgs; _expires = expires; } + /// + /// Gets the number of currently tracked reply subjects. + /// public int Count { get { lock (_lock) return _replies.Count; } } + /// + /// Registers a reply subject for temporary publish authorization. + /// + /// Reply subject allowed for responder publishes. public void RegisterReply(string replySubject) { lock (_lock) @@ -30,6 +42,10 @@ public sealed class ResponseTracker } } + /// + /// Determines whether a publish to the reply subject is currently allowed. + /// + /// Reply subject being authorized. public bool IsReplyAllowed(string subject) { lock (_lock) @@ -55,6 +71,9 @@ public sealed class ResponseTracker } } + /// + /// Removes expired or exhausted reply permissions from the tracker. + /// public void Prune() { lock (_lock) diff --git a/src/NATS.Server/Auth/ServiceLatencyTracker.cs b/src/NATS.Server/Auth/ServiceLatencyTracker.cs index f6cc7d3..c165e14 100644 --- a/src/NATS.Server/Auth/ServiceLatencyTracker.cs +++ b/src/NATS.Server/Auth/ServiceLatencyTracker.cs @@ -11,12 +11,17 @@ public sealed class ServiceLatencyTracker private readonly int _maxSamples; private long _totalRequests; + /// + /// Creates a latency tracker with a bounded in-memory sample window. + /// + /// Maximum number of latency samples retained for percentile calculations. public ServiceLatencyTracker(int maxSamples = 10000) { _maxSamples = maxSamples; } /// Records a latency sample in milliseconds. + /// Observed end-to-end service latency in milliseconds. public void RecordLatency(double latencyMs) { lock (_lock) @@ -28,11 +33,15 @@ public sealed class ServiceLatencyTracker } } + /// Returns the 50th percentile (median) latency in milliseconds. public double GetP50() => GetPercentile(0.50); + /// Returns the 90th percentile latency in milliseconds. public double GetP90() => GetPercentile(0.90); + /// Returns the 99th percentile latency in milliseconds. public double GetP99() => GetPercentile(0.99); /// Returns the value at the given percentile (0.0–1.0) over recorded samples. + /// Percentile fraction between 0.0 and 1.0. public double GetPercentile(double percentile) { lock (_lock) @@ -61,16 +70,19 @@ public sealed class ServiceLatencyTracker return sum / samples.Count; } + /// Total number of latency observations recorded. public long TotalRequests { get { lock (_lock) return _totalRequests; } } + /// Arithmetic mean latency across currently retained samples. public double AverageLatencyMs { get { lock (_lock) return ComputeAverage(_samples); } } + /// Minimum latency among currently retained samples. public double MinLatencyMs { get @@ -80,6 +92,7 @@ public sealed class ServiceLatencyTracker } } + /// Maximum latency among currently retained samples. public double MaxLatencyMs { get @@ -89,6 +102,7 @@ public sealed class ServiceLatencyTracker } } + /// Number of samples currently retained in memory. public int SampleCount { get { lock (_lock) return _samples.Count; } diff --git a/src/NATS.Server/Auth/TlsMapAuthenticator.cs b/src/NATS.Server/Auth/TlsMapAuthenticator.cs index 10b3338..2ca081a 100644 --- a/src/NATS.Server/Auth/TlsMapAuthenticator.cs +++ b/src/NATS.Server/Auth/TlsMapAuthenticator.cs @@ -11,6 +11,10 @@ public sealed class TlsMapAuthenticator : IAuthenticator private readonly Dictionary _usersByDn; private readonly Dictionary _usersByCn; + /// + /// Creates a TLS-map authenticator using configured users keyed by DN/CN-style identities. + /// + /// Configured users used for DN/CN lookup matches. public TlsMapAuthenticator(IReadOnlyList users) { _usersByDn = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -22,6 +26,10 @@ public sealed class TlsMapAuthenticator : IAuthenticator } } + /// + /// Authenticates a client by matching certificate subject/SAN data to configured users. + /// + /// Authentication context containing the client TLS certificate. public AuthResult? Authenticate(ClientAuthContext context) { var cert = context.ClientCertificate; @@ -65,6 +73,10 @@ public sealed class TlsMapAuthenticator : IAuthenticator return null; } + /// + /// Extracts domain-component RDN elements from a distinguished name. + /// + /// Distinguished name to inspect for DC= elements. internal static string GetTlsAuthDcs(X500DistinguishedName dn) { if (string.IsNullOrWhiteSpace(dn.Name)) @@ -82,6 +94,10 @@ public sealed class TlsMapAuthenticator : IAuthenticator return string.Join(",", dcs); } + /// + /// Splits a DNS alternative-name value into normalized lowercase labels. + /// + /// DNS SAN value from a certificate. internal static string[] DnsAltNameLabels(string dnsAltName) { if (string.IsNullOrWhiteSpace(dnsAltName)) @@ -90,6 +106,11 @@ public sealed class TlsMapAuthenticator : IAuthenticator return dnsAltName.ToLowerInvariant().Split('.', StringSplitOptions.RemoveEmptyEntries); } + /// + /// Determines whether SAN DNS labels match any URL host in the provided list. + /// + /// Normalized SAN label sequence (supports wildcard first label). + /// Candidate URLs whose hosts are compared against SAN labels. internal static bool DnsAltNameMatches(string[] dnsAltNameLabels, IReadOnlyList urls) { foreach (var url in urls) diff --git a/src/NATS.Server/Auth/User.cs b/src/NATS.Server/Auth/User.cs index ee0b616..b7a8846 100644 --- a/src/NATS.Server/Auth/User.cs +++ b/src/NATS.Server/Auth/User.cs @@ -2,11 +2,38 @@ namespace NATS.Server.Auth; public sealed class User { + /// + /// Gets the username used for CONNECT credential authentication. + /// public required string Username { get; init; } + + /// + /// Gets the password associated with . + /// public required string Password { get; init; } + + /// + /// Gets publish/subscribe permission rules assigned to this user. + /// public Permissions? Permissions { get; init; } + + /// + /// Gets the account this user is bound to for subject and subscription isolation. + /// public string? Account { get; init; } + + /// + /// Gets an optional cutoff timestamp after which new connections are rejected. + /// public DateTimeOffset? ConnectionDeadline { get; init; } + + /// + /// Gets optional connection-type restrictions (client, route, gateway, leaf, and so on). + /// public IReadOnlySet? AllowedConnectionTypes { get; init; } + + /// + /// Gets a value indicating whether this identity must authenticate through trusted proxy headers. + /// public bool ProxyRequired { get; init; } } diff --git a/src/NATS.Server/ClientFlags.cs b/src/NATS.Server/ClientFlags.cs index 49818d6..d8a9086 100644 --- a/src/NATS.Server/ClientFlags.cs +++ b/src/NATS.Server/ClientFlags.cs @@ -25,16 +25,28 @@ public sealed class ClientFlagHolder { private int _flags; + /// + /// Atomically sets the specified client state flag. + /// + /// Flag to set. public void SetFlag(ClientFlags flag) { Interlocked.Or(ref _flags, (int)flag); } + /// + /// Atomically clears the specified client state flag. + /// + /// Flag to clear. public void ClearFlag(ClientFlags flag) { Interlocked.And(ref _flags, ~(int)flag); } + /// + /// Checks whether the specified client state flag is currently set. + /// + /// Flag to test. public bool HasFlag(ClientFlags flag) { return (Volatile.Read(ref _flags) & (int)flag) != 0; diff --git a/src/NATS.Server/ClientTraceInfo.cs b/src/NATS.Server/ClientTraceInfo.cs index 5653da1..f950d0c 100644 --- a/src/NATS.Server/ClientTraceInfo.cs +++ b/src/NATS.Server/ClientTraceInfo.cs @@ -29,6 +29,9 @@ public sealed class ClientTraceInfo /// Records a message delivery trace if tracing is enabled. /// Go reference: server/client.go — traceMsg / TraceMsgDelivery. /// + /// Published subject that triggered this delivery path. + /// Destination descriptor such as a client, queue group, or route hop. + /// Payload size in bytes used for throughput and fan-out diagnostics. public void TraceMsgDelivery(string subject, string destination, int payloadSize) { if (!TraceEnabled) return; @@ -50,6 +53,8 @@ public sealed class ClientTraceInfo /// subscriptions on the same client. /// Go reference: server/client.go — c.echo check in deliverMsg. /// + /// Client identifier that originated the publish. + /// Client identifier for the subscription currently being evaluated. public bool ShouldEcho(string publisherClientId, string subscriberClientId) { if (EchoEnabled) return true; @@ -76,8 +81,23 @@ public sealed class ClientTraceInfo public sealed record TraceRecord { + /// + /// Gets the routed subject for the traced delivery event. + /// public string Subject { get; init; } = string.Empty; + + /// + /// Gets the resolved destination where the server sent the message. + /// public string Destination { get; init; } = string.Empty; + + /// + /// Gets the payload size in bytes for the traced message. + /// public int PayloadSize { get; init; } + + /// + /// Gets the UTC timestamp captured when the trace event was recorded. + /// public DateTime TimestampUtc { get; init; } } diff --git a/src/NATS.Server/Configuration/ClusterOptions.cs b/src/NATS.Server/Configuration/ClusterOptions.cs index 137e7a9..9df3d3c 100644 --- a/src/NATS.Server/Configuration/ClusterOptions.cs +++ b/src/NATS.Server/Configuration/ClusterOptions.cs @@ -1,15 +1,48 @@ namespace NATS.Server.Configuration; +/// +/// Cluster listener and route fan-out settings used for server-to-server mesh links. +/// public sealed class ClusterOptions { + /// + /// Gets or sets the local cluster name advertised during route handshakes. + /// public string? Name { get; set; } + + /// + /// Gets or sets the network interface used to accept inbound route connections. + /// public string Host { get; set; } = "0.0.0.0"; + + /// + /// Gets or sets the TCP port for the cluster route listener. + /// public int Port { get; set; } = 6222; + + /// + /// Gets or sets the number of parallel route connections maintained per remote server. + /// public int PoolSize { get; set; } = 3; + + /// + /// Gets or sets the configured outbound route URLs used to join peer servers. + /// public List Routes { get; set; } = []; + + /// + /// Gets or sets account names that should use dedicated route handling. + /// public List Accounts { get; set; } = []; + + /// + /// Gets or sets compression behavior for inter-server route traffic. + /// public RouteCompression Compression { get; set; } = RouteCompression.None; // Go: opts.go — cluster write_deadline + /// + /// Gets or sets the write deadline enforced for route protocol socket operations. + /// public TimeSpan WriteDeadline { get; set; } } diff --git a/src/NATS.Server/Configuration/ConfigProcessor.cs b/src/NATS.Server/Configuration/ConfigProcessor.cs index eeadce3..deab558 100644 --- a/src/NATS.Server/Configuration/ConfigProcessor.cs +++ b/src/NATS.Server/Configuration/ConfigProcessor.cs @@ -19,6 +19,7 @@ public static class ConfigProcessor /// /// Parses a configuration file and returns the populated options. /// + /// Absolute or relative path to the NATS configuration file to load. public static NatsOptions ProcessConfigFile(string filePath) { var config = NatsConfParser.ParseFile(filePath); @@ -30,6 +31,7 @@ public static class ConfigProcessor /// /// Parses configuration text (not from a file) and returns the populated options. /// + /// Raw configuration text in NATS server config format. public static NatsOptions ProcessConfig(string configText) { var config = NatsConfParser.Parse(configText); @@ -42,6 +44,8 @@ public static class ConfigProcessor /// Applies a parsed configuration dictionary to existing options. /// Throws if any validation errors are collected. /// + /// Parsed config tree keyed by top-level field names. + /// Options instance that receives normalized values from the parsed config. public static void ApplyConfig(Dictionary config, NatsOptions opts) { var errors = new List(); @@ -423,6 +427,7 @@ public static class ConfigProcessor /// A number (long/double) treated as seconds /// /// + /// Raw duration token from configuration (string or numeric seconds). internal static TimeSpan ParseDuration(object? value) { return value switch @@ -1877,7 +1882,14 @@ public static class ConfigProcessor public sealed class ConfigProcessorException(string message, List errors, List? warnings = null) : Exception(message) { + /// + /// Gets the list of blocking configuration errors that prevented startup. + /// public IReadOnlyList Errors => errors; + + /// + /// Gets non-fatal configuration warnings collected during processing. + /// public IReadOnlyList Warnings => warnings ?? []; } @@ -1887,6 +1899,9 @@ public sealed class ConfigProcessorException(string message, List errors /// public class ConfigWarningException(string message, string? source = null) : Exception(message) { + /// + /// Gets the location within the source config where this warning originated, when available. + /// public string? SourceLocation { get; } = source; } @@ -1897,5 +1912,8 @@ public class ConfigWarningException(string message, string? source = null) : Exc public sealed class UnknownConfigFieldWarning(string field, string? source = null) : ConfigWarningException($"unknown field {field}", source) { + /// + /// Gets the unknown top-level or nested field name encountered in the configuration file. + /// public string Field { get; } = field; } diff --git a/src/NATS.Server/Configuration/ConfigReloader.cs b/src/NATS.Server/Configuration/ConfigReloader.cs index 19399f0..bce1e32 100644 --- a/src/NATS.Server/Configuration/ConfigReloader.cs +++ b/src/NATS.Server/Configuration/ConfigReloader.cs @@ -810,6 +810,11 @@ public sealed class ConfigReloadResult /// /// Initializes a config reload result payload. /// + /// Whether reload was skipped because the config digest was unchanged. + /// Newly parsed options candidate for applying a reload. + /// Digest string of the candidate config content. + /// Detected option differences for this reload attempt. + /// Validation errors that block applying the reload. public ConfigReloadResult( bool Unchanged, NatsOptions? NewOptions = null, diff --git a/src/NATS.Server/Configuration/IConfigChange.cs b/src/NATS.Server/Configuration/IConfigChange.cs index 538de12..3b87bcc 100644 --- a/src/NATS.Server/Configuration/IConfigChange.cs +++ b/src/NATS.Server/Configuration/IConfigChange.cs @@ -46,9 +46,28 @@ public sealed class ConfigChange( bool isTlsChange = false, bool isNonReloadable = false) : IConfigChange { + /// + /// Gets the changed option name. + /// public string Name => name; + + /// + /// Gets a value indicating whether this change affects logging configuration. + /// public bool IsLoggingChange => isLoggingChange; + + /// + /// Gets a value indicating whether this change affects authentication configuration. + /// public bool IsAuthChange => isAuthChange; + + /// + /// Gets a value indicating whether this change affects TLS configuration. + /// public bool IsTlsChange => isTlsChange; + + /// + /// Gets a value indicating whether this change cannot be applied without restart. + /// public bool IsNonReloadable => isNonReloadable; } diff --git a/src/NATS.Server/Configuration/NatsConfParser.cs b/src/NATS.Server/Configuration/NatsConfParser.cs index 037f038..8f1bbe4 100644 --- a/src/NATS.Server/Configuration/NatsConfParser.cs +++ b/src/NATS.Server/Configuration/NatsConfParser.cs @@ -28,6 +28,7 @@ public static class NatsConfParser /// /// Parses a NATS configuration string into a dictionary. /// + /// Raw configuration text. public static Dictionary Parse(string data) { var tokens = NatsConfLexer.Tokenize(data); @@ -40,11 +41,13 @@ public static class NatsConfParser /// Pedantic compatibility API (Go: ParseWithChecks). /// Uses the same parser behavior as . /// + /// Raw configuration text. public static Dictionary ParseWithChecks(string data) => Parse(data); /// /// Parses a NATS configuration file into a dictionary. /// + /// Path to the configuration file. public static Dictionary ParseFile(string filePath) => ParseFile(filePath, includeDepth: 0); @@ -52,6 +55,7 @@ public static class NatsConfParser /// Pedantic compatibility API (Go: ParseFileWithChecks). /// Uses the same parser behavior as . /// + /// Path to the configuration file. public static Dictionary ParseFileWithChecks(string filePath) => ParseFile(filePath); private static Dictionary ParseFile(string filePath, int includeDepth) @@ -68,6 +72,7 @@ public static class NatsConfParser /// Parses a NATS configuration file and returns the parsed config plus a /// SHA-256 digest of the raw file content formatted as "sha256:<hex>". /// + /// Path to the configuration file. public static (Dictionary Config, string Digest) ParseFileWithDigest(string filePath) { var rawBytes = File.ReadAllBytes(filePath); @@ -85,6 +90,7 @@ public static class NatsConfParser /// /// Pedantic compatibility API (Go: ParseFileWithChecksDigest). /// + /// Path to the configuration file. public static (Dictionary Config, string Digest) ParseFileWithChecksDigest(string filePath) { var data = File.ReadAllText(filePath); @@ -204,13 +210,26 @@ public static class NatsConfParser // Pedantic-mode key token stack (Go parser field: ikeys). private readonly List _itemKeys = new(4); + /// Root parsed mapping for the current parser execution. public Dictionary Mapping { get; } = new(StringComparer.OrdinalIgnoreCase); + /// + /// Creates parser state for tokenized config input. + /// + /// Token stream from the config lexer. + /// Base directory used to resolve include paths. public ParserState(IReadOnlyList tokens, string baseDir) : this(tokens, baseDir, [], includeDepth: 0) { } + /// + /// Creates parser state with explicit env-reference tracking and include depth. + /// + /// Token stream from the config lexer. + /// Base directory used to resolve include paths. + /// Shared environment-variable recursion guard set. + /// Current include nesting depth. public ParserState(IReadOnlyList tokens, string baseDir, HashSet envVarReferences, int includeDepth) { _tokens = tokens; @@ -219,6 +238,9 @@ public static class NatsConfParser _includeDepth = includeDepth; } + /// + /// Executes the parse loop and builds . + /// public void Run() { PushContext(Mapping); diff --git a/src/NATS.Server/Configuration/NatsConfToken.cs b/src/NATS.Server/Configuration/NatsConfToken.cs index 38eeea6..8635455 100644 --- a/src/NATS.Server/Configuration/NatsConfToken.cs +++ b/src/NATS.Server/Configuration/NatsConfToken.cs @@ -36,6 +36,13 @@ public sealed class PedanticToken private readonly bool _usedVariable; private readonly string _sourceFile; + /// + /// Creates a parser token wrapper that preserves resolved value and source metadata. + /// + /// Raw lexer token captured from the configuration source. + /// Optional parsed value override when token text has been normalized. + /// Indicates whether this token originated from variable substitution. + /// Source file path associated with this token, when available. public PedanticToken(Token item, object? value = null, bool usedVariable = false, string sourceFile = "") { _item = item; @@ -44,15 +51,33 @@ public sealed class PedanticToken _sourceFile = sourceFile ?? string.Empty; } + /// + /// Serializes the token value into JSON, matching Go parser diagnostics formatting. + /// public string MarshalJson() => JsonSerializer.Serialize(Value()); + /// + /// Returns the resolved token value, or raw token text when no typed value is stored. + /// public object? Value() => _value ?? _item.Value; + /// + /// Returns the 1-based source line where the token was parsed. + /// public int Line() => _item.Line; + /// + /// Returns whether variable interpolation contributed to this token. + /// public bool IsUsedVariable() => _usedVariable; + /// + /// Returns the source file path associated with this token. + /// public string SourceFile() => _sourceFile; + /// + /// Returns the 1-based character position of the token on its source line. + /// public int Position() => _item.Position; } diff --git a/src/NATS.Server/Events/EventCompressor.cs b/src/NATS.Server/Events/EventCompressor.cs index 4df1ce9..e9cdad3 100644 --- a/src/NATS.Server/Events/EventCompressor.cs +++ b/src/NATS.Server/Events/EventCompressor.cs @@ -77,6 +77,8 @@ public static class EventCompressor /// /// Compresses using the requested . /// + /// Uncompressed event payload bytes. + /// Compression algorithm to apply for transport. public static byte[] Compress(ReadOnlySpan payload, EventCompressionType compression) { if (payload.IsEmpty) @@ -104,6 +106,8 @@ public static class EventCompressor /// /// Decompresses using the selected . /// + /// Compressed event payload bytes. + /// Encoding that was used when the payload was produced. public static byte[] Decompress(ReadOnlySpan compressed, EventCompressionType compression) { if (compressed.IsEmpty) @@ -150,6 +154,9 @@ public static class EventCompressor /// /// Compresses using when payload size exceeds threshold. /// + /// Raw event payload that may be compressed. + /// Preferred compression algorithm for eligible payloads. + /// Minimum payload size required before compression is attempted. public static (byte[] Data, bool Compressed) CompressIfBeneficial( ReadOnlySpan payload, EventCompressionType compression, @@ -189,6 +196,7 @@ public static class EventCompressor /// Parses an HTTP Accept-Encoding value into a supported compression type. /// Go reference: events.go getAcceptEncoding(). /// + /// Raw HTTP Accept-Encoding header value from the client. public static EventCompressionType GetAcceptEncoding(string? acceptEncoding) { if (string.IsNullOrWhiteSpace(acceptEncoding)) diff --git a/src/NATS.Server/Events/EventSubjects.cs b/src/NATS.Server/Events/EventSubjects.cs index 0a661d1..ee84a2e 100644 --- a/src/NATS.Server/Events/EventSubjects.cs +++ b/src/NATS.Server/Events/EventSubjects.cs @@ -74,6 +74,13 @@ public static class EventSubjects /// Callback signature for system message handlers. /// Maps to Go's sysMsgHandler type in events.go:109. /// +/// Subscription metadata that matched the incoming system message. +/// Client connection context that delivered the message, when available. +/// Owning account context for account-scoped system events. +/// System subject that triggered this callback. +/// Reply inbox subject for request/reply system handlers. +/// Optional message headers encoded by the publisher. +/// Raw system advisory or request payload bytes. public delegate void SystemMessageHandler( Subscription? sub, INatsClient? client, diff --git a/src/NATS.Server/Gateways/GatewayCommands.cs b/src/NATS.Server/Gateways/GatewayCommands.cs index 394d5e9..c35dd9f 100644 --- a/src/NATS.Server/Gateways/GatewayCommands.cs +++ b/src/NATS.Server/Gateways/GatewayCommands.cs @@ -45,6 +45,8 @@ public static class GatewayCommands /// Wire format: GS+ {account} {subject}\r\n /// Go reference: gateway.go — sendGatewaySubsToGateway, RS+ propagation. /// + /// Origin account used for gateway interest tracking. + /// Subject pattern being subscribed across clusters. public static byte[] FormatSub(string account, string subject) => Encoding.UTF8.GetBytes($"GS+ {account} {subject}\r\n"); @@ -53,6 +55,8 @@ public static class GatewayCommands /// Wire format: GS- {account} {subject}\r\n /// Go reference: gateway.go — sendGatewayUnsubToGateway, RS- propagation. /// + /// Origin account used for gateway interest tracking. + /// Subject pattern being removed from remote interest state. public static byte[] FormatUnsub(string account, string subject) => Encoding.UTF8.GetBytes($"GS- {account} {subject}\r\n"); @@ -62,6 +66,8 @@ public static class GatewayCommands /// Mode: "O" for Optimistic (send everything), "I" for Interest-only. /// Go reference: gateway.go — switchAccountToInterestMode, GMODE command. /// + /// Account whose cross-cluster routing mode is being updated. + /// Target gateway interest mode for that account. public static byte[] FormatMode(string account, GatewayInterestMode mode) { var modeStr = mode == GatewayInterestMode.InterestOnly ? "I" : "O"; @@ -73,6 +79,7 @@ public static class GatewayCommands /// Returns null if the command prefix is unrecognized. /// Go reference: gateway.go — processGatewayMsg command dispatch. /// + /// Raw protocol line prefix read from a gateway connection. public static GatewayCommandType? ParseCommandType(ReadOnlySpan line) { if (line.StartsWith(InfoPrefix)) return GatewayCommandType.Info; diff --git a/src/NATS.Server/Gateways/GatewayInterestTracker.cs b/src/NATS.Server/Gateways/GatewayInterestTracker.cs index cf77e64..3364f6b 100644 --- a/src/NATS.Server/Gateways/GatewayInterestTracker.cs +++ b/src/NATS.Server/Gateways/GatewayInterestTracker.cs @@ -42,6 +42,10 @@ public sealed class GatewayInterestTracker // Per-account state: mode + no-interest set (Optimistic) or positive interest set (InterestOnly) private readonly ConcurrentDictionary _accounts = new(StringComparer.Ordinal); + /// + /// Creates a gateway interest tracker with a configurable mode-switch threshold. + /// + /// No-interest entry count that triggers InterestOnly mode. public GatewayInterestTracker(int noInterestThreshold = DefaultNoInterestThreshold) { _noInterestThreshold = noInterestThreshold; @@ -51,6 +55,7 @@ public sealed class GatewayInterestTracker /// Returns the current interest mode for the given account. /// Accounts default to Optimistic until the no-interest threshold is exceeded. /// + /// Account name/identifier. public GatewayInterestMode GetMode(string account) => _accounts.TryGetValue(account, out var state) ? state.Mode : GatewayInterestMode.Optimistic; @@ -58,6 +63,8 @@ public sealed class GatewayInterestTracker /// Track a positive interest (RS+ received from remote) for an account/subject. /// Go: gateway.go:1540 (processGatewayAccountSub — adds to interest set) /// + /// Account name/identifier. + /// Subject or pattern with positive remote interest. public void TrackInterest(string account, string subject) { var state = GetOrCreateState(account); @@ -83,6 +90,8 @@ public sealed class GatewayInterestTracker /// When the no-interest set crosses the threshold, switches to InterestOnly mode. /// Go: gateway.go:1560 (processGatewayAccountUnsub — tracks no-interest, triggers switch) /// + /// Account name/identifier. + /// Subject or pattern that should be treated as no-interest. public void TrackNoInterest(string account, string subject) { var state = GetOrCreateState(account); @@ -110,6 +119,8 @@ public sealed class GatewayInterestTracker /// for the given account and subject. /// Go: gateway.go:2900 (shouldForwardMsg — checks mode and interest) /// + /// Account name/identifier. + /// Subject being considered for forwarding. public bool ShouldForward(string account, string subject) { if (!_accounts.TryGetValue(account, out var state)) @@ -141,6 +152,7 @@ public sealed class GatewayInterestTracker /// Called when the remote signals it is in interest-only mode. /// Go: gateway.go:1500 (switchToInterestOnlyMode) /// + /// Account name/identifier. public void SwitchToInterestOnly(string account) { var state = GetOrCreateState(account); @@ -179,6 +191,7 @@ public sealed class GatewayInterestTracker /// Per-account mutable state. All access must be under the instance lock. private sealed class AccountState { + /// Current forwarding mode for this account. public GatewayInterestMode Mode { get; set; } = GatewayInterestMode.Optimistic; /// Subjects with no remote interest (used in Optimistic mode). diff --git a/src/NATS.Server/INatsClient.cs b/src/NATS.Server/INatsClient.cs index 5f98d33..81e591f 100644 --- a/src/NATS.Server/INatsClient.cs +++ b/src/NATS.Server/INatsClient.cs @@ -5,18 +5,45 @@ namespace NATS.Server; public interface INatsClient { + /// Unique server-assigned client identifier. ulong Id { get; } + /// Client kind (client, route, gateway, leaf, system, etc.). ClientKind Kind { get; } + /// Whether this client is server-internal and not socket-backed. bool IsInternal => Kind.IsInternal(); + /// Account context associated with this client. Account? Account { get; } + /// Parsed CONNECT options for this client when available. ClientOptions? ClientOpts { get; } + /// Resolved publish/subscribe permissions for this client. ClientPermissions? Permissions { get; } + /// + /// Sends a protocol message to a subscription with immediate flush semantics. + /// + /// Delivery subject sent to the client. + /// Subscription identifier receiving the message. + /// Optional reply subject for request-reply flows. + /// Serialized NATS headers payload. + /// Message payload bytes. void SendMessage(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload); + /// + /// Sends a protocol message without forcing an immediate flush. + /// + /// Delivery subject sent to the client. + /// Subscription identifier receiving the message. + /// Optional reply subject for request-reply flows. + /// Serialized NATS headers payload. + /// Message payload bytes. void SendMessageNoFlush(string subject, string sid, string? replyTo, ReadOnlyMemory headers, ReadOnlyMemory payload); + /// Signals that queued outbound bytes should be flushed. void SignalFlush(); + /// Queues outbound protocol bytes for asynchronous write-loop transmission. + /// Serialized protocol bytes to queue. bool QueueOutbound(ReadOnlyMemory data); + /// Removes a subscription by subscription identifier. + /// Subscription identifier to remove. void RemoveSubscription(string sid); } diff --git a/src/NATS.Server/IO/OutboundBufferPool.cs b/src/NATS.Server/IO/OutboundBufferPool.cs index 8310431..c52c5d2 100644 --- a/src/NATS.Server/IO/OutboundBufferPool.cs +++ b/src/NATS.Server/IO/OutboundBufferPool.cs @@ -23,8 +23,11 @@ public sealed class OutboundBufferPool private long _returnCount; private long _broadcastCount; + /// Total buffer rent operations served by the pool. public long RentCount => Interlocked.Read(ref _rentCount); + /// Total buffer return operations accepted by the pool. public long ReturnCount => Interlocked.Read(ref _returnCount); + /// Total broadcast-drain operations performed. public long BroadcastCount => Interlocked.Read(ref _broadcastCount); // ----------------------------------------------------------------------- @@ -36,6 +39,7 @@ public sealed class OutboundBufferPool /// bytes. Tries the internal pool first; falls back to /// . /// + /// Minimum required buffer size. public IMemoryOwner Rent(int size) { Interlocked.Increment(ref _rentCount); @@ -70,6 +74,7 @@ public sealed class OutboundBufferPool /// bytes. The caller is responsible for calling /// when finished. /// + /// Minimum required buffer size. public byte[] RentBuffer(int size) { Interlocked.Increment(ref _rentCount); @@ -94,6 +99,7 @@ public sealed class OutboundBufferPool /// Returns to the appropriate tier so it can be /// reused by a subsequent call. /// + /// Buffer previously rented from this pool. public void ReturnBuffer(byte[] buffer) { Interlocked.Increment(ref _returnCount); @@ -128,6 +134,8 @@ public sealed class OutboundBufferPool /// /// Go reference: client.go — broadcast flush coalescing for fan-out. /// + /// Pending write segments to coalesce. + /// Destination buffer receiving the concatenated payloads. public int BroadcastDrain(IReadOnlyList> pendingWrites, byte[] destination) { var offset = 0; @@ -144,6 +152,7 @@ public sealed class OutboundBufferPool /// Returns the total number of bytes needed to coalesce all /// into a single buffer. /// + /// Pending write segments to size. public static int CalculateBroadcastSize(IReadOnlyList> pendingWrites) { var total = 0; @@ -164,15 +173,22 @@ public sealed class OutboundBufferPool private readonly ConcurrentBag _pool; private byte[]? _buffer; + /// + /// Creates a pooled memory owner backed by a reusable byte array. + /// + /// Rented backing buffer. + /// Pool to return the buffer to on disposal. public PooledMemoryOwner(byte[] buffer, ConcurrentBag pool) { _buffer = buffer; _pool = pool; } + /// Memory view over the currently owned buffer. public Memory Memory => _buffer is { } b ? b.AsMemory() : Memory.Empty; + /// Returns the owned buffer to the originating pool. public void Dispose() { if (Interlocked.Exchange(ref _buffer, null) is { } b) diff --git a/src/NATS.Server/Imports/ExportAuth.cs b/src/NATS.Server/Imports/ExportAuth.cs index 14200e1..44f99da 100644 --- a/src/NATS.Server/Imports/ExportAuth.cs +++ b/src/NATS.Server/Imports/ExportAuth.cs @@ -4,11 +4,30 @@ namespace NATS.Server.Imports; public sealed class ExportAuth { + /// + /// Gets a value indicating whether importers must present a token for access. + /// public bool TokenRequired { get; init; } + + /// + /// Gets the account-token subject position used for legacy tokenized export patterns. + /// public uint AccountPosition { get; init; } + + /// + /// Gets explicit account names permitted to import this export. + /// public HashSet? ApprovedAccounts { get; init; } + + /// + /// Gets accounts revoked from import access, mapped to revocation timestamps. + /// public Dictionary? RevokedAccounts { get; init; } + /// + /// Determines whether the specified account is currently authorized for this export. + /// + /// Importing account requesting access. public bool IsAuthorized(Account account) { if (RevokedAccounts != null && RevokedAccounts.ContainsKey(account.Name)) diff --git a/src/NATS.Server/Imports/ExportMap.cs b/src/NATS.Server/Imports/ExportMap.cs index 410830a..67d0b15 100644 --- a/src/NATS.Server/Imports/ExportMap.cs +++ b/src/NATS.Server/Imports/ExportMap.cs @@ -2,7 +2,18 @@ namespace NATS.Server.Imports; public sealed class ExportMap { + /// + /// Gets stream exports keyed by exported subject. + /// public Dictionary Streams { get; } = new(StringComparer.Ordinal); + + /// + /// Gets service exports keyed by exported subject. + /// public Dictionary Services { get; } = new(StringComparer.Ordinal); + + /// + /// Gets temporary response imports keyed by generated reply prefix. + /// public Dictionary Responses { get; } = new(StringComparer.Ordinal); } diff --git a/src/NATS.Server/Imports/ImportMap.cs b/src/NATS.Server/Imports/ImportMap.cs index 2d553ed..cda242a 100644 --- a/src/NATS.Server/Imports/ImportMap.cs +++ b/src/NATS.Server/Imports/ImportMap.cs @@ -4,9 +4,20 @@ namespace NATS.Server.Imports; public sealed class ImportMap { + /// + /// Gets stream import definitions configured for the account. + /// public List Streams { get; } = []; + + /// + /// Gets service import definitions grouped by source subject. + /// public Dictionary> Services { get; } = new(StringComparer.Ordinal); + /// + /// Adds a service import under its source subject key. + /// + /// Service import definition to add. public void AddServiceImport(ServiceImport si) { if (!Services.TryGetValue(si.From, out var list)) diff --git a/src/NATS.Server/Imports/LatencyTracker.cs b/src/NATS.Server/Imports/LatencyTracker.cs index d4e9d43..852d53b 100644 --- a/src/NATS.Server/Imports/LatencyTracker.cs +++ b/src/NATS.Server/Imports/LatencyTracker.cs @@ -2,29 +2,57 @@ using System.Text.Json.Serialization; namespace NATS.Server.Imports; +/// +/// Serialized payload published for exported-service latency advisories. +/// public sealed class ServiceLatencyMsg { + /// + /// Gets or sets the schema identifier used by consumers to decode this metric event. + /// [JsonPropertyName("type")] public string Type { get; set; } = "io.nats.server.metric.v1.service_latency"; + /// + /// Gets or sets the account or identity that initiated the service request. + /// [JsonPropertyName("requestor")] public string Requestor { get; set; } = string.Empty; + /// + /// Gets or sets the service identity that responded to the request. + /// [JsonPropertyName("responder")] public string Responder { get; set; } = string.Empty; + /// + /// Gets or sets the service response status code reported in the advisory. + /// [JsonPropertyName("status")] public int Status { get; set; } = 200; + /// + /// Gets or sets service execution latency in nanoseconds on the responder side. + /// [JsonPropertyName("svc_latency")] public long ServiceLatencyNanos { get; set; } + /// + /// Gets or sets end-to-end request latency in nanoseconds from requestor to response. + /// [JsonPropertyName("total_latency")] public long TotalLatencyNanos { get; set; } } +/// +/// Sampling and payload helpers for service import latency metrics. +/// public static class LatencyTracker { + /// + /// Determines whether a request should emit latency telemetry based on configured sampling. + /// + /// Service latency sampling configuration from the export definition. public static bool ShouldSample(ServiceLatency latency) { if (latency.SamplingPercentage <= 0) return false; @@ -32,6 +60,13 @@ public static class LatencyTracker return Random.Shared.Next(100) < latency.SamplingPercentage; } + /// + /// Builds a service latency advisory payload from measured service and end-to-end durations. + /// + /// Identity of the requesting account or client. + /// Identity of the exported service that handled the request. + /// Time spent processing the request by the service itself. + /// Full request round-trip latency as observed by the server. public static ServiceLatencyMsg BuildLatencyMsg( string requestor, string responder, TimeSpan serviceLatency, TimeSpan totalLatency) diff --git a/src/NATS.Server/Imports/ResponseRouter.cs b/src/NATS.Server/Imports/ResponseRouter.cs index 1b8ca98..f26be42 100644 --- a/src/NATS.Server/Imports/ResponseRouter.cs +++ b/src/NATS.Server/Imports/ResponseRouter.cs @@ -30,6 +30,9 @@ public static class ResponseRouter /// Creates a response service import that maps the generated reply prefix /// back to the original reply subject on the requesting account. /// + /// Exporter account that stores temporary response imports. + /// Original service import that triggered the response path. + /// Original reply subject to route responder messages back to. public static ServiceImport CreateResponseImport( Account exporterAccount, ServiceImport originalImport, @@ -57,6 +60,9 @@ public static class ResponseRouter /// For Singleton responses, this is called after the first reply is delivered. /// For Streamed/Chunked, it is called when the response stream ends. /// + /// Account that owns the temporary response import map. + /// Generated reply prefix key to remove. + /// Response service import being cleaned up. public static void CleanupResponse(Account account, string replyPrefix, ServiceImport responseSi) { account.Exports.Responses.Remove(replyPrefix); diff --git a/src/NATS.Server/Imports/ServiceExport.cs b/src/NATS.Server/Imports/ServiceExport.cs index 0b4a9ed..e4308f7 100644 --- a/src/NATS.Server/Imports/ServiceExport.cs +++ b/src/NATS.Server/Imports/ServiceExport.cs @@ -4,10 +4,33 @@ namespace NATS.Server.Imports; public sealed class ServiceExport { + /// + /// Gets authorization rules controlling which accounts may import this service. + /// public ExportAuth Auth { get; init; } = new(); + + /// + /// Gets the exporting account that owns this service definition. + /// public Account? Account { get; init; } + + /// + /// Gets the response mode expected from service responders (singleton or streamed). + /// public ServiceResponseType ResponseType { get; init; } = ServiceResponseType.Singleton; + + /// + /// Gets the threshold used for service latency advisories and slow-response tracking. + /// public TimeSpan ResponseThreshold { get; init; } = TimeSpan.FromMinutes(2); + + /// + /// Gets optional service latency sampling configuration for exported service calls. + /// public ServiceLatency? Latency { get; init; } + + /// + /// Gets a value indicating whether distributed tracing headers are allowed for this service. + /// public bool AllowTrace { get; init; } } diff --git a/src/NATS.Server/Imports/ServiceImport.cs b/src/NATS.Server/Imports/ServiceImport.cs index 20d5536..c02b297 100644 --- a/src/NATS.Server/Imports/ServiceImport.cs +++ b/src/NATS.Server/Imports/ServiceImport.cs @@ -5,17 +5,30 @@ namespace NATS.Server.Imports; public sealed class ServiceImport { + /// Account that receives requests after the service import mapping is applied. public required Account DestinationAccount { get; init; } + /// Source subject exposed to the importing account. public required string From { get; init; } + /// Destination subject routed to the exporting account/service. public required string To { get; init; } + /// Optional subject transform applied when forwarding imported requests. public SubjectTransform? Transform { get; init; } + /// Export definition backing this import relationship. public ServiceExport? Export { get; init; } + /// Response behavior for imported service replies (singleton/stream/chunked). public ServiceResponseType ResponseType { get; init; } = ServiceResponseType.Singleton; + /// Subscription identifier bytes used for internal routing bookkeeping. public byte[]? Sid { get; set; } + /// Whether this import currently represents a generated response mapping. public bool IsResponse { get; init; } + /// Whether forwarding should use PUB semantics instead of request/reply. public bool UsePub { get; init; } + /// Whether the import definition has been invalidated. public bool Invalid { get; set; } + /// Whether this import can be shared across accounts/connections. public bool Share { get; init; } + /// Whether service latency/tracking metrics are enabled for this import. public bool Tracking { get; init; } + /// Last update timestamp stored as UTC ticks. public long TimestampTicks { get; set; } } diff --git a/src/NATS.Server/Imports/StreamImport.cs b/src/NATS.Server/Imports/StreamImport.cs index 832950d..ad1e2ec 100644 --- a/src/NATS.Server/Imports/StreamImport.cs +++ b/src/NATS.Server/Imports/StreamImport.cs @@ -5,10 +5,33 @@ namespace NATS.Server.Imports; public sealed class StreamImport { + /// + /// Gets the exporting account that owns the imported stream subjects. + /// public required Account SourceAccount { get; init; } + + /// + /// Gets the source subject pattern in the exporting account. + /// public required string From { get; init; } + + /// + /// Gets the destination subject pattern mapped into the importing account. + /// public required string To { get; init; } + + /// + /// Gets the optional transform applied while remapping imported stream subjects. + /// public SubjectTransform? Transform { get; init; } + + /// + /// Gets a value indicating whether the import is restricted to publish operations. + /// public bool UsePub { get; init; } + + /// + /// Gets or sets a value indicating whether this import has been marked invalid by validation logic. + /// public bool Invalid { get; set; } } diff --git a/src/NATS.Server/Internal/SubjectTree/Nodes.cs b/src/NATS.Server/Internal/SubjectTree/Nodes.cs index dab0ee0..8c847ed 100644 --- a/src/NATS.Server/Internal/SubjectTree/Nodes.cs +++ b/src/NATS.Server/Internal/SubjectTree/Nodes.cs @@ -182,11 +182,17 @@ internal sealed class Leaf : INode => Parts.MatchPartsAgainstFragment(parts, Suffix); // These should not be called on a leaf. + /// public void SetPrefix(ReadOnlySpan pre) => throw new InvalidOperationException("setPrefix called on leaf"); + /// public void AddChild(byte c, INode n) => throw new InvalidOperationException("addChild called on leaf"); + /// public ChildRef? FindChild(byte c) => throw new InvalidOperationException("findChild called on leaf"); + /// public INode Grow() => throw new InvalidOperationException("grow called on leaf"); + /// public void DeleteChild(byte c) => throw new InvalidOperationException("deleteChild called on leaf"); + /// public INode? Shrink() => throw new InvalidOperationException("shrink called on leaf"); } diff --git a/src/NATS.Server/Internal/SubjectTree/Parts.cs b/src/NATS.Server/Internal/SubjectTree/Parts.cs index 6e5a464..85e0181 100644 --- a/src/NATS.Server/Internal/SubjectTree/Parts.cs +++ b/src/NATS.Server/Internal/SubjectTree/Parts.cs @@ -20,6 +20,8 @@ internal static class Parts /// Returns the pivot byte at the given position, or NoPivot if past end. /// Go reference: server/stree/util.go:pivot /// + /// Subject bytes being inspected in the ART path. + /// Zero-based byte position to read from . internal static byte Pivot(ReadOnlySpan subject, int pos) { if (pos >= subject.Length) return NoPivot; @@ -30,6 +32,8 @@ internal static class Parts /// Returns the length of the common prefix between two byte spans. /// Go reference: server/stree/util.go:commonPrefixLen /// + /// First subject fragment. + /// Second subject fragment. internal static int CommonPrefixLen(ReadOnlySpan s1, ReadOnlySpan s2) { var limit = Math.Min(s1.Length, s2.Length); @@ -44,6 +48,7 @@ internal static class Parts /// /// Copy bytes helper. /// + /// Source bytes to clone into a managed array. internal static byte[] CopyBytes(ReadOnlySpan src) { if (src.Length == 0) return []; @@ -54,6 +59,7 @@ internal static class Parts /// Break a filter subject into parts based on wildcards (pwc '*' and fwc '>'). /// Go reference: server/stree/parts.go:genParts /// + /// Subscription filter subject that may include * or > wildcards. internal static ReadOnlyMemory[] GenParts(ReadOnlySpan filter) { var parts = new List>(); @@ -142,6 +148,8 @@ internal static class Parts /// Match parts against a fragment (prefix for nodes or suffix for leaves). /// Go reference: server/stree/parts.go:matchParts /// + /// Pre-tokenized wildcard and literal parts generated from a subject filter. + /// Current subject fragment being matched within the ART traversal. internal static (ReadOnlyMemory[] RemainingParts, bool Matched) MatchPartsAgainstFragment( ReadOnlyMemory[] parts, ReadOnlySpan frag) { diff --git a/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs b/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs index c328e17..54af640 100644 --- a/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs +++ b/src/NATS.Server/JetStream/Api/AdvisoryPublisher.cs @@ -11,6 +11,10 @@ public sealed class AdvisoryPublisher private readonly Action _publishAction; private long _publishCount; + /// + /// Creates an advisory publisher that emits advisory payloads through the provided callback. + /// + /// Callback that publishes advisory objects to subjects. public AdvisoryPublisher(Action publishAction) { _publishAction = publishAction; @@ -25,6 +29,8 @@ public sealed class AdvisoryPublisher /// Publishes a stream created advisory. /// Go reference: jetstream_api.go — advisory on stream creation. /// + /// Name of the created stream. + /// Optional stream-specific detail payload. public void StreamCreated(string streamName, object? detail = null) { var subject = string.Format(Events.EventSubjects.JsAdvisoryStreamCreated, streamName); @@ -41,6 +47,7 @@ public sealed class AdvisoryPublisher /// Publishes a stream deleted advisory. /// Go reference: jetstream_api.go — advisory on stream deletion. /// + /// Name of the deleted stream. public void StreamDeleted(string streamName) { var subject = string.Format(Events.EventSubjects.JsAdvisoryStreamDeleted, streamName); @@ -56,6 +63,8 @@ public sealed class AdvisoryPublisher /// Publishes a stream updated advisory. /// Go reference: jetstream_api.go — advisory on stream config update. /// + /// Name of the updated stream. + /// Optional update detail payload. public void StreamUpdated(string streamName, object? detail = null) { var subject = string.Format(Events.EventSubjects.JsAdvisoryStreamUpdated, streamName); @@ -72,6 +81,8 @@ public sealed class AdvisoryPublisher /// Publishes a consumer created advisory. /// Go reference: jetstream_api.go — advisory on consumer creation. /// + /// Parent stream name. + /// Created consumer name. public void ConsumerCreated(string streamName, string consumerName) { var subject = string.Format(Events.EventSubjects.JsAdvisoryConsumerCreated, streamName, consumerName); @@ -88,6 +99,8 @@ public sealed class AdvisoryPublisher /// Publishes a consumer deleted advisory. /// Go reference: jetstream_api.go — advisory on consumer deletion. /// + /// Parent stream name. + /// Deleted consumer name. public void ConsumerDeleted(string streamName, string consumerName) { var subject = string.Format(Events.EventSubjects.JsAdvisoryConsumerDeleted, streamName, consumerName); diff --git a/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs b/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs index a8d04c2..21baf91 100644 --- a/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs +++ b/src/NATS.Server/JetStream/Api/ApiRateLimiter.cs @@ -15,6 +15,11 @@ public sealed class ApiRateLimiter : IDisposable private readonly TimeSpan _dedupTtl; private readonly int _maxConcurrent; + /// + /// Creates a JetStream API limiter for request concurrency and short-window deduplication. + /// + /// Maximum concurrent API handlers allowed before rejecting new requests. + /// TTL window for request-id dedup cache entries. public ApiRateLimiter(int maxConcurrent = 256, TimeSpan? dedupTtl = null) { _maxConcurrent = maxConcurrent; @@ -33,6 +38,7 @@ public sealed class ApiRateLimiter : IDisposable /// Go reference: jetstream_api.go — non-blocking semaphore acquire; request is rejected /// immediately if no slots are available rather than queuing indefinitely. /// + /// Cancellation token for the slot acquisition attempt. public async Task TryAcquireAsync(CancellationToken ct = default) { return await _semaphore.WaitAsync(0, ct); @@ -51,6 +57,7 @@ public sealed class ApiRateLimiter : IDisposable /// Returns the cached response if found and not expired, null otherwise. /// Go reference: jetstream_api.go — dedup cache is keyed by Nats-Msg-Id header value. /// + /// Message-id dedup key from the request. public JetStreamApiResponse? GetCachedResponse(string? requestId) { if (string.IsNullOrEmpty(requestId)) @@ -73,6 +80,8 @@ public sealed class ApiRateLimiter : IDisposable /// Go reference: jetstream_api.go — response is stored with a timestamp so that /// subsequent requests with the same Nats-Msg-Id within the TTL window get the same result. /// + /// Message-id dedup key from the request. + /// Response payload to reuse for duplicate requests within the dedup window. public void CacheResponse(string? requestId, JetStreamApiResponse response) { if (string.IsNullOrEmpty(requestId)) @@ -99,6 +108,9 @@ public sealed class ApiRateLimiter : IDisposable return removed; } + /// + /// Releases semaphore resources held by the rate limiter. + /// public void Dispose() { _semaphore.Dispose(); diff --git a/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs b/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs index 97bea6d..8446fe9 100644 --- a/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs +++ b/src/NATS.Server/JetStream/Api/ClusteredRequestProcessor.cs @@ -18,6 +18,10 @@ public sealed class ClusteredRequestProcessor private readonly TimeSpan _timeout; private int _pendingCount; + /// + /// Creates a clustered request processor with a configurable wait timeout. + /// + /// Optional timeout for waiting on RAFT apply callbacks per request. public ClusteredRequestProcessor(TimeSpan? timeout = null) { _timeout = timeout ?? DefaultTimeout; @@ -47,6 +51,8 @@ public sealed class ClusteredRequestProcessor /// Go reference: jetstream_cluster.go:7620 — the goroutine waits on a per-request channel /// with a context deadline derived from the cluster's JSApiTimeout option. /// + /// Correlation id returned by . + /// Cancellation token for caller-initiated cancellation. public async Task WaitForResultAsync(string requestId, CancellationToken ct = default) { if (!_pending.TryGetValue(requestId, out var tcs)) @@ -76,6 +82,8 @@ public sealed class ClusteredRequestProcessor /// Go reference: jetstream_cluster.go:7620 — the RAFT apply callback resolves the pending /// request channel so the waiting goroutine can return the response to the caller. /// + /// Pending request correlation id. + /// Response generated after RAFT proposal application. public bool DeliverResult(string requestId, JetStreamApiResponse response) { if (!_pending.TryRemove(requestId, out var tcs)) @@ -91,6 +99,7 @@ public sealed class ClusteredRequestProcessor /// Go reference: jetstream_cluster.go — when RAFT leadership changes, all in-flight /// proposals must be failed with a "not leader" or "cancelled" error. /// + /// Reason string returned to callers in the synthesized 503 response. public void CancelAll(string reason = "leadership changed") { foreach (var (key, tcs) in _pending) diff --git a/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs b/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs index 34aae97..98cf203 100644 --- a/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs +++ b/src/NATS.Server/JetStream/Api/Handlers/AccountControlApiHandlers.cs @@ -2,9 +2,16 @@ namespace NATS.Server.JetStream.Api.Handlers; public static class AccountControlApiHandlers { + /// + /// Handles account-wide server-removal control requests. + /// public static JetStreamApiResponse HandleServerRemove() => JetStreamApiResponse.SuccessResponse(); + /// + /// Handles account purge requests routed via API subject. + /// + /// API subject containing account purge target. public static JetStreamApiResponse HandleAccountPurge(string subject) { if (!subject.StartsWith(JetStreamApiSubjects.AccountPurge, StringComparison.Ordinal)) @@ -14,6 +21,10 @@ public static class AccountControlApiHandlers return account.Length == 0 ? JetStreamApiResponse.NotFound(subject) : JetStreamApiResponse.SuccessResponse(); } + /// + /// Handles account stream-move requests routed via API subject. + /// + /// API subject containing account move target. public static JetStreamApiResponse HandleAccountStreamMove(string subject) { if (!subject.StartsWith(JetStreamApiSubjects.AccountStreamMove, StringComparison.Ordinal)) @@ -23,6 +34,10 @@ public static class AccountControlApiHandlers return account.Length == 0 ? JetStreamApiResponse.NotFound(subject) : JetStreamApiResponse.SuccessResponse(); } + /// + /// Handles account stream-move cancellation requests routed via API subject. + /// + /// API subject containing account move-cancel target. public static JetStreamApiResponse HandleAccountStreamMoveCancel(string subject) { if (!subject.StartsWith(JetStreamApiSubjects.AccountStreamMoveCancel, StringComparison.Ordinal)) diff --git a/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs b/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs index 749bfa1..932ce8f 100644 --- a/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs +++ b/src/NATS.Server/JetStream/Api/Handlers/ClusterControlApiHandlers.cs @@ -2,12 +2,21 @@ namespace NATS.Server.JetStream.Api.Handlers; public static class ClusterControlApiHandlers { + /// + /// Handles meta-group leader stepdown requests. + /// + /// JetStream meta group receiving the stepdown signal. public static JetStreamApiResponse HandleMetaLeaderStepdown(JetStream.Cluster.JetStreamMetaGroup meta) { meta.StepDown(); return JetStreamApiResponse.SuccessResponse(); } + /// + /// Handles stream leader stepdown requests routed via API subject. + /// + /// API subject containing stream leader-stepdown target. + /// Stream manager used to execute the stepdown action. public static JetStreamApiResponse HandleStreamLeaderStepdown(string subject, StreamManager streams) { if (!subject.StartsWith(JetStreamApiSubjects.StreamLeaderStepdown, StringComparison.Ordinal)) @@ -21,6 +30,10 @@ public static class ClusterControlApiHandlers return JetStreamApiResponse.SuccessResponse(); } + /// + /// Handles stream peer removal requests routed via API subject. + /// + /// API subject containing stream peer-removal target. public static JetStreamApiResponse HandleStreamPeerRemove(string subject) { if (!subject.StartsWith(JetStreamApiSubjects.StreamPeerRemove, StringComparison.Ordinal)) @@ -30,6 +43,10 @@ public static class ClusterControlApiHandlers return stream.Length == 0 ? JetStreamApiResponse.NotFound(subject) : JetStreamApiResponse.SuccessResponse(); } + /// + /// Handles consumer leader stepdown requests routed via API subject. + /// + /// API subject containing stream/consumer stepdown target. public static JetStreamApiResponse HandleConsumerLeaderStepdown(string subject) { if (!subject.StartsWith(JetStreamApiSubjects.ConsumerLeaderStepdown, StringComparison.Ordinal)) diff --git a/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs b/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs index 36d6c69..47667e9 100644 --- a/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs +++ b/src/NATS.Server/JetStream/Cluster/AssignmentCodec.cs @@ -49,6 +49,7 @@ public static class AssignmentCodec /// Go reference: jetstream_cluster.go:8703 encodeAddStreamAssignment — /// marshals the assignment struct (with ConfigJSON) to JSON. /// + /// Stream assignment payload to encode for meta-cluster replication. public static byte[] EncodeStreamAssignment(StreamAssignment sa) => JsonSerializer.SerializeToUtf8Bytes(sa, SerializerOptions); @@ -58,6 +59,7 @@ public static class AssignmentCodec /// Go reference: jetstream_cluster.go:8733 decodeStreamAssignment — /// json.Unmarshal(buf, &sa); returns nil, err on failure. /// + /// UTF-8 encoded stream assignment bytes from RAFT metadata messages. public static StreamAssignment? DecodeStreamAssignment(ReadOnlySpan data) { if (data.IsEmpty) @@ -84,6 +86,7 @@ public static class AssignmentCodec /// Go reference: jetstream_cluster.go:9175 encodeAddConsumerAssignment — /// marshals the assignment struct to JSON. /// + /// Consumer assignment payload to encode for cluster propagation. public static byte[] EncodeConsumerAssignment(ConsumerAssignment ca) => JsonSerializer.SerializeToUtf8Bytes(ca, SerializerOptions); @@ -93,6 +96,7 @@ public static class AssignmentCodec /// Go reference: jetstream_cluster.go:9195 decodeConsumerAssignment — /// json.Unmarshal(buf, &ca); returns nil, err on failure. /// + /// UTF-8 encoded consumer assignment bytes from metadata updates. public static ConsumerAssignment? DecodeConsumerAssignment(ReadOnlySpan data) { if (data.IsEmpty) @@ -128,6 +132,8 @@ public static class AssignmentCodec /// s2.NewWriter used to compress large consumer assignment payloads; the caller /// prepends the assignCompressedConsumerOp opcode byte as a similar kind of marker. /// + /// Uncompressed assignment payload bytes. + /// Minimum byte size required before compression is applied. public static byte[] CompressIfLarge(byte[] data, int threshold = 1024) { if (data.Length <= threshold) @@ -148,6 +154,7 @@ public static class AssignmentCodec /// s2.NewReader used to decompress consumer assignment payloads that were compressed /// before being proposed to the meta RAFT group. /// + /// Compressed-or-plain payload bytes received from cluster metadata transport. public static byte[] DecompressIfNeeded(byte[] data) { if (data.Length > 0 && data[0] == CompressedMarker) diff --git a/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs b/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs index 453a5aa..356d77d 100644 --- a/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs +++ b/src/NATS.Server/JetStream/Cluster/JetStreamClusterMonitor.cs @@ -30,11 +30,22 @@ public sealed class JetStreamClusterMonitor /// public int ProcessedCount { get { lock (_processedLock) return _processedCount; } } + /// + /// Creates a cluster monitor with a null logger for lightweight test and host setups. + /// + /// Meta-group state container receiving assignment updates. + /// RAFT entry channel consumed by the monitor loop. public JetStreamClusterMonitor(JetStreamMetaGroup meta, ChannelReader entries) : this(meta, entries, NullLogger.Instance) { } + /// + /// Creates a cluster monitor with explicit logger injection. + /// + /// Meta-group state container receiving assignment updates. + /// RAFT entry channel consumed by the monitor loop. + /// Logger for malformed entry and state-application diagnostics. public JetStreamClusterMonitor( JetStreamMetaGroup meta, ChannelReader entries, @@ -50,6 +61,7 @@ public sealed class JetStreamClusterMonitor /// Each entry is applied synchronously before the next is read. /// Returns normally (without throwing) when is cancelled. /// + /// Cancellation token used to stop the monitor loop. public async Task StartAsync(CancellationToken ct) { try @@ -75,6 +87,8 @@ public sealed class JetStreamClusterMonitor /// . Returns immediately when the target is already met. /// Used by tests to synchronise without sleeping. /// + /// Minimum processed-entry count to wait for. + /// Cancellation token for aborting the wait. public Task WaitForProcessedAsync(int targetCount, CancellationToken ct) { // Fast path — already done. diff --git a/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs b/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs index f937560..f45508b 100644 --- a/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs +++ b/src/NATS.Server/JetStream/Cluster/PlacementEngine.cs @@ -31,6 +31,11 @@ public static class PlacementEngine /// Overloaded peers are tried only after preferred candidates are exhausted. /// 8. Throw InvalidOperationException if fewer than replicas peers can be selected. /// + /// RAFT group name being placed. + /// Required number of replicas/peers. + /// Available cluster peers considered for placement. + /// Optional placement policy with cluster/tag constraints. + /// Per-asset storage penalty used in scoring. public static RaftGroup SelectPeerGroup( string groupName, int replicas, @@ -201,10 +206,15 @@ public static class PlacementEngine /// public sealed class PeerInfo { + /// Unique peer identifier used in RAFT group membership. public required string PeerId { get; init; } + /// Cluster name/partition where this peer resides. public string Cluster { get; set; } = string.Empty; + /// Capability and topology tags advertised by this peer. public HashSet Tags { get; init; } = new(StringComparer.OrdinalIgnoreCase); + /// Whether this peer is currently eligible for new assignments. public bool Available { get; set; } = true; + /// Approximate remaining storage available for new assets. public long AvailableStorage { get; set; } = long.MaxValue; /// @@ -228,8 +238,11 @@ public sealed class PeerInfo /// public sealed class PlacementPolicy { + /// Optional cluster affinity constraint. public string? Cluster { get; set; } + /// Required tags that must all be present on a candidate peer. public HashSet? Tags { get; set; } + /// Tags that disqualify a candidate peer when present. public HashSet? ExcludeTags { get; set; } /// diff --git a/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs b/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs index 154a8c6..73010e7 100644 --- a/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs +++ b/src/NATS.Server/JetStream/Consumers/FilterSkipTracker.cs @@ -17,6 +17,11 @@ public sealed class FilterSkipTracker private long _matchCount; private long _skipCount; + /// + /// Creates a filter-skip tracker for single or multi-subject consumer filters. + /// + /// Optional single filter subject for consumer delivery. + /// Optional multi-subject filter set for consumer delivery. public FilterSkipTracker(string? filterSubject = null, IReadOnlyList? filterSubjects = null) { _filterSubject = filterSubject; @@ -46,6 +51,7 @@ public sealed class FilterSkipTracker /// Uses SubjectMatch.MatchLiteral for NATS token-based matching. /// Go reference: consumer.go isFilteredMatch. /// + /// Message subject being evaluated for this consumer. public bool ShouldDeliver(string subject) { if (!HasFilter) @@ -79,6 +85,7 @@ public sealed class FilterSkipTracker /// /// Records a skipped sequence for gap tracking. /// + /// Stream sequence skipped due to filter mismatch. public void RecordSkip(ulong sequence) { _skippedSequences.Add(sequence); @@ -88,6 +95,7 @@ public sealed class FilterSkipTracker /// Returns the next unskipped sequence >= startSeq. /// Used to find the next deliverable message efficiently. /// + /// Candidate sequence to begin searching from. public ulong NextUnskippedSequence(ulong startSeq) { var seq = startSeq; @@ -100,6 +108,7 @@ public sealed class FilterSkipTracker /// Clears skipped sequences below the given floor (e.g., ack floor). /// Prevents unbounded growth. /// + /// Inclusive lower bound; skipped sequences below this value are removed. public void PurgeBelow(ulong floor) { _skippedSequences.RemoveWhere(s => s < floor); diff --git a/src/NATS.Server/JetStream/Consumers/SampleTracker.cs b/src/NATS.Server/JetStream/Consumers/SampleTracker.cs index 634ef03..7739cab 100644 --- a/src/NATS.Server/JetStream/Consumers/SampleTracker.cs +++ b/src/NATS.Server/JetStream/Consumers/SampleTracker.cs @@ -17,6 +17,8 @@ public sealed class SampleTracker /// Creates a sample tracker with the given rate (0.0 to 1.0). /// Use ParseSampleFrequency to convert string like "1%" to rate. /// + /// Sampling probability as a fraction from 0.0 to 1.0. + /// Optional random source for deterministic testability. public SampleTracker(double sampleRate, Random? random = null) { _sampleRate = Math.Clamp(sampleRate, 0.0, 1.0); @@ -61,6 +63,9 @@ public sealed class SampleTracker /// Records a latency measurement for a sampled delivery. /// Returns a LatencySample for advisory publication. /// + /// Observed delivery latency for the sampled message. + /// Stream sequence number of the sampled message. + /// Subject delivered to the consumer. public LatencySample RecordLatency(TimeSpan deliveryLatency, ulong sequence, string subject) { return new LatencySample @@ -78,6 +83,7 @@ public sealed class SampleTracker /// Returns 0.0 for invalid or empty strings. /// Go reference: consumer.go parseSampleFrequency. /// + /// Human-readable percentage string. public static double ParseSampleFrequency(string? frequency) { if (string.IsNullOrWhiteSpace(frequency)) @@ -104,8 +110,12 @@ public sealed class SampleTracker /// public sealed class LatencySample { + /// Stream sequence number of the sampled message. public ulong Sequence { get; init; } + /// Subject delivered to the consumer. public string Subject { get; init; } = string.Empty; + /// Observed delivery latency for this sample. public TimeSpan DeliveryLatency { get; init; } + /// UTC timestamp when the sample was captured. public DateTime SampledAtUtc { get; init; } } diff --git a/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs b/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs index 17e3f2f..fff7cba 100644 --- a/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs +++ b/src/NATS.Server/JetStream/Consumers/TokenBucketRateLimiter.cs @@ -50,6 +50,7 @@ public sealed class TokenBucketRateLimiter /// Returns true if tokens were available (message can be sent). /// Returns false if not enough tokens (caller should wait). /// + /// Number of payload bytes to reserve from the token bucket. public bool TryConsume(long bytes) { if (BytesPerSecond <= 0) return true; // Unlimited @@ -69,6 +70,7 @@ public sealed class TokenBucketRateLimiter /// /// Returns the estimated wait time until enough tokens are available. /// + /// Number of bytes needed before send can proceed. public TimeSpan EstimateWait(long bytes) { if (BytesPerSecond <= 0) return TimeSpan.Zero; @@ -87,6 +89,8 @@ public sealed class TokenBucketRateLimiter /// /// Waits until enough tokens are available, then consumes them. /// + /// Number of payload bytes that must be available. + /// Cancellation token to stop waiting when request processing is canceled. public async ValueTask WaitForTokensAsync(long bytes, CancellationToken ct = default) { if (BytesPerSecond <= 0) return; @@ -107,6 +111,8 @@ public sealed class TokenBucketRateLimiter /// Updates the rate dynamically. /// Go reference: consumer.go — rate can change on config update. /// + /// New throughput limit in bytes per second. + /// Optional new burst ceiling; defaults to two seconds of throughput. public void UpdateRate(long bytesPerSecond, long burstSize = 0) { lock (_lock) diff --git a/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs b/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs index 81c9a51..ff95e74 100644 --- a/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs +++ b/src/NATS.Server/JetStream/Consumers/WaitingRequestQueue.cs @@ -25,6 +25,7 @@ public sealed record PullRequest( public void ConsumeBatch() => RemainingBatch--; /// Subtract delivered bytes from remaining byte budget. + /// Delivered payload bytes to subtract from this pull request budget. public void ConsumeBytes(long bytes) => RemainingBytes -= bytes; } @@ -38,11 +39,25 @@ public sealed class WaitingRequestQueue { private readonly LinkedList _queue = new(); + /// + /// Gets the current number of queued pull requests awaiting delivery. + /// public int Count => _queue.Count; + + /// + /// Gets a value indicating whether there are no pending pull requests. + /// public bool IsEmpty => _queue.Count == 0; + /// + /// Enqueues a pull request at the tail of the FIFO wait queue. + /// + /// Pull request to add. public void Enqueue(PullRequest request) => _queue.AddLast(request); + /// + /// Dequeues the oldest pending pull request, or when empty. + /// public PullRequest? TryDequeue() { if (_queue.Count == 0) return null; @@ -51,6 +66,10 @@ public sealed class WaitingRequestQueue return first; } + /// + /// Removes expired pull requests whose deadline is at or before . + /// + /// Current timestamp used for expiry comparison. public void RemoveExpired(DateTimeOffset now) { var node = _queue.First; diff --git a/src/NATS.Server/JetStream/InterestRetentionPolicy.cs b/src/NATS.Server/JetStream/InterestRetentionPolicy.cs index dabad26..7c4484e 100644 --- a/src/NATS.Server/JetStream/InterestRetentionPolicy.cs +++ b/src/NATS.Server/JetStream/InterestRetentionPolicy.cs @@ -18,6 +18,8 @@ public sealed class InterestRetentionPolicy /// /// Register a consumer's interest in a subject pattern. /// + /// Durable or ephemeral consumer name whose interest is tracked. + /// Consumer filter subject used to determine message relevance. public void RegisterInterest(string consumer, string filterSubject) { _interests[consumer] = filterSubject; @@ -26,6 +28,7 @@ public sealed class InterestRetentionPolicy /// /// Remove a consumer's interest (e.g., on deletion). /// + /// Consumer identifier to remove from interest tracking. public void UnregisterInterest(string consumer) { _interests.Remove(consumer); @@ -34,6 +37,8 @@ public sealed class InterestRetentionPolicy /// /// Record that a consumer has acknowledged delivery of a sequence. /// + /// Consumer that acknowledged delivery. + /// Stream sequence number being acknowledged. public void AcknowledgeDelivery(string consumer, ulong seq) { if (!_acks.TryGetValue(seq, out var ackedBy)) @@ -49,6 +54,8 @@ public sealed class InterestRetentionPolicy /// interested consumer has NOT yet acknowledged it). /// A consumer is "interested" if its filter subject matches the message subject. /// + /// Stream sequence being evaluated for retention eligibility. + /// Published subject of the message at . public bool ShouldRetain(ulong seq, string msgSubject) { _acks.TryGetValue(seq, out var ackedBy); diff --git a/src/NATS.Server/JetStream/JetStreamProfiler.cs b/src/NATS.Server/JetStream/JetStreamProfiler.cs index e1250a5..385f9bf 100644 --- a/src/NATS.Server/JetStream/JetStreamProfiler.cs +++ b/src/NATS.Server/JetStream/JetStreamProfiler.cs @@ -19,16 +19,36 @@ public static class JetStreamProfiler private static long _ackDeliverTicks; private static long _totalProcessMessageTicks; + /// Records ticks spent in stream subject-to-stream resolution. + /// Elapsed stopwatch ticks. public static void RecordFindBySubject(long ticks) => Interlocked.Add(ref _findBySubjectTicks, ticks); + /// Records ticks spent loading stream state metadata. + /// Elapsed stopwatch ticks. public static void RecordGetState(long ticks) => Interlocked.Add(ref _getStateTicks, ticks); + /// Records ticks spent appending to stream storage. + /// Elapsed stopwatch ticks. public static void RecordAppend(long ticks) => Interlocked.Add(ref _appendTicks, ticks); + /// Records ticks spent enforcing stream retention/limit policies. + /// Elapsed stopwatch ticks. public static void RecordEnforcePolicies(long ticks) => Interlocked.Add(ref _enforcePoliciesTicks, ticks); + /// Records residual capture overhead not attributed to named stages. + /// Elapsed stopwatch ticks. public static void RecordCaptureOverhead(long ticks) => Interlocked.Add(ref _captureOverheadTicks, ticks); + /// Records ticks spent serializing publish-related JSON responses/events. + /// Elapsed stopwatch ticks. public static void RecordJsonSerialize(long ticks) => Interlocked.Add(ref _jsonSerializeTicks, ticks); + /// Records ticks spent in ack-delivery and ack-path bookkeeping. + /// Elapsed stopwatch ticks. public static void RecordAckDeliver(long ticks) => Interlocked.Add(ref _ackDeliverTicks, ticks); + /// Records total ticks spent processing a message end-to-end. + /// Elapsed stopwatch ticks. public static void RecordTotalProcessMessage(long ticks) => Interlocked.Add(ref _totalProcessMessageTicks, ticks); + /// Increments the total processed-call counter. public static void IncrementCalls() => Interlocked.Increment(ref _totalCalls); + /// + /// Returns a formatted profile report and resets all accumulated counters. + /// public static string DumpAndReset() { var calls = Interlocked.Exchange(ref _totalCalls, 0); diff --git a/src/NATS.Server/JetStream/JetStreamService.cs b/src/NATS.Server/JetStream/JetStreamService.cs index f15639e..abd1573 100644 --- a/src/NATS.Server/JetStream/JetStreamService.cs +++ b/src/NATS.Server/JetStream/JetStreamService.cs @@ -44,7 +44,14 @@ public sealed class JetStreamService : IAsyncDisposable private readonly ILogger _logger; private List _registeredApiSubjects = []; + /// + /// Gets the internal client used for local system publications, when configured. + /// public InternalClient? InternalClient { get; } + + /// + /// Gets a value indicating whether JetStream API subjects are currently registered. + /// public bool IsRunning { get; private set; } /// @@ -77,11 +84,22 @@ public sealed class JetStreamService : IAsyncDisposable /// public long MaxStore => _options.MaxFileStore; + /// + /// Creates a JetStream service using null logging for lightweight host wiring. + /// + /// JetStream configuration limits and storage settings. + /// Optional internal client for server-generated JetStream API traffic. public JetStreamService(JetStreamOptions options, InternalClient? internalClient = null) : this(options, internalClient, NullLoggerFactory.Instance) { } + /// + /// Creates a JetStream service with explicit logging factory control. + /// + /// JetStream configuration limits and storage settings. + /// Optional internal client for server-generated JetStream API traffic. + /// Logger factory used to create component loggers. public JetStreamService(JetStreamOptions options, InternalClient? internalClient, ILoggerFactory loggerFactory) { _options = options; @@ -92,6 +110,10 @@ public sealed class JetStreamService : IAsyncDisposable // Maps to Go's enableJetStream() in server/jetstream.go:414-523. // Validates the store directory, creates it if absent, then registers all // $JS.API.> subjects so inbound API messages can be routed. + /// + /// Starts JetStream by validating storage and registering all JetStream API subjects. + /// + /// Cancellation token for startup flow control. public Task StartAsync(CancellationToken ct) { if (IsRunning) @@ -138,6 +160,9 @@ public sealed class JetStreamService : IAsyncDisposable // Maps to Go's shutdown path in jetstream.go. // Clears registered subjects and marks the service as not running. + /// + /// Stops JetStream and removes registered API subjects. + /// public ValueTask DisposeAsync() { _registeredApiSubjects = []; diff --git a/src/NATS.Server/JetStream/JsVersioning.cs b/src/NATS.Server/JetStream/JsVersioning.cs index be85025..55aa904 100644 --- a/src/NATS.Server/JetStream/JsVersioning.cs +++ b/src/NATS.Server/JetStream/JsVersioning.cs @@ -34,6 +34,7 @@ public static class JsVersioning /// Returns the required API level string from metadata, or empty if absent. /// Go: getRequiredApiLevel (jetstream_versioning.go:28) /// + /// Metadata dictionary that may contain the required-level key. public static string GetRequiredApiLevel(Dictionary? metadata) { if (metadata != null && metadata.TryGetValue(RequiredLevelKey, out var level) && level.Length > 0) @@ -45,6 +46,7 @@ public static class JsVersioning /// Returns whether the required API level is supported by this server. /// Go: supportsRequiredApiLevel (jetstream_versioning.go:36) /// + /// Metadata dictionary that may contain required-level information. public static bool SupportsRequiredApiLevel(Dictionary? metadata) { var level = GetRequiredApiLevel(metadata); @@ -60,6 +62,7 @@ public static class JsVersioning /// Clears dynamic fields (server version/level) and sets the required API level. /// Go: setStaticStreamMetadata (jetstream_versioning.go:44) /// + /// Stream configuration to mutate with static version metadata. public static void SetStaticStreamMetadata(StreamConfig cfg) { if (cfg.Metadata == null) @@ -98,6 +101,7 @@ public static class JsVersioning /// The original config is not modified. /// Go: setDynamicStreamMetadata (jetstream_versioning.go:88) /// + /// Source stream configuration. public static StreamConfig SetDynamicStreamMetadata(StreamConfig cfg) { // Shallow copy the config @@ -118,6 +122,8 @@ public static class JsVersioning /// Removes dynamic fields. If prevCfg has no metadata, removes the key from cfg. /// Go: copyStreamMetadata (jetstream_versioning.go:110) /// + /// Target stream configuration to update. + /// Previous stream configuration whose required-level metadata is preserved. public static void CopyStreamMetadata(StreamConfig cfg, StreamConfig? prevCfg) { if (cfg.Metadata != null) @@ -129,6 +135,7 @@ public static class JsVersioning /// Sets static (stored) versioning metadata on a consumer config. /// Go: setStaticConsumerMetadata (jetstream_versioning.go:136) /// + /// Consumer configuration to mutate with static version metadata. public static void SetStaticConsumerMetadata(ConsumerConfig cfg) { if (cfg.Metadata == null) @@ -154,6 +161,7 @@ public static class JsVersioning /// Returns a copy of the consumer config with dynamic metadata fields added. /// Go: setDynamicConsumerMetadata (jetstream_versioning.go:164) /// + /// Source consumer configuration. public static ConsumerConfig SetDynamicConsumerMetadata(ConsumerConfig cfg) { var newCfg = ShallowCopyConsumer(cfg); @@ -173,6 +181,8 @@ public static class JsVersioning /// Removes dynamic fields. /// Go: copyConsumerMetadata (jetstream_versioning.go:198) /// + /// Target consumer configuration to update. + /// Previous consumer configuration whose required-level metadata is preserved. public static void CopyConsumerMetadata(ConsumerConfig cfg, ConsumerConfig? prevCfg) { if (cfg.Metadata != null) @@ -184,6 +194,7 @@ public static class JsVersioning /// Removes dynamic metadata fields (server version and level) from a metadata dictionary. /// Go: deleteDynamicMetadata (jetstream_versioning.go:222) /// + /// Metadata dictionary to clean. public static void DeleteDynamicMetadata(Dictionary metadata) { metadata.Remove(ServerVersionKey); diff --git a/src/NATS.Server/JetStream/Models/CounterValue.cs b/src/NATS.Server/JetStream/Models/CounterValue.cs index bec9451..61f34a2 100644 --- a/src/NATS.Server/JetStream/Models/CounterValue.cs +++ b/src/NATS.Server/JetStream/Models/CounterValue.cs @@ -7,15 +7,32 @@ namespace NATS.Server.JetStream.Models; // Reference: golang/nats-server/server/stream.go:20759 public sealed class CounterValue { + /// + /// Gets or sets the counter value encoded as a string for wire compatibility. + /// [JsonPropertyName("val")] public string Value { get; set; } = "0"; + /// + /// Parses the string counter value as a signed 64-bit integer. + /// public long AsLong() => long.TryParse(Value, out var v) ? v : 0; + /// + /// Creates a counter payload object from a numeric value. + /// + /// Numeric counter value to encode. public static CounterValue FromLong(long value) => new() { Value = value.ToString() }; + /// + /// Serializes the counter payload to JSON UTF-8 bytes. + /// public byte[] ToPayload() => JsonSerializer.SerializeToUtf8Bytes(this); + /// + /// Deserializes a counter payload from JSON bytes. + /// + /// JSON payload bytes containing the counter value. public static CounterValue FromPayload(ReadOnlySpan payload) { if (payload.IsEmpty) diff --git a/src/NATS.Server/JetStream/Models/StreamState.cs b/src/NATS.Server/JetStream/Models/StreamState.cs index 8b779c2..f11ecf9 100644 --- a/src/NATS.Server/JetStream/Models/StreamState.cs +++ b/src/NATS.Server/JetStream/Models/StreamState.cs @@ -2,8 +2,23 @@ namespace NATS.Server.JetStream.Models; public sealed class ApiStreamState { + /// + /// Gets or sets current number of messages stored in the stream. + /// public ulong Messages { get; set; } + + /// + /// Gets or sets first available stream sequence. + /// public ulong FirstSeq { get; set; } + + /// + /// Gets or sets latest stream sequence. + /// public ulong LastSeq { get; set; } + + /// + /// Gets or sets total bytes retained by the stream. + /// public ulong Bytes { get; set; } } diff --git a/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs b/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs index 565b523..96200a4 100644 --- a/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs +++ b/src/NATS.Server/JetStream/Publish/JetStreamPubAckFormatter.cs @@ -18,6 +18,9 @@ internal static class JetStreamPubAckFormatter /// Formats a success PubAck directly into a span. Returns bytes written. /// Caller must ensure dest is large enough (256 bytes is safe for any stream name). /// + /// Destination span receiving UTF-8 formatted JSON bytes. + /// Stream name included in the ack payload. + /// Assigned stream sequence to include in the ack payload. public static int FormatSuccess(Span dest, string streamName, ulong seq) { var pos = 0; @@ -36,6 +39,7 @@ internal static class JetStreamPubAckFormatter /// /// Returns true if this PubAck is a simple success that can use the fast formatter. /// + /// Publish acknowledgement to classify. public static bool IsSimpleSuccess(PubAck ack) => ack.ErrorCode == null && !ack.Duplicate && ack.BatchId == null; } diff --git a/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs b/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs index 4c4e2ad..b621deb 100644 --- a/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs +++ b/src/NATS.Server/JetStream/Publish/JetStreamPublisher.cs @@ -9,17 +9,41 @@ public sealed class JetStreamPublisher // Go reference: server/jetstream_batching.go streamBatches private readonly AtomicBatchPublishEngine _batchEngine = new(); + /// + /// Creates a JetStream publisher bound to a stream manager. + /// + /// Stream manager used to resolve and capture published messages. public JetStreamPublisher(StreamManager streamManager) { _streamManager = streamManager; } + /// + /// Captures a publish using default publish options. + /// + /// Publish subject. + /// Message payload. + /// Publish acknowledgement output. public bool TryCapture(string subject, ReadOnlyMemory payload, out PubAck ack) => TryCaptureWithOptions(subject, payload, new PublishOptions(), out ack); + /// + /// Captures a publish with an explicit message id for deduplication checks. + /// + /// Publish subject. + /// Message payload. + /// Optional message id used for duplicate detection. + /// Publish acknowledgement output. public bool TryCapture(string subject, ReadOnlyMemory payload, string? msgId, out PubAck ack) => TryCaptureWithOptions(subject, payload, new PublishOptions { MsgId = msgId }, out ack); + /// + /// Captures a publish using explicit publish options and precondition checks. + /// + /// Publish subject. + /// Message payload. + /// Publish options including dedupe and expected-last preconditions. + /// Publish acknowledgement output. public bool TryCaptureWithOptions(string subject, ReadOnlyMemory payload, PublishOptions options, out PubAck ack) { if (_streamManager.FindBySubject(subject) is not { } stream) diff --git a/src/NATS.Server/JetStream/Publish/PubAck.cs b/src/NATS.Server/JetStream/Publish/PubAck.cs index be348ce..78a853c 100644 --- a/src/NATS.Server/JetStream/Publish/PubAck.cs +++ b/src/NATS.Server/JetStream/Publish/PubAck.cs @@ -2,16 +2,37 @@ namespace NATS.Server.JetStream.Publish; public sealed class PubAck { + /// + /// Gets the stream name that accepted the published message. + /// public string Stream { get; init; } = string.Empty; + + /// + /// Gets the stream sequence assigned to the accepted message. + /// public ulong Seq { get; init; } + + /// + /// Gets a value indicating whether this acknowledgement represents a deduplicated publish. + /// public bool Duplicate { get; init; } + + /// + /// Gets the JetStream API error code when the publish was rejected. + /// public int? ErrorCode { get; init; } // Go: JSPubAckResponse.BatchId — identifies which batch this ack belongs to. // Go reference: server/jetstream_batching.go (JSPubAckResponse struct) + /// + /// Gets the batch identifier when this ack belongs to an atomic publish batch. + /// public string? BatchId { get; init; } // Go: JSPubAckResponse.BatchSize — total number of messages committed in this batch. // Go reference: server/jetstream_batching.go (JSPubAckResponse struct) + /// + /// Gets the number of messages committed in the acknowledged batch. + /// public int BatchSize { get; init; } } diff --git a/src/NATS.Server/JetStream/Publish/PublishOptions.cs b/src/NATS.Server/JetStream/Publish/PublishOptions.cs index 9b22a04..96a65f0 100644 --- a/src/NATS.Server/JetStream/Publish/PublishOptions.cs +++ b/src/NATS.Server/JetStream/Publish/PublishOptions.cs @@ -2,20 +2,47 @@ namespace NATS.Server.JetStream.Publish; public sealed class PublishOptions { + /// + /// Gets the idempotency token used to deduplicate retried publishes on the stream. + /// public string? MsgId { get; init; } + + /// + /// Gets the expected stream last sequence precondition for optimistic concurrency checks. + /// public ulong ExpectedLastSeq { get; init; } + + /// + /// Gets the expected last sequence for a specific subject when enforcing subject-level ordering. + /// public ulong ExpectedLastSubjectSeq { get; init; } + + /// + /// Gets the subject associated with precondition checks. + /// public string? ExpectedLastSubjectSeqSubject { get; init; } // Go: Nats-Batch-Id header — identifies which atomic batch this message belongs to. + /// + /// Gets the batch identifier used to group staged messages into a single commit set. + /// public string? BatchId { get; init; } // Go: Nats-Batch-Sequence header — 1-based position within the batch. + /// + /// Gets the 1-based position of this message within its JetStream publish batch. + /// public ulong BatchSeq { get; init; } // Go: Nats-Batch-Commit header — "1" or "eob" to commit, null/empty to stage only. + /// + /// Gets the batch commit marker signaling end-of-batch or explicit commit behavior. + /// public string? BatchCommit { get; init; } // Go: Nats-Expected-Last-Msg-Id header — unsupported inside a batch. + /// + /// Gets the expected last message id precondition used to guard against duplicate writes. + /// public string? ExpectedLastMsgId { get; init; } } diff --git a/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs b/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs index 6566583..66d8282 100644 --- a/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs +++ b/src/NATS.Server/JetStream/Publish/PublishPreconditions.cs @@ -6,6 +6,12 @@ public sealed class PublishPreconditions { private readonly ConcurrentDictionary _dedupe = new(StringComparer.Ordinal); + /// + /// Checks whether a message id is still inside the duplicate window. + /// + /// Message-id header used for deduplication. + /// Duplicate window size in milliseconds. + /// Existing stored sequence when a duplicate is detected. public bool IsDuplicate(string? msgId, int duplicateWindowMs, out ulong existingSequence) { existingSequence = 0; @@ -26,6 +32,11 @@ public sealed class PublishPreconditions return true; } + /// + /// Records a message id and sequence for future duplicate detection. + /// + /// Message-id header value to track. + /// Stream sequence assigned to the message. public void Record(string? msgId, ulong sequence) { if (string.IsNullOrEmpty(msgId)) @@ -34,6 +45,10 @@ public sealed class PublishPreconditions _dedupe[msgId] = new DedupeEntry(sequence, DateTime.UtcNow); } + /// + /// Removes dedupe entries older than the duplicate window. + /// + /// Duplicate window size in milliseconds. public void TrimOlderThan(int duplicateWindowMs) { if (duplicateWindowMs <= 0) @@ -47,6 +62,11 @@ public sealed class PublishPreconditions } } + /// + /// Validates expected-last-sequence precondition against current stream sequence. + /// + /// Expected last sequence from publish precondition header. + /// Current stream last sequence. public bool CheckExpectedLastSeq(ulong expectedLastSeq, ulong actualLastSeq) => expectedLastSeq == 0 || expectedLastSeq == actualLastSeq; diff --git a/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs b/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs index 1bad564..9f19387 100644 --- a/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs +++ b/src/NATS.Server/JetStream/Storage/AeadEncryptor.cs @@ -65,6 +65,9 @@ internal static class AeadEncryptor /// Encrypts with the given /// and . /// + /// Plain JetStream block bytes to protect at rest. + /// 32-byte encryption key derived for the store context. + /// Configured at-rest cipher selection. /// /// Wire format: [12:nonce][16:tag][N:ciphertext] /// @@ -112,6 +115,9 @@ internal static class AeadEncryptor /// /// Decrypts data produced by . /// + /// Encrypted block bytes in nonce/tag/ciphertext wire format. + /// 32-byte encryption key used when the block was encrypted. + /// Configured at-rest cipher selection. /// Plaintext bytes. /// If key length is not 32 bytes or data is too short. /// If authentication tag verification fails. diff --git a/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs b/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs index 9949e96..5c26006 100644 --- a/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs +++ b/src/NATS.Server/JetStream/Storage/AtomicFileWriter.cs @@ -18,6 +18,8 @@ public static class AtomicFileWriter /// The data is written to a unique {path}.{random}.tmp sibling, flushed, /// then renamed over with overwrite semantics. /// + /// Target file path to replace atomically. + /// Binary payload bytes to persist. public static async Task WriteAtomicallyAsync(string path, byte[] data) { var tmpPath = path + "." + Path.GetRandomFileName() + ".tmp"; @@ -35,6 +37,8 @@ public static class AtomicFileWriter /// The data is written to a unique {path}.{random}.tmp sibling, flushed, /// then renamed over with overwrite semantics. /// + /// Target file path to replace atomically. + /// Binary payload bytes to persist. public static async Task WriteAtomicallyAsync(string path, ReadOnlyMemory data) { var tmpPath = path + "." + Path.GetRandomFileName() + ".tmp"; diff --git a/src/NATS.Server/JetStream/Storage/ConsumerState.cs b/src/NATS.Server/JetStream/Storage/ConsumerState.cs index fe459d6..f9e4077 100644 --- a/src/NATS.Server/JetStream/Storage/ConsumerState.cs +++ b/src/NATS.Server/JetStream/Storage/ConsumerState.cs @@ -26,16 +26,28 @@ public record struct Pending(ulong Sequence, long Timestamp); public sealed class ConsumerState { // Go: ConsumerState.Delivered — highest consumer-seq and stream-seq delivered + /// + /// Gets or sets highest delivered consumer/stream sequence pair. + /// public SequencePair Delivered { get; set; } // Go: ConsumerState.AckFloor — highest consumer-seq and stream-seq fully acknowledged + /// + /// Gets or sets highest fully acknowledged consumer/stream sequence pair. + /// public SequencePair AckFloor { get; set; } // Go: ConsumerState.Pending — pending acks keyed by stream sequence; only present // when AckPolicy is Explicit. + /// + /// Gets or sets pending explicit-ack entries keyed by stream sequence. + /// public Dictionary? Pending { get; set; } // Go: ConsumerState.Redelivered — redelivery counts keyed by stream sequence; // only present when a message has been delivered more than once. + /// + /// Gets or sets redelivery counters keyed by stream sequence. + /// public Dictionary? Redelivered { get; set; } } diff --git a/src/NATS.Server/JetStream/Storage/ConsumerStateCodec.cs b/src/NATS.Server/JetStream/Storage/ConsumerStateCodec.cs index ab9f9b6..40780b1 100644 --- a/src/NATS.Server/JetStream/Storage/ConsumerStateCodec.cs +++ b/src/NATS.Server/JetStream/Storage/ConsumerStateCodec.cs @@ -44,6 +44,7 @@ public static class ConsumerStateCodec /// Encodes consumer state into the Go-compatible binary format. /// Reference: golang/nats-server/server/store.go:397 /// + /// Consumer state to serialize. public static byte[] Encode(ConsumerState state) { // Upper-bound the buffer size. @@ -105,6 +106,7 @@ public static class ConsumerStateCodec /// Decodes consumer state from the Go-compatible binary format. /// Reference: golang/nats-server/server/filestore.go:12216 /// + /// Binary payload bytes containing encoded consumer state. public static ConsumerState Decode(ReadOnlySpan buf) { // Copy to array first so lambdas can capture without ref-type restrictions. diff --git a/src/NATS.Server/JetStream/Storage/FileStoreBlock.cs b/src/NATS.Server/JetStream/Storage/FileStoreBlock.cs index f9a4d31..1ae221e 100644 --- a/src/NATS.Server/JetStream/Storage/FileStoreBlock.cs +++ b/src/NATS.Server/JetStream/Storage/FileStoreBlock.cs @@ -2,9 +2,28 @@ namespace NATS.Server.JetStream.Storage; public sealed class FileStoreBlock { + /// + /// Gets the logical block identifier within the stream file-store layout. + /// public int Id { get; init; } + + /// + /// Gets the filesystem path to the backing block file. + /// public required string Path { get; init; } + + /// + /// Gets the first stream sequence represented by this block. + /// public ulong Sequence { get; init; } + + /// + /// Gets the byte offset of this block relative to stream storage bookkeeping. + /// public long OffsetBytes { get; init; } + + /// + /// Gets or sets the current block size in bytes. + /// public long SizeBytes { get; set; } } diff --git a/src/NATS.Server/JetStream/Storage/FileStoreConfig.cs b/src/NATS.Server/JetStream/Storage/FileStoreConfig.cs index a0d9efc..33925f2 100644 --- a/src/NATS.Server/JetStream/Storage/FileStoreConfig.cs +++ b/src/NATS.Server/JetStream/Storage/FileStoreConfig.cs @@ -11,35 +11,50 @@ namespace NATS.Server.JetStream.Storage; /// public sealed class FileStoreConfig { - // Go: FileStoreConfig.StoreDir — root directory for all stream block files + /// + /// Gets or sets the root directory used to persist JetStream stream and consumer state on disk. + /// public string StoreDir { get; set; } = string.Empty; - // Go: FileStoreConfig.BlockSize — maximum bytes per message block file. - // 0 means use the engine default (currently 8 MiB in Go). + /// + /// Gets or sets the maximum size of each JetStream message block file in bytes. + /// Use 0 to apply the server default block size. + /// public ulong BlockSize { get; set; } - // Go: FileStoreConfig.CacheExpire — how long to keep a loaded block in memory - // after the last read before evicting. Default: 10 seconds. + /// + /// Gets or sets how long a loaded block stays in memory after last access before eviction. + /// public TimeSpan CacheExpire { get; set; } = TimeSpan.FromSeconds(10); - // Go: FileStoreConfig.SubjectStateExpire — how long to keep per-subject state cached - // on an idle message block. Zero means use CacheExpire. + /// + /// Gets or sets how long per-subject accounting metadata remains cached for idle blocks. + /// When set to , is used. + /// public TimeSpan SubjectStateExpire { get; set; } - // Go: FileStoreConfig.SyncInterval — interval at which dirty blocks are fsynced. - // Default: 2 minutes. + /// + /// Gets or sets how frequently dirty file-store blocks are synchronized to durable storage. + /// public TimeSpan SyncInterval { get; set; } = TimeSpan.FromMinutes(2); - // Go: FileStoreConfig.SyncAlways — when true every write is immediately fsynced + /// + /// Gets or sets a value indicating whether each write is immediately synced for maximum durability. + /// public bool SyncAlways { get; set; } - // Go: FileStoreConfig.AsyncFlush — when true write operations are batched and - // flushed asynchronously for higher throughput + /// + /// Gets or sets a value indicating whether flushes are performed asynchronously to improve throughput. + /// public bool AsyncFlush { get; set; } - // Go: FileStoreConfig.Cipher — cipher used for at-rest encryption; NoCipher disables it + /// + /// Gets or sets the encryption mode used for JetStream data at rest. + /// public StoreCipher Cipher { get; set; } = StoreCipher.NoCipher; - // Go: FileStoreConfig.Compression — compression algorithm applied to block data + /// + /// Gets or sets the compression mode applied to persisted JetStream block payloads. + /// public StoreCompression Compression { get; set; } = StoreCompression.NoCompression; } diff --git a/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs b/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs index 0a5177a..3401163 100644 --- a/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs +++ b/src/NATS.Server/JetStream/Validation/JetStreamConfigValidator.cs @@ -7,6 +7,10 @@ namespace NATS.Server.JetStream.Validation; public static class JetStreamConfigValidator { + /// + /// Validates stream/consumer names against JetStream naming constraints. + /// + /// Candidate name string. public static bool IsValidName(string? name) { if (string.IsNullOrWhiteSpace(name)) @@ -25,9 +29,17 @@ public static class JetStreamConfigValidator return true; } + /// + /// Returns true when metadata key/value bytes are within JetStream size limits. + /// + /// Metadata dictionary to measure. public static bool IsMetadataWithinLimit(Dictionary? metadata) => MetadataByteSize(metadata) <= JetStreamApiLimits.JSMaxMetadataLen; + /// + /// Computes UTF-8 byte size for all metadata keys and values. + /// + /// Metadata dictionary to measure. public static int MetadataByteSize(Dictionary? metadata) { if (metadata is null || metadata.Count == 0) @@ -43,6 +55,10 @@ public static class JetStreamConfigValidator return size; } + /// + /// Validates a stream configuration for required fields and basic limit semantics. + /// + /// Stream configuration to validate. public static ValidationResult Validate(StreamConfig config) { if (string.IsNullOrWhiteSpace(config.Name) || config.Subjects.Count == 0) @@ -66,6 +82,7 @@ public static class JetStreamConfigValidator /// both server_name and cluster.name must be set. /// Reference: Go server/jetstream.go validateOptions (line ~2822-2831). /// + /// Server options containing JetStream and cluster settings. public static ValidationResult ValidateClusterConfig(NatsOptions options) { // If JetStream is not enabled or not clustered, no cluster-specific checks needed. @@ -84,7 +101,9 @@ public static class JetStreamConfigValidator public sealed class ValidationResult { + /// Indicates whether validation succeeded. public bool IsValid { get; } + /// Validation error message when is false. public string Message { get; } private ValidationResult(bool isValid, string message) @@ -93,6 +112,9 @@ public sealed class ValidationResult Message = message; } + /// Creates a successful validation result. public static ValidationResult Valid() => new(true, string.Empty); + /// Creates a failed validation result with an explanatory message. + /// Validation failure reason. public static ValidationResult Invalid(string message) => new(false, message); } diff --git a/src/NATS.Server/LeafNodes/LeafConnectInfo.cs b/src/NATS.Server/LeafNodes/LeafConnectInfo.cs index bf510ad..5004e84 100644 --- a/src/NATS.Server/LeafNodes/LeafConnectInfo.cs +++ b/src/NATS.Server/LeafNodes/LeafConnectInfo.cs @@ -8,33 +8,43 @@ namespace NATS.Server.LeafNodes; /// public sealed class LeafConnectInfo { + /// Optional user JWT presented during leaf authentication. [JsonPropertyName("jwt")] public string? Jwt { get; init; } + /// Client public NKey used for nonce-signature authentication. [JsonPropertyName("nkey")] public string? Nkey { get; init; } + /// Nonce signature proving ownership of . [JsonPropertyName("sig")] public string? Sig { get; init; } + /// Whether this leaf connection advertises hub mode support. [JsonPropertyName("hub")] public bool Hub { get; init; } + /// Optional cluster name associated with the remote leaf node. [JsonPropertyName("cluster")] public string? Cluster { get; init; } + /// Whether protocol headers are supported on this leaf connection. [JsonPropertyName("headers")] public bool Headers { get; init; } + /// Whether JetStream asset and API forwarding are supported. [JsonPropertyName("jetstream")] public bool JetStream { get; init; } + /// Negotiated compression mode for leaf traffic. [JsonPropertyName("compression")] public string? Compression { get; init; } + /// Optional remote account binding for this solicited leaf link. [JsonPropertyName("remote_account")] public string? RemoteAccount { get; init; } + /// Leaf protocol version number. [JsonPropertyName("proto")] public int Proto { get; init; } } diff --git a/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs b/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs index 53e79d0..6f20133 100644 --- a/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs +++ b/src/NATS.Server/LeafNodes/LeafHubSpokeMapper.cs @@ -32,6 +32,10 @@ public sealed class LeafHubSpokeMapper private readonly IReadOnlyList _allowExports; private readonly IReadOnlyList _allowImports; + /// + /// Creates a mapper with account mapping only (no subject allow/deny filters). + /// + /// Mapping from hub account names to spoke account names. public LeafHubSpokeMapper(IReadOnlyDictionary hubToSpoke) : this(hubToSpoke, [], [], [], []) { @@ -40,6 +44,9 @@ public sealed class LeafHubSpokeMapper /// /// Creates a mapper with account mapping and subject deny filters (legacy constructor). /// + /// Mapping from hub account names to spoke account names. + /// Subject patterns denied for hub→leaf flow. + /// Subject patterns denied for leaf→hub flow. public LeafHubSpokeMapper( IReadOnlyDictionary hubToSpoke, IReadOnlyList denyExports, @@ -74,6 +81,9 @@ public sealed class LeafHubSpokeMapper /// /// Maps an account from hub→spoke or spoke→hub based on direction. /// + /// Account name to map. + /// Subject associated with the mapping request. + /// Flow direction determining which map to apply. public LeafMappingResult Map(string account, string subject, LeafMapDirection direction) { if (direction == LeafMapDirection.Outbound && _hubToSpoke.TryGetValue(account, out var spoke)) @@ -89,6 +99,8 @@ public sealed class LeafHubSpokeMapper /// When an allow-list is set, the subject must also match at least one allow pattern. /// Deny takes precedence over allow (Go reference: auth.go SubjectPermission semantics). /// + /// Subject to evaluate. + /// Flow direction used to choose allow/deny lists. public bool IsSubjectAllowed(string subject, LeafMapDirection direction) { var (denyList, allowList) = direction switch diff --git a/src/NATS.Server/LeafNodes/LeafLoopDetector.cs b/src/NATS.Server/LeafNodes/LeafLoopDetector.cs index 6793d59..5bdde3b 100644 --- a/src/NATS.Server/LeafNodes/LeafLoopDetector.cs +++ b/src/NATS.Server/LeafNodes/LeafLoopDetector.cs @@ -4,15 +4,34 @@ public static class LeafLoopDetector { private const string LeafLoopPrefix = "$LDS."; + /// + /// Determines whether a subject contains the leaf-loop marker prefix. + /// + /// Subject to inspect for loop marker metadata. public static bool HasLoopMarker(string subject) => subject.StartsWith(LeafLoopPrefix, StringComparison.Ordinal); + /// + /// Prefixes a subject with local loop-detection metadata for leaf forwarding. + /// + /// Original subject being forwarded. + /// Server identifier appended to the loop marker. public static string Mark(string subject, string serverId) => $"{LeafLoopPrefix}{serverId}.{subject}"; + /// + /// Determines whether the subject indicates a loop back to the local server. + /// + /// Forwarded subject containing loop markers. + /// Current server identifier. public static bool IsLooped(string subject, string localServerId) => subject.StartsWith($"{LeafLoopPrefix}{localServerId}.", StringComparison.Ordinal); + /// + /// Removes all loop markers from a subject and returns the unmarked subject. + /// + /// Subject that may contain one or more loop markers. + /// Unmarked subject when removal succeeds. public static bool TryUnmark(string subject, out string unmarked) { unmarked = subject; diff --git a/src/NATS.Server/LeafNodes/LeafSubKey.cs b/src/NATS.Server/LeafNodes/LeafSubKey.cs index 489cbdc..5ac2c91 100644 --- a/src/NATS.Server/LeafNodes/LeafSubKey.cs +++ b/src/NATS.Server/LeafNodes/LeafSubKey.cs @@ -16,6 +16,10 @@ public static class LeafSubKey public static readonly TimeSpan SharedSysAccDelay = TimeSpan.FromMilliseconds(250); public static readonly TimeSpan ConnectProcessTimeout = TimeSpan.FromSeconds(2); + /// + /// Builds canonical subscription key from subject and optional queue group. + /// + /// Subscription used to build key components. public static string KeyFromSub(Subscription sub) { ArgumentNullException.ThrowIfNull(sub); @@ -24,6 +28,11 @@ public static class LeafSubKey : sub.Subject; } + /// + /// Builds canonical subscription key including routed-origin metadata when present. + /// + /// Subscription used to build key components. + /// Optional routed origin identifier. public static string KeyFromSubWithOrigin(Subscription sub, string? origin = null) { ArgumentNullException.ThrowIfNull(sub); diff --git a/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs b/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs index cd67fb0..660bcb0 100644 --- a/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs +++ b/src/NATS.Server/LeafNodes/WebSocketStreamAdapter.cs @@ -17,6 +17,11 @@ public sealed class WebSocketStreamAdapter : Stream private int _readCount; private bool _disposed; + /// + /// Creates a stream adapter for a WebSocket-backed leaf-node transport. + /// + /// WebSocket transport used for framed binary I/O. + /// Initial receive staging-buffer size. public WebSocketStreamAdapter(SystemWebSocket ws, int initialBufferSize = 4096) { _ws = ws ?? throw new ArgumentNullException(nameof(ws)); @@ -34,10 +39,15 @@ public sealed class WebSocketStreamAdapter : Stream public override bool CanSeek => false; // Telemetry properties + /// Whether the underlying WebSocket is currently open. public bool IsConnected => _ws.State == WebSocketState.Open; + /// Total bytes read from received WebSocket messages. public long BytesRead { get; private set; } + /// Total bytes written to outbound WebSocket messages. public long BytesWritten { get; private set; } + /// Total completed WebSocket messages read. public int MessagesRead { get; private set; } + /// Total completed WebSocket messages written. public int MessagesWritten { get; private set; } /// @@ -196,12 +206,18 @@ public sealed class WebSocketStreamAdapter : Stream get => throw new NotSupportedException(); set => throw new NotSupportedException(); } + /// public override long Seek(long offset, SeekOrigin origin) => throw new NotSupportedException(); + /// public override void SetLength(long value) => throw new NotSupportedException(); + /// public override int Read(byte[] buffer, int offset, int count) => throw new NotSupportedException("Use async methods"); + /// public override void Write(byte[] buffer, int offset, int count) => throw new NotSupportedException("Use async methods"); + /// public override void Flush() { } + /// protected override void Dispose(bool disposing) { if (_disposed) diff --git a/src/NATS.Server/Monitoring/AccountzHandler.cs b/src/NATS.Server/Monitoring/AccountzHandler.cs index 29d4d64..d457cf0 100644 --- a/src/NATS.Server/Monitoring/AccountzHandler.cs +++ b/src/NATS.Server/Monitoring/AccountzHandler.cs @@ -6,11 +6,18 @@ public sealed class AccountzHandler { private readonly NatsServer _server; + /// + /// Creates handler for account-focused monitoring endpoints. + /// + /// Server instance providing account snapshots. public AccountzHandler(NatsServer server) { _server = server; } + /// + /// Builds account overview payload for /accountz. + /// public object Build() { var accounts = _server.GetAccounts().Select(ToAccountDto).ToArray(); @@ -21,6 +28,9 @@ public sealed class AccountzHandler }; } + /// + /// Builds aggregate account statistics payload for /accstatz. + /// public object BuildStats() { var accounts = _server.GetAccounts().ToArray(); diff --git a/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs b/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs index a10f028..df1e3f8 100644 --- a/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs +++ b/src/NATS.Server/Monitoring/ClosedConnectionRingBuffer.cs @@ -13,19 +13,32 @@ public sealed class ClosedConnectionRingBuffer private int _count; // Current count (up to capacity) private long _totalClosed; // Running total of all closed connections ever + /// + /// Creates a fixed-size closed-connection ring buffer. + /// + /// Maximum number of recent closed-client snapshots retained. public ClosedConnectionRingBuffer(int capacity = 1024) { if (capacity <= 0) throw new ArgumentOutOfRangeException(nameof(capacity), "Capacity must be greater than zero."); _buffer = new ClosedClient[capacity]; } + /// + /// Gets the maximum number of closed-client entries retained before wraparound. + /// public int Capacity => _buffer.Length; + /// + /// Gets the number of currently retained closed-client entries. + /// public int Count { get { lock (_lock) return _count; } } + /// + /// Gets the lifetime total count of closed connections observed by this buffer. + /// public long TotalClosed { get { lock (_lock) return _totalClosed; } @@ -34,6 +47,7 @@ public sealed class ClosedConnectionRingBuffer /// /// Adds a closed connection snapshot. If the buffer is full the oldest entry is overwritten. /// + /// Closed-client snapshot to append into the ring. public void Add(ClosedClient info) { lock (_lock) @@ -60,6 +74,7 @@ public sealed class ClosedConnectionRingBuffer /// /// Returns up to most recent entries, ordered newest-first. /// + /// Maximum number of recent entries to return. public IReadOnlyList GetRecent(int count) { lock (_lock) diff --git a/src/NATS.Server/Monitoring/GatewayzHandler.cs b/src/NATS.Server/Monitoring/GatewayzHandler.cs index 7220b29..3a83e0c 100644 --- a/src/NATS.Server/Monitoring/GatewayzHandler.cs +++ b/src/NATS.Server/Monitoring/GatewayzHandler.cs @@ -4,11 +4,18 @@ public sealed class GatewayzHandler { private readonly NatsServer _server; + /// + /// Creates gateway monitoring handler. + /// + /// Server instance providing gateway metrics. public GatewayzHandler(NatsServer server) { _server = server; } + /// + /// Builds gateway metrics payload for /gatewayz. + /// public object Build() { var gateways = _server.Stats.Gateways; diff --git a/src/NATS.Server/Monitoring/Healthz.cs b/src/NATS.Server/Monitoring/Healthz.cs index b2aabc1..31dfdb8 100644 --- a/src/NATS.Server/Monitoring/Healthz.cs +++ b/src/NATS.Server/Monitoring/Healthz.cs @@ -8,18 +8,33 @@ namespace NATS.Server.Monitoring; /// public sealed class HealthStatus { + /// + /// Gets the overall health status string returned by the monitoring endpoint. + /// [JsonPropertyName("status")] public string Status { get; init; } = "ok"; + /// + /// Gets the HTTP-style status code representing current server health. + /// [JsonPropertyName("status_code")] public int StatusCode { get; init; } = 200; + /// + /// Gets the top-level error message when health checks fail. + /// [JsonPropertyName("error")] public string? Error { get; init; } + /// + /// Gets detailed health-check failures contributing to a non-OK status. + /// [JsonPropertyName("errors")] public HealthzError[] Errors { get; init; } = []; + /// + /// Creates a successful health response payload used by /healthz. + /// public static HealthStatus Ok() => new(); } @@ -29,9 +44,15 @@ public sealed class HealthStatus /// public sealed class HealthzError { + /// + /// Gets the subsystem classification for this health failure. + /// [JsonPropertyName("type")] public HealthzErrorType Type { get; init; } = HealthzErrorType.Unknown; + /// + /// Gets the subsystem-specific failure detail emitted for diagnostics. + /// [JsonPropertyName("error")] public string Error { get; init; } = string.Empty; } diff --git a/src/NATS.Server/Monitoring/JszHandler.cs b/src/NATS.Server/Monitoring/JszHandler.cs index 52152f8..6e9d610 100644 --- a/src/NATS.Server/Monitoring/JszHandler.cs +++ b/src/NATS.Server/Monitoring/JszHandler.cs @@ -7,12 +7,20 @@ public sealed class JszHandler private readonly NatsServer _server; private readonly NatsOptions _options; + /// + /// Creates a JetStream monitoring response builder bound to server runtime state. + /// + /// Running server instance exposing JetStream counters and IDs. + /// Server options containing JetStream capacity configuration. public JszHandler(NatsServer server, NatsOptions options) { _server = server; _options = options; } + /// + /// Builds a point-in-time /jsz style response from current server state. + /// public JszResponse Build() { return new JszResponse @@ -38,33 +46,43 @@ public sealed class JszHandler public sealed class JszResponse { + /// Server identifier for the node producing this response. [JsonPropertyName("server_id")] public string ServerId { get; set; } = string.Empty; + /// UTC timestamp when this monitoring snapshot was generated. [JsonPropertyName("now")] public DateTime Now { get; set; } + /// Whether JetStream is enabled on this server. [JsonPropertyName("enabled")] public bool Enabled { get; set; } + /// JetStream memory usage in bytes. [JsonPropertyName("memory")] public ulong Memory { get; set; } + /// JetStream file-storage usage in bytes. [JsonPropertyName("storage")] public ulong Storage { get; set; } + /// Number of JetStream streams currently hosted. [JsonPropertyName("streams")] public int Streams { get; set; } + /// Number of JetStream consumers currently hosted. [JsonPropertyName("consumers")] public int Consumers { get; set; } + /// Total number of JetStream API requests handled. [JsonPropertyName("api_total")] public ulong ApiTotal { get; set; } + /// Total number of JetStream API requests that returned errors. [JsonPropertyName("api_errors")] public ulong ApiErrors { get; set; } + /// Configured JetStream resource limits and storage directory. [JsonPropertyName("config")] public JetStreamConfig Config { get; set; } = new(); } diff --git a/src/NATS.Server/Monitoring/LeafzHandler.cs b/src/NATS.Server/Monitoring/LeafzHandler.cs index 4c7f668..7ac5dca 100644 --- a/src/NATS.Server/Monitoring/LeafzHandler.cs +++ b/src/NATS.Server/Monitoring/LeafzHandler.cs @@ -4,11 +4,18 @@ public sealed class LeafzHandler { private readonly NatsServer _server; + /// + /// Creates leaf-node monitoring handler. + /// + /// Server instance providing leaf metrics. public LeafzHandler(NatsServer server) { _server = server; } + /// + /// Builds leaf-node metrics payload for /leafz. + /// public object Build() { var leafs = _server.Stats.Leafs; diff --git a/src/NATS.Server/Monitoring/MonitorServer.cs b/src/NATS.Server/Monitoring/MonitorServer.cs index de86481..d155d55 100644 --- a/src/NATS.Server/Monitoring/MonitorServer.cs +++ b/src/NATS.Server/Monitoring/MonitorServer.cs @@ -23,6 +23,13 @@ public sealed class MonitorServer : IAsyncDisposable private readonly AccountzHandler _accountzHandler; private readonly PprofHandler _pprofHandler; + /// + /// Creates monitoring HTTP server wiring and endpoint handlers. + /// + /// Server runtime state used by monitoring handlers. + /// Monitoring and feature options controlling endpoint behavior. + /// Shared HTTP request stats counters. + /// Logger factory for monitor diagnostics. public MonitorServer(NatsServer server, NatsOptions options, ServerStats stats, ILoggerFactory loggerFactory) { _logger = loggerFactory.CreateLogger(); @@ -137,12 +144,19 @@ public sealed class MonitorServer : IAsyncDisposable } } + /// + /// Starts the monitoring web server. + /// + /// Cancellation token for server startup. public async Task StartAsync(CancellationToken ct) { await _app.StartAsync(ct); _logger.LogInformation("Monitoring listening on {Urls}", string.Join(", ", _app.Urls)); } + /// + /// Stops and disposes monitoring server resources. + /// public async ValueTask DisposeAsync() { await _app.StopAsync(); diff --git a/src/NATS.Server/Monitoring/PprofHandler.cs b/src/NATS.Server/Monitoring/PprofHandler.cs index 1776ae6..886ab3a 100644 --- a/src/NATS.Server/Monitoring/PprofHandler.cs +++ b/src/NATS.Server/Monitoring/PprofHandler.cs @@ -8,6 +8,9 @@ namespace NATS.Server.Monitoring; /// public sealed class PprofHandler { + /// + /// Returns index content for pprof-compatible endpoint listing. + /// public string Index() { return """ @@ -21,6 +24,10 @@ public sealed class PprofHandler """; } + /// + /// Captures lightweight CPU profile metadata payload. + /// + /// Requested capture duration in seconds. public byte[] CaptureCpuProfile(int seconds) { var boundedSeconds = Math.Clamp(seconds, 1, 120); diff --git a/src/NATS.Server/Monitoring/RoutezHandler.cs b/src/NATS.Server/Monitoring/RoutezHandler.cs index 9c67cf3..b250699 100644 --- a/src/NATS.Server/Monitoring/RoutezHandler.cs +++ b/src/NATS.Server/Monitoring/RoutezHandler.cs @@ -4,11 +4,18 @@ public sealed class RoutezHandler { private readonly NatsServer _server; + /// + /// Creates route monitoring handler. + /// + /// Server instance providing route metrics. public RoutezHandler(NatsServer server) { _server = server; } + /// + /// Builds route metrics payload for /routez. + /// public object Build() { var routes = _server.Stats.Routes; diff --git a/src/NATS.Server/Monitoring/Subsz.cs b/src/NATS.Server/Monitoring/Subsz.cs index 472b728..6d1b69e 100644 --- a/src/NATS.Server/Monitoring/Subsz.cs +++ b/src/NATS.Server/Monitoring/Subsz.cs @@ -7,27 +7,35 @@ namespace NATS.Server.Monitoring; /// public sealed class Subsz { + /// Server identifier generating this monitoring snapshot. [JsonPropertyName("server_id")] public string Id { get; set; } = ""; + /// UTC timestamp when the subsz response was produced. [JsonPropertyName("now")] public DateTime Now { get; set; } + /// Total subscription count currently tracked by the server. [JsonPropertyName("num_subscriptions")] public uint NumSubs { get; set; } + /// Number of entries currently stored in the subscription match cache. [JsonPropertyName("num_cache")] public int NumCache { get; set; } + /// Total number of subscription records matching the requested filter. [JsonPropertyName("total")] public int Total { get; set; } + /// Pagination offset applied to the returned subscription list. [JsonPropertyName("offset")] public int Offset { get; set; } + /// Pagination limit applied to the returned subscription list. [JsonPropertyName("limit")] public int Limit { get; set; } + /// Subscription detail records included in this page of results. [JsonPropertyName("subscriptions")] public SubDetail[] Subs { get; set; } = []; } @@ -37,9 +45,14 @@ public sealed class Subsz /// public sealed class SubszOptions { + /// Zero-based offset into the filtered subscription result set. public int Offset { get; set; } + /// Maximum number of subscription records to return. public int Limit { get; set; } = 1024; + /// Whether detailed subscription entries should be returned. public bool Subscriptions { get; set; } + /// Optional account filter limiting results to one account. public string Account { get; set; } = ""; + /// Optional subject-pattern filter used to match subscription subjects. public string Test { get; set; } = ""; } diff --git a/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs b/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs index f532a79..b615411 100644 --- a/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs +++ b/src/NATS.Server/Monitoring/TlsPeerCertMapper.cs @@ -5,6 +5,10 @@ namespace NATS.Server.Monitoring; internal static class TlsPeerCertMapper { + /// + /// Maps an active TLS certificate to monitor API peer-cert shape. + /// + /// Peer certificate from a live connection. public static TLSPeerCert[] FromCertificate(X509Certificate2? cert) { if (cert == null) @@ -21,6 +25,10 @@ internal static class TlsPeerCertMapper ]; } + /// + /// Maps persisted closed-client TLS fields to monitor API peer-cert shape. + /// + /// Closed client record containing persisted TLS fingerprint data. public static TLSPeerCert[] FromClosedClient(ClosedClient closed) { if (string.IsNullOrEmpty(closed.TlsPeerCertSubject)) @@ -37,6 +45,10 @@ internal static class TlsPeerCertMapper ]; } + /// + /// Converts a certificate into closed-client TLS field tuple values. + /// + /// Peer certificate from a live connection. public static (string Subject, string SubjectPkSha256, string CertSha256) ToClosedFields(X509Certificate2? cert) { if (cert == null) diff --git a/src/NATS.Server/Monitoring/VarzHandler.cs b/src/NATS.Server/Monitoring/VarzHandler.cs index a4f3536..2102d5a 100644 --- a/src/NATS.Server/Monitoring/VarzHandler.cs +++ b/src/NATS.Server/Monitoring/VarzHandler.cs @@ -22,6 +22,12 @@ public sealed class VarzHandler : IDisposable private TimeSpan _lastCpuUsage; private double _cachedCpuPercent; + /// + /// Creates the handler responsible for constructing /varz responses. + /// + /// Server runtime state used for counters and topology fields. + /// Effective server options reflected in varz output. + /// Logger factory for diagnostics. public VarzHandler(NatsServer server, NatsOptions options, ILoggerFactory loggerFactory) { _server = server; @@ -33,6 +39,10 @@ public sealed class VarzHandler : IDisposable _cpuSampleTimer = new Timer(_ => SampleCpuUsage(), null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); } + /// + /// Builds the current /varz payload snapshot. + /// + /// Cancellation token for request lifecycle control. public async Task HandleVarzAsync(CancellationToken ct = default) { await _varzMu.WaitAsync(ct); @@ -148,6 +158,9 @@ public sealed class VarzHandler : IDisposable } } + /// + /// Disposes timer and synchronization primitives used by the handler. + /// public void Dispose() { _cpuSampleTimer.Dispose(); diff --git a/src/NATS.Server/Mqtt/MqttPacketReader.cs b/src/NATS.Server/Mqtt/MqttPacketReader.cs index 921839a..8c9d44e 100644 --- a/src/NATS.Server/Mqtt/MqttPacketReader.cs +++ b/src/NATS.Server/Mqtt/MqttPacketReader.cs @@ -32,6 +32,7 @@ public static class MqttPacketReader /// /// Parses a complete MQTT control packet from a contiguous span. /// + /// Contiguous bytes containing a full MQTT control packet. public static MqttControlPacket Read(ReadOnlySpan buffer) { if (buffer.Length < 2) @@ -58,6 +59,9 @@ public static class MqttPacketReader /// past the packet bytes on success. /// Used with for incremental parsing. /// + /// Input byte sequence that may contain zero, one, or partial MQTT packets. + /// Parsed packet result when a full packet is available. + /// Sequence position advanced past the parsed packet bytes. public static bool TryRead(ReadOnlySequence buffer, out MqttControlPacket? packet, out SequencePosition consumed) { packet = null; @@ -120,6 +124,11 @@ public static class MqttPacketReader return true; } + /// + /// Decodes the MQTT variable-length remaining-length field. + /// + /// Span starting at the first remaining-length byte. + /// Number of bytes consumed to decode the remaining length. internal static int DecodeRemainingLength(ReadOnlySpan encoded, out int consumed) { var multiplier = 1; diff --git a/src/NATS.Server/Mqtt/MqttProtocolParser.cs b/src/NATS.Server/Mqtt/MqttProtocolParser.cs index 8b91e45..670fbb8 100644 --- a/src/NATS.Server/Mqtt/MqttProtocolParser.cs +++ b/src/NATS.Server/Mqtt/MqttProtocolParser.cs @@ -23,12 +23,26 @@ public sealed record MqttPacket( public sealed class MqttProtocolParser { + /// + /// Parses binary MQTT control packet bytes into a structured packet. + /// + /// Contiguous MQTT control packet bytes. public MqttControlPacket ParsePacket(ReadOnlySpan packet) => MqttPacketReader.Read(packet); + /// + /// Writes a binary MQTT control packet. + /// + /// MQTT control packet type. + /// Packet payload bytes. + /// Low-nibble control flags for the packet type. public byte[] WritePacket(MqttControlPacketType type, ReadOnlySpan payload, byte flags = 0) => MqttPacketWriter.Write(type, payload, flags); + /// + /// Parses a simplified text command line into a test-friendly MQTT packet shape. + /// + /// Text command line representing an MQTT operation. public MqttPacket ParseLine(string line) { var trimmed = line.Trim(); diff --git a/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs b/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs index 851e0d2..f11834a 100644 --- a/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs +++ b/src/NATS.Server/Mqtt/MqttQoS1Tracker.cs @@ -25,6 +25,9 @@ public sealed class MqttQoS1Tracker /// Registers an outgoing QoS 1 message and assigns a packet ID. /// Returns the assigned packet ID. /// + /// MQTT topic for the outbound message. + /// Outbound payload bytes. + /// Optional JetStream stream sequence tied to this delivery. public ushort Register(string topic, byte[] payload, ulong streamSequence = 0) { var id = GetNextPacketId(); @@ -44,6 +47,7 @@ public sealed class MqttQoS1Tracker /// Acknowledges receipt of a PUBACK for the given packet ID. /// Returns the pending message if found, or null. /// + /// MQTT packet identifier from PUBACK. public QoS1PendingMessage? Acknowledge(ushort packetId) { return _pending.TryRemove(packetId, out var msg) ? msg : null; @@ -69,6 +73,7 @@ public sealed class MqttQoS1Tracker /// /// Checks if a packet ID is pending acknowledgment. /// + /// MQTT packet identifier to check. public bool IsPending(ushort packetId) => _pending.ContainsKey(packetId); /// Clears all pending messages. @@ -90,10 +95,15 @@ public sealed class MqttQoS1Tracker /// public sealed class QoS1PendingMessage { + /// MQTT packet identifier assigned to this outbound QoS1 message. public ushort PacketId { get; init; } + /// MQTT topic associated with the message. public string Topic { get; init; } = string.Empty; + /// Outbound payload bytes awaiting PUBACK. public byte[] Payload { get; init; } = []; + /// UTC timestamp when this message was last sent. public DateTime SentAtUtc { get; set; } + /// Number of delivery attempts for this packet. public int DeliveryCount { get; set; } = 1; /// diff --git a/src/NATS.Server/Mqtt/MqttTopicMapper.cs b/src/NATS.Server/Mqtt/MqttTopicMapper.cs index d44c23c..12575f4 100644 --- a/src/NATS.Server/Mqtt/MqttTopicMapper.cs +++ b/src/NATS.Server/Mqtt/MqttTopicMapper.cs @@ -34,6 +34,7 @@ public static class MqttTopicMapper /// Returns the MQTT topic as pre-encoded UTF-8 bytes, using a bounded cache /// to avoid repeated string translation and encoding on the hot path. /// + /// NATS subject to convert into MQTT topic wire bytes. public static byte[] NatsToMqttBytes(string natsSubject) { if (TopicBytesCache.TryGetValue(natsSubject, out var cached)) @@ -65,6 +66,7 @@ public static class MqttTopicMapper /// Translates an MQTT topic or filter to a NATS subject. /// Handles wildcards, dot escaping, empty levels, and '$' prefix protection. /// + /// MQTT topic or filter received from client protocol operations. public static string MqttToNats(string mqttTopic) { if (mqttTopic.Length == 0) @@ -102,6 +104,7 @@ public static class MqttTopicMapper /// Translates a NATS subject back to an MQTT topic. /// Reverses the mapping: '.' → '/', '*' → '+', '>' → '#', '_DOT_' → '.'. /// + /// NATS subject to map back into MQTT topic syntax. public static string NatsToMqtt(string natsSubject) { if (natsSubject.Length == 0) @@ -152,6 +155,7 @@ public static class MqttTopicMapper /// NOT be matched by wildcard subscriptions (MQTT spec [MQTT-4.7.2-1]). /// Topics starting with '$' are reserved for system/server use. /// + /// Concrete MQTT topic name to inspect. public static bool IsDollarTopic(string mqttTopic) => mqttTopic.Length > 0 && mqttTopic[0] == '$'; @@ -159,6 +163,7 @@ public static class MqttTopicMapper /// Returns true if an MQTT topic filter starts with '$', indicating /// it explicitly targets system topics. /// + /// MQTT filter expression supplied by a subscription. public static bool IsDollarFilter(string mqttFilter) => mqttFilter.Length > 0 && mqttFilter[0] == '$'; @@ -167,6 +172,8 @@ public static class MqttTopicMapper /// Per MQTT spec, wildcard filters (starting with '#' or '+') must NOT /// match topics beginning with '$'. Only explicit '$' filters match '$' topics. /// + /// MQTT subscription filter being evaluated. + /// Topic candidate that may start with a reserved $ prefix. public static bool WildcardMatchesDollarTopic(string mqttFilter, string mqttTopic) { if (!IsDollarTopic(mqttTopic)) diff --git a/src/NATS.Server/Protocol/MessageTraceContext.cs b/src/NATS.Server/Protocol/MessageTraceContext.cs index 44d9ef6..a79d018 100644 --- a/src/NATS.Server/Protocol/MessageTraceContext.cs +++ b/src/NATS.Server/Protocol/MessageTraceContext.cs @@ -6,8 +6,15 @@ public sealed record MessageTraceContext( string? ClientVersion, bool HeadersEnabled) { + /// + /// Gets shared empty trace context for clients without CONNECT metadata. + /// public static MessageTraceContext Empty { get; } = new(null, null, null, false); + /// + /// Builds trace context from CONNECT options. + /// + /// Client CONNECT options payload. public static MessageTraceContext CreateFromConnect(ClientOptions? connectOpts) { if (connectOpts == null) diff --git a/src/NATS.Server/Protocol/NatsHeaderParser.cs b/src/NATS.Server/Protocol/NatsHeaderParser.cs index 5f21080..0a9b3b6 100644 --- a/src/NATS.Server/Protocol/NatsHeaderParser.cs +++ b/src/NATS.Server/Protocol/NatsHeaderParser.cs @@ -5,8 +5,19 @@ namespace NATS.Server.Protocol; public readonly struct NatsHeaders() { + /// + /// Gets parsed status code from the NATS/1.0 status line. + /// public int Status { get; init; } + + /// + /// Gets optional status description text from the NATS/1.0 status line. + /// public string Description { get; init; } = string.Empty; + + /// + /// Gets parsed header key/value pairs, preserving repeated header values. + /// public IReadOnlyDictionary Headers { get; init; } = ReadOnlyDictionary.Empty; public static readonly NatsHeaders Invalid = new() @@ -22,6 +33,10 @@ public static class NatsHeaderParser private static ReadOnlySpan CrLf => "\r\n"u8; private static ReadOnlySpan Prefix => "NATS/1.0"u8; + /// + /// Parses NATS header block bytes into status and header key/value data. + /// + /// Raw header bytes beginning with NATS/1.0. public static NatsHeaders Parse(ReadOnlySpan data) { if (data.Length < Prefix.Length) diff --git a/src/NATS.Server/Protocol/ParsedCommandView.cs b/src/NATS.Server/Protocol/ParsedCommandView.cs index 0be6db1..49080ae 100644 --- a/src/NATS.Server/Protocol/ParsedCommandView.cs +++ b/src/NATS.Server/Protocol/ParsedCommandView.cs @@ -5,24 +5,44 @@ namespace NATS.Server.Protocol; public readonly struct ParsedCommandView { + /// Parsed command type used for protocol dispatch. public CommandType Type { get; init; } + /// Original protocol operation token (for example PUB or SUB). public string? Operation { get; init; } + /// Raw subject bytes from the control line. public ReadOnlyMemory Subject { get; init; } + /// Raw reply subject bytes for request-reply commands. public ReadOnlyMemory ReplyTo { get; init; } + /// Raw queue-group name bytes for queue subscriptions. public ReadOnlyMemory Queue { get; init; } + /// Raw subscription identifier bytes. public ReadOnlyMemory Sid { get; init; } + /// Maximum messages value for UNSUB; -1 when unspecified. public int MaxMessages { get; init; } + /// Header size for HPUB; -1 when not applicable. public int HeaderSize { get; init; } + /// Zero-copy payload sequence view from the network buffer. public ReadOnlySequence Payload { get; init; } + /// + /// Creates a simple command view for control-line-only operations. + /// + /// Command type. + /// Operation token used for diagnostics/tracing. public static ParsedCommandView Simple(CommandType type, string operation) => new() { Type = type, Operation = operation, MaxMessages = -1 }; + /// + /// Materializes payload bytes as a contiguous . + /// public ReadOnlyMemory GetPayloadMemory() => Payload.IsEmpty ? ReadOnlyMemory.Empty : Payload.IsSingleSegment ? Payload.First : Payload.ToArray(); + /// + /// Converts this view into a materialized object. + /// public ParsedCommand Materialize() => new() { diff --git a/src/NATS.Server/Protocol/ProtoWire.cs b/src/NATS.Server/Protocol/ProtoWire.cs index 284d681..230be90 100644 --- a/src/NATS.Server/Protocol/ProtoWire.cs +++ b/src/NATS.Server/Protocol/ProtoWire.cs @@ -6,6 +6,10 @@ public static class ProtoWire public const string ErrProtoOverflow = "too much data for a value"; public const string ErrProtoInvalidFieldNumber = "invalid field number"; + /// + /// Scans a protobuf field (tag and value) and returns field metadata with consumed size. + /// + /// Input bytes beginning at a protobuf field tag. public static (int Number, int WireType, int Size) ScanField(ReadOnlySpan buffer) { var (number, wireType, tagSize) = ScanTag(buffer); @@ -13,6 +17,10 @@ public static class ProtoWire return (number, wireType, tagSize + valueSize); } + /// + /// Scans a protobuf tag and returns field number, wire type, and bytes consumed. + /// + /// Input bytes beginning at a protobuf field tag varint. public static (int Number, int WireType, int Size) ScanTag(ReadOnlySpan buffer) { var (tag, size) = ScanVarint(buffer); @@ -23,6 +31,11 @@ public static class ProtoWire return ((int)fieldNumber, (int)(tag & 0x7), size); } + /// + /// Scans the encoded value size for a protobuf field using its wire type. + /// + /// Protobuf wire type from the field tag. + /// Input bytes beginning at the field value payload. public static int ScanFieldValue(int wireType, ReadOnlySpan buffer) { return wireType switch @@ -35,6 +48,10 @@ public static class ProtoWire }; } + /// + /// Reads a protobuf varint value and returns decoded value and bytes consumed. + /// + /// Input bytes beginning at a varint. public static (ulong Value, int Size) ScanVarint(ReadOnlySpan buffer) { ulong value = 0; @@ -62,6 +79,10 @@ public static class ProtoWire throw new ProtoWireException(ErrProtoOverflow); } + /// + /// Scans a length-delimited protobuf field and returns total encoded size. + /// + /// Input bytes beginning at the field's length varint. public static int ScanBytes(ReadOnlySpan buffer) { var (length, lenSize) = ScanVarint(buffer); @@ -71,6 +92,10 @@ public static class ProtoWire return lenSize + (int)length; } + /// + /// Encodes an unsigned integer into protobuf varint format. + /// + /// Unsigned value to encode. public static byte[] EncodeVarint(ulong value) { Span scratch = stackalloc byte[10]; diff --git a/src/NATS.Server/Raft/CommitQueue.cs b/src/NATS.Server/Raft/CommitQueue.cs index 1a17c76..1abac48 100644 --- a/src/NATS.Server/Raft/CommitQueue.cs +++ b/src/NATS.Server/Raft/CommitQueue.cs @@ -19,18 +19,22 @@ public sealed class CommitQueue /// /// Enqueues an item for state machine application. /// + /// Committed item to enqueue for downstream application. + /// Cancellation token for the enqueue operation. public ValueTask EnqueueAsync(T item, CancellationToken ct = default) => _channel.Writer.WriteAsync(item, ct); /// /// Dequeues the next committed entry, waiting if none are available. /// + /// Cancellation token for the dequeue wait. public ValueTask DequeueAsync(CancellationToken ct = default) => _channel.Reader.ReadAsync(ct); /// /// Attempts a non-blocking dequeue. Returns true if an item was available. /// + /// Dequeued item when available; otherwise default value. public bool TryDequeue(out T? item) => _channel.Reader.TryRead(out item); diff --git a/src/NATS.Server/Raft/RaftConfig.cs b/src/NATS.Server/Raft/RaftConfig.cs index 193c1ff..3011e44 100644 --- a/src/NATS.Server/Raft/RaftConfig.cs +++ b/src/NATS.Server/Raft/RaftConfig.cs @@ -7,14 +7,39 @@ namespace NATS.Server.Raft; /// public sealed class RaftConfig { + /// + /// Gets or sets the logical name for this RAFT group (meta, stream, or consumer group id). + /// public string Name { get; set; } = string.Empty; // Store/log abstractions are intentionally loose until full WAL/store parity is wired. + /// + /// Gets or sets the storage backend that persists RAFT snapshots and stable state. + /// public object? Store { get; set; } + + /// + /// Gets or sets the write-ahead log implementation used for replicated entries. + /// public object? Log { get; set; } + /// + /// Gets or sets a value indicating whether this node tracks replication progress metrics. + /// public bool Track { get; set; } + + /// + /// Gets or sets a value indicating whether this node is a non-voting observer. + /// public bool Observer { get; set; } + + /// + /// Gets or sets a value indicating whether the group is replaying log state during recovery. + /// public bool Recovering { get; set; } + + /// + /// Gets or sets a value indicating whether this node is participating in a membership scale-up. + /// public bool ScaleUp { get; set; } } diff --git a/src/NATS.Server/Raft/RaftEntry.cs b/src/NATS.Server/Raft/RaftEntry.cs index e8ac92d..9751be3 100644 --- a/src/NATS.Server/Raft/RaftEntry.cs +++ b/src/NATS.Server/Raft/RaftEntry.cs @@ -6,7 +6,14 @@ namespace NATS.Server.Raft; /// public readonly record struct RaftEntry(RaftEntryType Type, byte[] Data) { + /// + /// Converts this entry into transport-wire shape. + /// public RaftEntryWire ToWire() => new(Type, Data); + /// + /// Reconstructs an entry from transport-wire shape. + /// + /// Wire entry carrying type and payload bytes. public static RaftEntry FromWire(RaftEntryWire wire) => new(wire.Type, wire.Data); } diff --git a/src/NATS.Server/Raft/RaftLog.cs b/src/NATS.Server/Raft/RaftLog.cs index 686999f..17da589 100644 --- a/src/NATS.Server/Raft/RaftLog.cs +++ b/src/NATS.Server/Raft/RaftLog.cs @@ -5,6 +5,7 @@ public sealed class RaftLog private readonly List _entries = []; private long _baseIndex; + /// Current in-memory RAFT log entries after base-index compaction. public IReadOnlyList Entries => _entries; /// @@ -12,6 +13,11 @@ public sealed class RaftLog /// public long BaseIndex => _baseIndex; + /// + /// Appends a new local command entry to the RAFT log. + /// + /// Current leader term for the appended entry. + /// Serialized state-machine command payload. public RaftLogEntry Append(int term, string command) { var entry = new RaftLogEntry(_baseIndex + _entries.Count + 1, term, command); @@ -23,6 +29,9 @@ public sealed class RaftLog /// Appends an entry with an explicit timestamp. Used in tests and by the /// policy to set controlled creation times. /// + /// Current leader term for the appended entry. + /// Serialized state-machine command payload. + /// Explicit UTC timestamp assigned to the new entry. public RaftLogEntry AppendWithTimestamp(int term, string command, DateTime timestamp) { var entry = new RaftLogEntry(_baseIndex + _entries.Count + 1, term, command) @@ -33,6 +42,10 @@ public sealed class RaftLog return entry; } + /// + /// Appends an entry received through replication if it is not already present. + /// + /// Replicated RAFT log entry from a leader. public void AppendReplicated(RaftLogEntry entry) { if (_entries.Any(e => e.Index == entry.Index)) @@ -41,6 +54,10 @@ public sealed class RaftLog _entries.Add(entry); } + /// + /// Replaces current log entries with snapshot base state after snapshot install. + /// + /// Snapshot metadata defining the new base index. public void ReplaceWithSnapshot(RaftSnapshot snapshot) { _entries.Clear(); @@ -52,6 +69,7 @@ public sealed class RaftLog /// This is log compaction: entries covered by a snapshot are discarded. /// Go reference: raft.go WAL compact / compactLog. /// + /// Highest included index to compact away. public void Compact(long upToIndex) { var removeCount = _entries.Count(e => e.Index <= upToIndex); @@ -62,6 +80,11 @@ public sealed class RaftLog } } + /// + /// Persists current RAFT log state to disk. + /// + /// Destination path for the persisted log file. + /// Cancellation token for asynchronous I/O. public async Task PersistAsync(string path, CancellationToken ct) { Directory.CreateDirectory(Path.GetDirectoryName(path)!); @@ -73,6 +96,11 @@ public sealed class RaftLog await File.WriteAllTextAsync(path, System.Text.Json.JsonSerializer.Serialize(model), ct); } + /// + /// Loads RAFT log state from disk when a persisted file exists. + /// + /// Path to the persisted RAFT log file. + /// Cancellation token for asynchronous I/O. public static async Task LoadAsync(string path, CancellationToken ct) { var log = new RaftLog(); @@ -88,7 +116,9 @@ public sealed class RaftLog private sealed class PersistedLog { + /// Base index recorded after compaction. public long BaseIndex { get; set; } + /// Persisted RAFT log entries above . public List Entries { get; set; } = []; } } diff --git a/src/NATS.Server/Raft/RaftPeerState.cs b/src/NATS.Server/Raft/RaftPeerState.cs index c93894c..6d46131 100644 --- a/src/NATS.Server/Raft/RaftPeerState.cs +++ b/src/NATS.Server/Raft/RaftPeerState.cs @@ -52,6 +52,7 @@ public sealed class RaftPeerState /// /// Refreshes the cached Current flag using the provided freshness window. /// + /// Freshness window used to evaluate last-contact recency. public void RefreshCurrent(TimeSpan window) => Current = DateTime.UtcNow - LastContact < window; @@ -59,6 +60,7 @@ public sealed class RaftPeerState /// Returns true if this peer has been contacted within the election timeout window. /// Go reference: raft.go isCurrent check. /// + /// Election-timeout recency threshold. public bool IsCurrent(TimeSpan electionTimeout) { RefreshCurrent(electionTimeout); @@ -68,6 +70,7 @@ public sealed class RaftPeerState /// /// Returns true if this peer is both active and has been contacted within the health threshold. /// + /// Health recency threshold for considering a peer current. public bool IsHealthy(TimeSpan healthThreshold) { RefreshCurrent(healthThreshold); diff --git a/src/NATS.Server/Raft/RaftReplicator.cs b/src/NATS.Server/Raft/RaftReplicator.cs index c0396ce..fdfca51 100644 --- a/src/NATS.Server/Raft/RaftReplicator.cs +++ b/src/NATS.Server/Raft/RaftReplicator.cs @@ -2,9 +2,18 @@ namespace NATS.Server.Raft; public sealed class RaftReplicator { + /// + /// Computes next-index backoff after append rejection. + /// + /// Current next index for the follower. public static long BacktrackNextIndex(long nextIndex) => Math.Max(1, nextIndex - 1); + /// + /// Replicates an entry directly to in-process follower nodes. + /// + /// Log entry to replicate. + /// Follower nodes receiving the entry. public int Replicate(RaftLogEntry entry, IReadOnlyList followers) { var acknowledgements = 0; @@ -17,6 +26,14 @@ public sealed class RaftReplicator return acknowledgements; } + /// + /// Replicates an entry using transport when available, otherwise local follower fan-out. + /// + /// Leader node id initiating replication. + /// Log entry to replicate. + /// Follower nodes targeted for replication. + /// Optional transport used for remote append RPC. + /// Cancellation token for transport operations. public async Task> ReplicateAsync( string leaderId, RaftLogEntry entry, diff --git a/src/NATS.Server/Raft/RaftRpcContracts.cs b/src/NATS.Server/Raft/RaftRpcContracts.cs index 49ee72f..8b0b6f4 100644 --- a/src/NATS.Server/Raft/RaftRpcContracts.cs +++ b/src/NATS.Server/Raft/RaftRpcContracts.cs @@ -2,17 +2,34 @@ namespace NATS.Server.Raft; public sealed class VoteRequest { + /// + /// Gets the candidate term proposed in the vote request. + /// public int Term { get; init; } + + /// + /// Gets the candidate server identifier requesting votes. + /// public string CandidateId { get; init; } = string.Empty; } public sealed class VoteResponse { + /// + /// Gets a value indicating whether the vote was granted to the candidate. + /// public bool Granted { get; init; } } public sealed class AppendResult { + /// + /// Gets the follower identifier reporting append outcome. + /// public string FollowerId { get; init; } = string.Empty; + + /// + /// Gets a value indicating whether append processing succeeded on the follower. + /// public bool Success { get; init; } } diff --git a/src/NATS.Server/Raft/RaftSnapshot.cs b/src/NATS.Server/Raft/RaftSnapshot.cs index 9e8c99b..586eeeb 100644 --- a/src/NATS.Server/Raft/RaftSnapshot.cs +++ b/src/NATS.Server/Raft/RaftSnapshot.cs @@ -2,7 +2,18 @@ namespace NATS.Server.Raft; public sealed class RaftSnapshot { + /// + /// Gets or sets highest log index included in this snapshot. + /// public long LastIncludedIndex { get; init; } + + /// + /// Gets or sets term corresponding to . + /// public int LastIncludedTerm { get; init; } + + /// + /// Gets or sets serialized state machine payload bytes. + /// public byte[] Data { get; init; } = []; } diff --git a/src/NATS.Server/Raft/RaftSnapshotStore.cs b/src/NATS.Server/Raft/RaftSnapshotStore.cs index e6947b3..90bc0a7 100644 --- a/src/NATS.Server/Raft/RaftSnapshotStore.cs +++ b/src/NATS.Server/Raft/RaftSnapshotStore.cs @@ -7,11 +7,20 @@ public sealed class RaftSnapshotStore private RaftSnapshot? _snapshot; private readonly string? _snapshotPath; + /// + /// Creates a snapshot store backed by optional filesystem persistence. + /// + /// Optional path for persisted snapshot JSON. public RaftSnapshotStore(string? snapshotPath = null) { _snapshotPath = snapshotPath; } + /// + /// Saves the latest RAFT snapshot in memory and optionally to disk. + /// + /// Snapshot to store. + /// Cancellation token for async API symmetry. public Task SaveAsync(RaftSnapshot snapshot, CancellationToken ct) { _snapshot = snapshot; @@ -27,6 +36,10 @@ public sealed class RaftSnapshotStore return Task.CompletedTask; } + /// + /// Loads the current snapshot from memory or disk when available. + /// + /// Cancellation token for async API symmetry. public Task LoadAsync(CancellationToken ct) { if (_snapshot == null diff --git a/src/NATS.Server/Raft/RaftSubjects.cs b/src/NATS.Server/Raft/RaftSubjects.cs index df02bae..68a35cc 100644 --- a/src/NATS.Server/Raft/RaftSubjects.cs +++ b/src/NATS.Server/Raft/RaftSubjects.cs @@ -19,36 +19,42 @@ public static class RaftSubjects /// Vote request subject for the given RAFT group. /// Go: server/raft.go:2163 — raftVoteSubj = "$NRG.V.%s" /// + /// RAFT group identifier receiving vote requests. public static string Vote(string group) => $"$NRG.V.{group}"; /// /// AppendEntry subject for the given RAFT group. /// Go: server/raft.go:2164 — raftAppendSubj = "$NRG.AE.%s" /// + /// RAFT group identifier receiving append-entry traffic. public static string AppendEntry(string group) => $"$NRG.AE.{group}"; /// /// Proposal (forward proposal) subject for the given RAFT group. /// Go: server/raft.go:2165 — raftPropSubj = "$NRG.P.%s" /// + /// RAFT group identifier receiving forwarded proposals. public static string Proposal(string group) => $"$NRG.P.{group}"; /// /// Remove-peer proposal subject for the given RAFT group. /// Go: server/raft.go:2166 — raftRemovePeerSubj = "$NRG.RP.%s" /// + /// RAFT group identifier processing membership removal proposals. public static string RemovePeer(string group) => $"$NRG.RP.{group}"; /// /// Reply inbox subject for a one-shot RPC reply. /// Go: server/raft.go:2167 — raftReply = "$NRG.R.%s" /// + /// Unique request correlation id for the reply inbox suffix. public static string Reply(string id) => $"$NRG.R.{id}"; /// /// Catchup reply subject used during log catch-up streaming. /// Go: server/raft.go:2168 — raftCatchupReply = "$NRG.CR.%s" /// + /// Catch-up stream correlation id used for this reply subject. public static string CatchupReply(string id) => $"$NRG.CR.{id}"; /// @@ -57,5 +63,6 @@ public static class RaftSubjects /// for leadership transfer. Mirrors Go's sendTimeoutNow pattern. /// Go reference: raft.go sendTimeoutNow /// + /// RAFT group identifier targeted for leadership transfer. public static string TimeoutNow(string group) => $"$NRG.TN.{group}"; } diff --git a/src/NATS.Server/Raft/RaftTermState.cs b/src/NATS.Server/Raft/RaftTermState.cs index 55d2229..5c08062 100644 --- a/src/NATS.Server/Raft/RaftTermState.cs +++ b/src/NATS.Server/Raft/RaftTermState.cs @@ -2,7 +2,14 @@ namespace NATS.Server.Raft; public sealed class RaftTermState { + /// + /// Gets or sets current RAFT term persisted for this node. + /// public int CurrentTerm { get; set; } + + /// + /// Gets or sets candidate id voted for in . + /// public string? VotedFor { get; set; } } diff --git a/src/NATS.Server/Raft/RaftWal.cs b/src/NATS.Server/Raft/RaftWal.cs index 186097f..869cf20 100644 --- a/src/NATS.Server/Raft/RaftWal.cs +++ b/src/NATS.Server/Raft/RaftWal.cs @@ -41,6 +41,7 @@ public sealed class RaftWal : IDisposable /// Opens or creates a WAL file at the given path. Writes the file header if the file is new. /// The file is opened with FileShare.Read so readers (Load) can access it concurrently. /// + /// Filesystem path of the RAFT write-ahead log file. public RaftWal(string path) { _path = path; @@ -71,6 +72,7 @@ public sealed class RaftWal : IDisposable /// /// Appends a single RAFT log entry to the WAL file and the in-memory list. /// + /// RAFT log entry to append and persist. public async Task AppendAsync(RaftLogEntry entry) { await WriteEntryTo(_stream, entry); @@ -90,6 +92,7 @@ public sealed class RaftWal : IDisposable /// Rewrites the WAL keeping only entries with index > upToIndex, using a temp file and atomic rename. /// Also updates the in-memory list. /// + /// Inclusive log index floor to compact away. public async Task CompactAsync(long upToIndex) { var remaining = _entries.Where(e => e.Index > upToIndex).ToList(); @@ -118,6 +121,7 @@ public sealed class RaftWal : IDisposable /// Scans a WAL file, validates records via CRC32, stops at the first corrupt or truncated /// record, and returns a populated RaftWal ready for append. /// + /// Filesystem path of the RAFT write-ahead log file. public static RaftWal Load(string path) { if (!File.Exists(path)) @@ -141,6 +145,9 @@ public sealed class RaftWal : IDisposable return new RaftWal(path, stream, entries); } + /// + /// Closes the underlying WAL file stream. + /// public void Dispose() { _stream.Dispose(); diff --git a/src/NATS.Server/Routes/RouteCompressionCodec.cs b/src/NATS.Server/Routes/RouteCompressionCodec.cs index 5ba8a71..7240741 100644 --- a/src/NATS.Server/Routes/RouteCompressionCodec.cs +++ b/src/NATS.Server/Routes/RouteCompressionCodec.cs @@ -50,6 +50,8 @@ public static class RouteCompressionCodec /// The parameter is accepted for API parity with Go /// but Fast, Better, and Best all produce the same output. /// + /// Raw route payload bytes to compress. + /// Requested compression level negotiated for this route link. public static byte[] Compress(ReadOnlySpan data, RouteCompressionLevel level = RouteCompressionLevel.Fast) { if (level == RouteCompressionLevel.Off) @@ -64,6 +66,7 @@ public static class RouteCompressionCodec /// /// Decompresses Snappy/S2-compressed data. /// + /// Compressed route payload bytes from a peer server. /// If the data is not valid Snappy. public static byte[] Decompress(ReadOnlySpan compressed) { @@ -79,6 +82,8 @@ public static class RouteCompressionCodec /// Go's negotiation behavior where both sides must agree. /// If either side is Off, the result is Off. /// + /// Local server compression preference string. + /// Remote peer compression preference string. public static RouteCompressionLevel NegotiateCompression(string localLevel, string remoteLevel) { var local = ParseLevel(localLevel); @@ -96,6 +101,7 @@ public static class RouteCompressionCodec /// Checks for Snappy stream magic header or attempts to validate /// as a Snappy block format by checking the leading varint. /// + /// Raw inbound payload bytes to inspect. public static bool IsCompressed(ReadOnlySpan data) { if (data.Length < 2) diff --git a/src/NATS.Server/Routes/RouteManager.cs b/src/NATS.Server/Routes/RouteManager.cs index bba63ec..f7bf367 100644 --- a/src/NATS.Server/Routes/RouteManager.cs +++ b/src/NATS.Server/Routes/RouteManager.cs @@ -893,6 +893,10 @@ public sealed class RouteManager : IAsyncDisposable /// /// Returns whether a solicited route exists for the specified remote server. /// + /// + /// Returns whether a solicited route exists for the specified remote server id. + /// + /// Remote server identifier to inspect. internal bool HasSolicitedRoute(string remoteServerId) { var prefix = remoteServerId + ":"; @@ -905,6 +909,10 @@ public sealed class RouteManager : IAsyncDisposable /// /// Marks the first matching route to the remote server as solicited. /// + /// + /// Upgrades an implicit route connection to solicited status for the remote server. + /// + /// Remote server identifier whose route should be upgraded. internal bool UpgradeRouteToSolicited(string remoteServerId) { var prefix = remoteServerId + ":"; @@ -926,6 +934,10 @@ public sealed class RouteManager : IAsyncDisposable /// /// Returns whether the remote server ID is already present in the connected set. /// + /// + /// Returns whether the remote server id would conflict with an existing connected server. + /// + /// Remote server identifier to validate. internal bool IsDuplicateServerName(string remoteServerId) => _connectedServerIds.ContainsKey(remoteServerId); diff --git a/src/NATS.Server/Server/AcceptLoopErrorHandler.cs b/src/NATS.Server/Server/AcceptLoopErrorHandler.cs index e677928..1d863cc 100644 --- a/src/NATS.Server/Server/AcceptLoopErrorHandler.cs +++ b/src/NATS.Server/Server/AcceptLoopErrorHandler.cs @@ -6,11 +6,21 @@ public sealed class AcceptLoopErrorHandler { private readonly Action _callback; + /// + /// Creates an accept-loop error callback adapter. + /// + /// Callback invoked with exception, endpoint, and retry delay. public AcceptLoopErrorHandler(Action callback) { _callback = callback ?? throw new ArgumentNullException(nameof(callback)); } + /// + /// Forwards an accept-loop failure event to the configured callback. + /// + /// Accept exception. + /// Listener endpoint associated with the accept loop. + /// Computed delay before the next accept attempt. public void OnAcceptError(Exception ex, EndPoint? endpoint, TimeSpan delay) { _callback(ex, endpoint, delay); diff --git a/src/NATS.Server/Server/RateCounter.cs b/src/NATS.Server/Server/RateCounter.cs index b3712b0..48c29e7 100644 --- a/src/NATS.Server/Server/RateCounter.cs +++ b/src/NATS.Server/Server/RateCounter.cs @@ -14,11 +14,18 @@ public sealed class RateCounter private readonly TimeSpan _interval = TimeSpan.FromSeconds(1); private readonly Lock _mu = new(); + /// + /// Creates a one-second rate counter with the given allow limit. + /// + /// Maximum allowed operations per one-second interval. public RateCounter(long limit) { _limit = Math.Max(1, limit); } + /// + /// Attempts to consume one operation slot in the current interval. + /// public bool Allow() { var now = DateTime.UtcNow; @@ -42,6 +49,9 @@ public sealed class RateCounter } } + /// + /// Returns and resets the number of blocked attempts since last call. + /// public ulong CountBlocked() { lock (_mu) diff --git a/src/NATS.Server/Server/ServerUtilities.cs b/src/NATS.Server/Server/ServerUtilities.cs index 315468e..9b926ee 100644 --- a/src/NATS.Server/Server/ServerUtilities.cs +++ b/src/NATS.Server/Server/ServerUtilities.cs @@ -16,6 +16,8 @@ public static class ServerUtilities /// Parse a host/port string with a default port fallback. /// Mirrors util.go parseHostPort behavior where 0/-1 port values fall back. /// + /// Host or host:port text from server configuration. + /// Default port used when input omits or uses 0/-1. public static (string Host, int Port) ParseHostPort(string hostPort, int defaultPort) { if (string.IsNullOrWhiteSpace(hostPort)) @@ -63,6 +65,7 @@ public static class ServerUtilities /// /// Redacts password in a single URL user-info section. /// + /// URL that may contain user:password@ credentials. public static string RedactUrlString(string url) { var match = UrlAuthRegex.Match(url); @@ -75,6 +78,7 @@ public static class ServerUtilities /// /// Redacts URL credentials for a URL list. /// + /// URLs to redact before logging or diagnostics output. public static IReadOnlyList RedactUrlList(IEnumerable urls) { return urls.Select(RedactUrlString).ToArray(); diff --git a/src/NATS.Server/SlopwatchSuppressAttribute.cs b/src/NATS.Server/SlopwatchSuppressAttribute.cs index 91e70f0..ba2ba26 100644 --- a/src/NATS.Server/SlopwatchSuppressAttribute.cs +++ b/src/NATS.Server/SlopwatchSuppressAttribute.cs @@ -7,6 +7,13 @@ namespace NATS.Server; [AttributeUsage(AttributeTargets.Method, AllowMultiple = true)] public sealed class SlopwatchSuppressAttribute(string ruleId, string justification) : Attribute { + /// + /// Gets the slopwatch rule identifier being suppressed. + /// public string RuleId { get; } = ruleId; + + /// + /// Gets the human-readable justification for this suppression. + /// public string Justification { get; } = justification; } diff --git a/src/NATS.Server/SlowConsumerTracker.cs b/src/NATS.Server/SlowConsumerTracker.cs index 47bc54b..307405b 100644 --- a/src/NATS.Server/SlowConsumerTracker.cs +++ b/src/NATS.Server/SlowConsumerTracker.cs @@ -30,6 +30,7 @@ public sealed class SlowConsumerTracker /// Increments both the per-kind counter and the total counter. /// Fires the threshold callback if reaches the configured threshold. /// + /// Connection kind that triggered the slow-consumer event. public void RecordSlowConsumer(ClientKind kind) { _countsByKind.AddOrUpdate(kind, 1L, static (_, existing) => existing + 1L); @@ -40,6 +41,7 @@ public sealed class SlowConsumerTracker } /// Returns the number of slow-consumer events recorded for . + /// Connection kind to query. public long GetCount(ClientKind kind) => _countsByKind.TryGetValue(kind, out var count) ? count : 0L; @@ -47,6 +49,7 @@ public sealed class SlowConsumerTracker /// Registers a callback that is invoked (with the triggering ) /// each time the total count reaches or exceeds the configured threshold. /// + /// Callback invoked when threshold logic fires. public void OnThresholdExceeded(Action callback) => _onThresholdExceeded = callback; diff --git a/src/NATS.Server/Subscriptions/RouteResultCache.cs b/src/NATS.Server/Subscriptions/RouteResultCache.cs index ee4307b..b50de87 100644 --- a/src/NATS.Server/Subscriptions/RouteResultCache.cs +++ b/src/NATS.Server/Subscriptions/RouteResultCache.cs @@ -19,15 +19,23 @@ public sealed class RouteResultCache private long _hits; private long _misses; + /// + /// Creates a bounded LRU cache for route/subscription match results. + /// + /// Maximum number of subject match results to retain. public RouteResultCache(int capacity = 8192) { _capacity = capacity; _map = new Dictionary>(capacity, StringComparer.Ordinal); } + /// Current cache invalidation generation. public long Generation => Interlocked.Read(ref _generation); + /// Total successful cache lookups. public long Hits => Interlocked.Read(ref _hits); + /// Total cache misses. public long Misses => Interlocked.Read(ref _misses); + /// Current number of cached entries. public int Count { get { lock (_lock) return _map.Count; } } /// @@ -36,6 +44,8 @@ public sealed class RouteResultCache /// clears all entries and returns false. /// Updates LRU order on a hit. /// + /// Subject used as the cache key. + /// Cached route result when found. public bool TryGet(string subject, out SubListResult? result) { lock (_lock) @@ -70,6 +80,8 @@ public sealed class RouteResultCache /// Adds or updates a subject's cached result. /// If at capacity, evicts the least recently used entry (tail of list). /// + /// Subject used as the cache key. + /// Route result to cache. public void Set(string subject, SubListResult result) { lock (_lock) diff --git a/src/NATS.Server/Subscriptions/SubListCacheSweeper.cs b/src/NATS.Server/Subscriptions/SubListCacheSweeper.cs index 6b5996a..583237e 100644 --- a/src/NATS.Server/Subscriptions/SubListCacheSweeper.cs +++ b/src/NATS.Server/Subscriptions/SubListCacheSweeper.cs @@ -4,6 +4,10 @@ public sealed class SubListCacheSweeper { private int _scheduled; + /// + /// Schedules one asynchronous cache sweep if no sweep is currently in flight. + /// + /// Sweep action that clears or compacts cache state. public void ScheduleSweep(Action sweep) { if (Interlocked.CompareExchange(ref _scheduled, 1, 0) != 0) @@ -22,6 +26,10 @@ public sealed class SubListCacheSweeper }); } + /// + /// Immediately triggers an asynchronous cache sweep action. + /// + /// Sweep action that clears or compacts cache state. public Task TriggerSweepAsync(Action sweep) { return Task.Run(sweep); diff --git a/src/NATS.Server/Subscriptions/SubListResult.cs b/src/NATS.Server/Subscriptions/SubListResult.cs index c6e4b64..532e457 100644 --- a/src/NATS.Server/Subscriptions/SubListResult.cs +++ b/src/NATS.Server/Subscriptions/SubListResult.cs @@ -4,9 +4,21 @@ public sealed class SubListResult { public static readonly SubListResult Empty = new([], []); + /// + /// Gets direct (non-queue) subscriptions matching a subject lookup. + /// public Subscription[] PlainSubs { get; } + + /// + /// Gets queue subscriptions grouped by queue name for load-balanced delivery. + /// public Subscription[][] QueueSubs { get; } // outer = groups, inner = members + /// + /// Creates a match result containing plain and queue subscription sets. + /// + /// Matched direct subscriptions. + /// Matched queue groups and members. public SubListResult(Subscription[] plainSubs, Subscription[][] queueSubs) { PlainSubs = plainSubs; diff --git a/src/NATS.Server/Subscriptions/SubListStats.cs b/src/NATS.Server/Subscriptions/SubListStats.cs index 35a899a..b25f47c 100644 --- a/src/NATS.Server/Subscriptions/SubListStats.cs +++ b/src/NATS.Server/Subscriptions/SubListStats.cs @@ -2,19 +2,34 @@ namespace NATS.Server.Subscriptions; public sealed class SubListStats { + /// Total active subscriptions tracked by the sublist. public uint NumSubs { get; set; } + /// Number of cached match results currently stored. public uint NumCache { get; set; } + /// Total subscription insert operations performed. public ulong NumInserts { get; set; } + /// Total subscription remove operations performed. public ulong NumRemoves { get; set; } + /// Total subject match lookups performed. public ulong NumMatches { get; set; } + /// Cache hit ratio for match lookups. public double CacheHitRate { get; set; } + /// Maximum fanout observed for a single subject match. public uint MaxFanout { get; set; } + /// Average fanout across cached subject matches. public double AvgFanout { get; set; } + /// Accumulated fanout used to compute . internal int TotalFanout { get; set; } + /// Number of cached entries used for average fanout calculation. internal int CacheEntries { get; set; } + /// Total cache hits used to compute . internal ulong CacheHits { get; set; } + /// + /// Aggregates another stats snapshot into this instance. + /// + /// Stats snapshot to accumulate. public void Add(SubListStats stat) { NumSubs += stat.NumSubs; diff --git a/src/NATS.Server/Subscriptions/SubjectTransform.cs b/src/NATS.Server/Subscriptions/SubjectTransform.cs index 264ddd5..91912b3 100644 --- a/src/NATS.Server/Subscriptions/SubjectTransform.cs +++ b/src/NATS.Server/Subscriptions/SubjectTransform.cs @@ -28,6 +28,8 @@ public sealed partial class SubjectTransform /// Compiles a subject transform from source pattern to destination template. /// Returns null if source is invalid or destination references out-of-range wildcards. /// + /// Source subject pattern to match incoming subjects. + /// Destination template used to produce transformed subjects. public static SubjectTransform? Create(string source, string destination) { if (string.IsNullOrEmpty(destination)) @@ -123,6 +125,12 @@ public sealed partial class SubjectTransform return new SubjectTransform(source, destination, srcTokens, destTokens, ops); } + /// + /// Creates a transform and optionally enforces strict wildcard usage. + /// + /// Source subject pattern. + /// Destination transform template. + /// When true, all source wildcards must be consumed by destination mappings. public static SubjectTransform? NewSubjectTransformWithStrict(string source, string destination, bool strict) { var transform = Create(source, destination); @@ -132,9 +140,18 @@ public sealed partial class SubjectTransform return UsesAllSourceWildcards(source, destination) ? transform : null; } + /// + /// Creates a transform with strict wildcard enforcement enabled. + /// + /// Source subject pattern. + /// Destination transform template. public static SubjectTransform? NewSubjectTransformStrict(string source, string destination) => NewSubjectTransformWithStrict(source, destination, strict: true); + /// + /// Validates that a destination mapping template is syntactically valid. + /// + /// Destination mapping template to validate. public static bool ValidateMapping(string destination) { if (string.IsNullOrWhiteSpace(destination)) @@ -153,6 +170,10 @@ public sealed partial class SubjectTransform return true; } + /// + /// Replaces wildcard tokens in a subject pattern with positional wildcard placeholders. + /// + /// Subject pattern to tokenize. public static string TransformTokenize(string subject) { if (string.IsNullOrEmpty(subject)) @@ -170,6 +191,10 @@ public sealed partial class SubjectTransform return string.Join('.', tokens); } + /// + /// Converts positional wildcard placeholders back to wildcard tokens. + /// + /// Tokenized subject pattern. public static string TransformUntokenize(string subject) { if (string.IsNullOrEmpty(subject)) @@ -185,6 +210,9 @@ public sealed partial class SubjectTransform return string.Join('.', tokens); } + /// + /// Attempts to build a reverse transform that maps destination subjects back to source form. + /// public SubjectTransform? Reverse() { var tokenizedSource = TransformTokenize(_source); @@ -230,6 +258,7 @@ public sealed partial class SubjectTransform /// Matches subject against source pattern, captures wildcard values, evaluates destination template. /// Returns null if subject doesn't match source. /// + /// Incoming subject to transform. public string? Apply(string subject) { if (string.IsNullOrEmpty(subject)) @@ -248,6 +277,10 @@ public sealed partial class SubjectTransform return TransformTokenized(subjectTokens); } + /// + /// Transforms a subject using this transform instance without requiring source-pattern match checks. + /// + /// Subject to transform. public string TransformSubject(string subject) { if (string.IsNullOrEmpty(subject)) @@ -885,6 +918,10 @@ public sealed partial class SubjectTransform int IntArg, string? StringArg) { + /// + /// Creates a transform operation with default arguments. + /// + /// Transform operation type. public TransformOp(TransformType type) : this(type, [], -1, null) { } diff --git a/src/NATS.Server/Subscriptions/Subscription.cs b/src/NATS.Server/Subscriptions/Subscription.cs index 724e45a..ef34836 100644 --- a/src/NATS.Server/Subscriptions/Subscription.cs +++ b/src/NATS.Server/Subscriptions/Subscription.cs @@ -8,8 +8,19 @@ public sealed class Subscription { private byte[]? _sidBytes; + /// + /// Gets the subscription subject filter registered by the client. + /// public required string Subject { get; init; } + + /// + /// Gets the optional queue group name for load-balanced message delivery. + /// public string? Queue { get; init; } + + /// + /// Gets the client-assigned subscription identifier used in protocol frames. + /// public required string Sid { get; init; } /// @@ -19,7 +30,19 @@ public sealed class Subscription public long MessageCount; // Interlocked public long MaxMessages; // 0 = unlimited + + /// + /// Gets or sets the owning client connection for this subscription. + /// public INatsClient? Client { get; set; } + + /// + /// Gets or sets service import metadata when this subscription is part of cross-account service routing. + /// public ServiceImport? ServiceImport { get; set; } + + /// + /// Gets or sets stream import metadata when this subscription participates in stream imports. + /// public StreamImport? StreamImport { get; set; } } diff --git a/src/NATS.Server/Tls/OcspConfig.cs b/src/NATS.Server/Tls/OcspConfig.cs index 0634522..8cf853c 100644 --- a/src/NATS.Server/Tls/OcspConfig.cs +++ b/src/NATS.Server/Tls/OcspConfig.cs @@ -15,6 +15,13 @@ public enum OcspMode public sealed class OcspConfig { + /// + /// Gets OCSP stapling mode behavior for server TLS handshakes. + /// public OcspMode Mode { get; init; } = OcspMode.Auto; + + /// + /// Gets responder URLs that override certificate-discovered OCSP endpoints. + /// public string[] OverrideUrls { get; init; } = []; } diff --git a/src/NATS.Server/Tls/OcspPeerConfig.cs b/src/NATS.Server/Tls/OcspPeerConfig.cs index d355686..6071820 100644 --- a/src/NATS.Server/Tls/OcspPeerConfig.cs +++ b/src/NATS.Server/Tls/OcspPeerConfig.cs @@ -105,20 +105,20 @@ public sealed class OcspResponseInfo public sealed class CertInfo { - [JsonPropertyName("subject")] /// Subject distinguished name. + [JsonPropertyName("subject")] public string Subject { get; init; } = string.Empty; - [JsonPropertyName("issuer")] /// Issuer distinguished name. + [JsonPropertyName("issuer")] public string Issuer { get; init; } = string.Empty; - [JsonPropertyName("fingerprint")] /// Certificate fingerprint string. + [JsonPropertyName("fingerprint")] public string Fingerprint { get; init; } = string.Empty; - [JsonPropertyName("raw")] /// Raw DER certificate bytes. + [JsonPropertyName("raw")] public byte[] Raw { get; init; } = []; } diff --git a/src/NATS.Server/Tls/PeekableStream.cs b/src/NATS.Server/Tls/PeekableStream.cs index 9385b3b..63704f1 100644 --- a/src/NATS.Server/Tls/PeekableStream.cs +++ b/src/NATS.Server/Tls/PeekableStream.cs @@ -7,8 +7,18 @@ public sealed class PeekableStream : Stream private int _peekedOffset; private int _peekedCount; + /// + /// Wraps a stream so callers can peek initial bytes without losing them for subsequent reads. + /// + /// Underlying transport stream. public PeekableStream(Stream inner) => _inner = inner; + /// + /// Reads up to bytes from the underlying stream and buffers them + /// so the next read returns the same bytes first. + /// + /// Number of bytes to peek. + /// Cancellation token for asynchronous I/O. public async Task PeekAsync(int count, CancellationToken ct = default) { var buf = new byte[count]; @@ -20,6 +30,7 @@ public sealed class PeekableStream : Stream return buf; } + /// public override async ValueTask ReadAsync(Memory buffer, CancellationToken ct = default) { if (_peekedBytes != null && _peekedOffset < _peekedCount) @@ -34,6 +45,7 @@ public sealed class PeekableStream : Stream return await _inner.ReadAsync(buffer, ct); } + /// public override int Read(byte[] buffer, int offset, int count) { if (_peekedBytes != null && _peekedOffset < _peekedCount) @@ -48,14 +60,20 @@ public sealed class PeekableStream : Stream return _inner.Read(buffer, offset, count); } + /// public override Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken ct) => ReadAsync(buffer.AsMemory(offset, count), ct).AsTask(); // Write passthrough + /// public override void Write(byte[] buffer, int offset, int count) => _inner.Write(buffer, offset, count); + /// public override Task WriteAsync(byte[] buffer, int offset, int count, CancellationToken ct) => _inner.WriteAsync(buffer, offset, count, ct); + /// public override ValueTask WriteAsync(ReadOnlyMemory buffer, CancellationToken ct = default) => _inner.WriteAsync(buffer, ct); + /// public override void Flush() => _inner.Flush(); + /// public override Task FlushAsync(CancellationToken ct) => _inner.FlushAsync(ct); // Required Stream overrides @@ -69,8 +87,11 @@ public sealed class PeekableStream : Stream public override long Length => throw new NotSupportedException(); /// public override long Position { get => throw new NotSupportedException(); set => throw new NotSupportedException(); } + /// public override long Seek(long offset, SeekOrigin origin) => throw new NotSupportedException(); + /// public override void SetLength(long value) => throw new NotSupportedException(); + /// protected override void Dispose(bool disposing) { if (disposing) _inner.Dispose(); base.Dispose(disposing); } } diff --git a/src/NATS.Server/Tls/TlsCertificateProvider.cs b/src/NATS.Server/Tls/TlsCertificateProvider.cs index 18b17df..4f0f962 100644 --- a/src/NATS.Server/Tls/TlsCertificateProvider.cs +++ b/src/NATS.Server/Tls/TlsCertificateProvider.cs @@ -21,6 +21,8 @@ public sealed class TlsCertificateProvider : IDisposable /// /// Creates a new provider and loads the initial certificate from the given paths. /// + /// Path to the server certificate file used for inbound TLS handshakes. + /// Optional path to a separate private key file when not bundled with the certificate. public TlsCertificateProvider(string certPath, string? keyPath) { _currentCert = TlsHelper.LoadCertificate(certPath, keyPath); @@ -29,6 +31,7 @@ public sealed class TlsCertificateProvider : IDisposable /// /// Creates a provider from a pre-loaded certificate (for testing). /// + /// Certificate instance to serve to newly accepted TLS clients. public TlsCertificateProvider(X509Certificate2 cert) { _currentCert = cert; @@ -44,6 +47,8 @@ public sealed class TlsCertificateProvider : IDisposable /// Atomically swaps the current certificate with a newly loaded one. /// Returns the old certificate (caller may dispose it after existing connections drain). /// + /// Path to the replacement server certificate file. + /// Optional path to the replacement private key file. public X509Certificate2? SwapCertificate(string certPath, string? keyPath) { var newCert = TlsHelper.LoadCertificate(certPath, keyPath); @@ -54,6 +59,7 @@ public sealed class TlsCertificateProvider : IDisposable /// Atomically swaps the current certificate with the provided one. /// Returns the old certificate. /// + /// Replacement certificate used for future handshake callbacks. public X509Certificate2? SwapCertificate(X509Certificate2 newCert) { var old = Interlocked.Exchange(ref _currentCert, newCert); @@ -70,6 +76,7 @@ public sealed class TlsCertificateProvider : IDisposable /// Atomically swaps the SSL server authentication options. /// Called after TLS config changes are detected during reload. /// + /// Rebuilt SSL options to apply to newly negotiated connections. public void SwapSslOptions(SslServerAuthenticationOptions newOptions) { Interlocked.Exchange(ref _currentSslOptions, newOptions); @@ -82,6 +89,9 @@ public sealed class TlsCertificateProvider : IDisposable /// public int Version => Volatile.Read(ref _version); + /// + /// Releases the current certificate instance held by the provider. + /// public void Dispose() { _currentCert?.Dispose(); diff --git a/src/NATS.Server/Tls/TlsRateLimiter.cs b/src/NATS.Server/Tls/TlsRateLimiter.cs index 75741a5..dd9a148 100644 --- a/src/NATS.Server/Tls/TlsRateLimiter.cs +++ b/src/NATS.Server/Tls/TlsRateLimiter.cs @@ -6,6 +6,10 @@ public sealed class TlsRateLimiter : IDisposable private readonly Timer _refillTimer; private readonly int _tokensPerSecond; + /// + /// Creates a per-second token limiter for TLS handshake admissions. + /// + /// Maximum TLS admits per second. public TlsRateLimiter(long tokensPerSecond) { _tokensPerSecond = (int)Math.Max(1, tokensPerSecond); @@ -19,7 +23,14 @@ public sealed class TlsRateLimiter : IDisposable if (toRelease > 0) _semaphore.Release(toRelease); } + /// + /// Waits for one available TLS admission token. + /// + /// Cancellation token for the wait. public Task WaitAsync(CancellationToken ct) => _semaphore.WaitAsync(ct); + /// + /// Disposes timer and semaphore resources used by the limiter. + /// public void Dispose() { _refillTimer.Dispose(); _semaphore.Dispose(); } } diff --git a/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs b/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs index c7404aa..420740b 100644 --- a/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs +++ b/src/NATS.Server/WebSocket/WebSocketTlsConfig.cs @@ -7,10 +7,29 @@ namespace NATS.Server.WebSocket; /// public sealed class WebSocketTlsConfig { + /// + /// Gets or sets the certificate file used by the WebSocket TLS listener. + /// public string? CertFile { get; set; } + + /// + /// Gets or sets the private key file paired with . + /// public string? KeyFile { get; set; } + + /// + /// Gets or sets the optional certificate authority bundle used for client certificate verification. + /// public string? CaFile { get; set; } + + /// + /// Gets or sets a value indicating whether WebSocket clients must present a trusted certificate. + /// public bool RequireClientCert { get; set; } + + /// + /// Gets or sets a value indicating whether peer certificate validation is skipped. + /// public bool InsecureSkipVerify { get; set; } /// Returns true when a certificate file has been specified. @@ -41,6 +60,7 @@ public sealed class WebSocketTlsConfig /// Returns true when this configuration differs from . /// Used for hot-reload diff detection. /// + /// Previously applied WebSocket TLS configuration snapshot. public bool HasChangedFrom(WebSocketTlsConfig? other) { if (other is null) @@ -57,6 +77,7 @@ public sealed class WebSocketTlsConfig /// Creates a from the WebSocket-specific TLS fields /// in , or returns null if no WebSocket TLS is configured. /// + /// Resolved server options containing WebSocket TLS fields. public static WebSocketTlsConfig? FromOptions(NatsOptions options) { var ws = options.WebSocket; diff --git a/src/NATS.Server/WebSocket/WsAuthConfig.cs b/src/NATS.Server/WebSocket/WsAuthConfig.cs index fc692b4..5373f06 100644 --- a/src/NATS.Server/WebSocket/WsAuthConfig.cs +++ b/src/NATS.Server/WebSocket/WsAuthConfig.cs @@ -2,6 +2,10 @@ namespace NATS.Server.WebSocket; public static class WsAuthConfig { + /// + /// Computes whether WebSocket auth fields override server-level auth configuration. + /// + /// WebSocket listener options to inspect. public static bool ComputeAuthOverride(WebSocketOptions options) { ArgumentNullException.ThrowIfNull(options); @@ -11,6 +15,10 @@ public static class WsAuthConfig || !string.IsNullOrWhiteSpace(options.NoAuthUser); } + /// + /// Applies computed WebSocket auth override flag onto the options object. + /// + /// WebSocket listener options to mutate. public static void Apply(WebSocketOptions options) { ArgumentNullException.ThrowIfNull(options); diff --git a/src/NATS.Server/WebSocket/WsCompression.cs b/src/NATS.Server/WebSocket/WsCompression.cs index cd389e1..2b0b383 100644 --- a/src/NATS.Server/WebSocket/WsCompression.cs +++ b/src/NATS.Server/WebSocket/WsCompression.cs @@ -57,6 +57,7 @@ public static class WsDeflateNegotiator /// permessage-deflate parameters. Returns null if no valid /// permessage-deflate offer is found. /// + /// Raw Sec-WebSocket-Extensions header value. public static WsDeflateParams? Negotiate(string? extensionHeader) { if (string.IsNullOrEmpty(extensionHeader)) @@ -158,6 +159,7 @@ public static class WsCompression /// would be corrupted by the 4-byte tail strip. Flush() alone writes a sync flush /// ending with 0x00 0x00 0xff 0xff, matching Go's flate.Writer.Flush() behavior. /// + /// Uncompressed WebSocket payload bytes. public static byte[] Compress(ReadOnlySpan data) { var output = new MemoryStream(); @@ -190,6 +192,8 @@ public static class WsCompression /// marker plus a final empty stored block to signal end-of-stream to the /// flate reader. /// + /// Collected compressed frame fragments to decompress. + /// Maximum allowed decompressed payload size in bytes. public static byte[] Decompress(List compressedBuffers, int maxPayload) { if (maxPayload <= 0) diff --git a/src/NATS.Server/WebSocket/WsOriginChecker.cs b/src/NATS.Server/WebSocket/WsOriginChecker.cs index c11d1ce..f8865aa 100644 --- a/src/NATS.Server/WebSocket/WsOriginChecker.cs +++ b/src/NATS.Server/WebSocket/WsOriginChecker.cs @@ -9,6 +9,11 @@ public sealed class WsOriginChecker private readonly bool _sameOrigin; private readonly Dictionary? _allowedOrigins; + /// + /// Creates an origin checker for same-origin and allow-list enforcement. + /// + /// Whether strict same-origin matching is required. + /// Optional explicit origin allow-list entries. public WsOriginChecker(bool sameOrigin, List? allowedOrigins) { _sameOrigin = sameOrigin; @@ -29,6 +34,9 @@ public sealed class WsOriginChecker /// /// Returns null if origin is allowed, or an error message if rejected. /// + /// Origin header value supplied by the client. + /// Host value from the incoming WebSocket request. + /// Whether the request is using TLS (wss). public string? CheckOrigin(string? origin, string requestHost, bool isTls) { if (!_sameOrigin && _allowedOrigins == null) diff --git a/src/NATS.Server/WebSocket/WsReadInfo.cs b/src/NATS.Server/WebSocket/WsReadInfo.cs index f6930c2..d355c53 100644 --- a/src/NATS.Server/WebSocket/WsReadInfo.cs +++ b/src/NATS.Server/WebSocket/WsReadInfo.cs @@ -25,6 +25,10 @@ public class WsReadInfo public int CloseStatus; public string? CloseBody; + /// + /// Initializes frame parsing state for a single WebSocket connection. + /// + /// Whether inbound frames are required to carry a client mask key. public WsReadInfo(bool expectMask) { Remaining = 0; @@ -42,6 +46,10 @@ public class WsReadInfo CloseBody = null; } + /// + /// Stores the active 4-byte frame mask key and resets mask position tracking. + /// + /// Mask key bytes read from the WebSocket frame header. public void SetMaskKey(ReadOnlySpan key) { key[..4].CopyTo(MaskKey); @@ -53,6 +61,7 @@ public class WsReadInfo /// Optimized for 8-byte chunks when buffer is large enough. /// Ported from websocket.go lines 509-536. /// + /// Payload buffer to unmask in place. public void Unmask(Span buf) { int p = MaskKeyPos; @@ -97,6 +106,10 @@ public class WsReadInfo /// Returns list of decoded payload byte arrays. /// Ported from websocket.go lines 208-351. /// + /// Mutable frame-reader state carried across fragmented frames. + /// Network stream supplying encoded WebSocket bytes. + /// Number of bytes expected to be available for this read pass. + /// Maximum allowed payload size before rejecting oversized frames. public static List ReadFrames(WsReadInfo r, Stream stream, int available, int maxPayload) { var bufs = new List(); diff --git a/src/NATS.Server/WebSocket/WsUpgrade.cs b/src/NATS.Server/WebSocket/WsUpgrade.cs index 180832c..55911ff 100644 --- a/src/NATS.Server/WebSocket/WsUpgrade.cs +++ b/src/NATS.Server/WebSocket/WsUpgrade.cs @@ -11,8 +11,16 @@ namespace NATS.Server.WebSocket; public static class WsUpgrade { // Go test hook parity: when true, force rejection of no-masking requests. + /// Test hook that forces no-masking handshake requests to be rejected. public static bool RejectNoMaskingForTest { get; set; } + /// + /// Attempts a WebSocket HTTP upgrade handshake and returns negotiated connection settings. + /// + /// Input stream carrying the HTTP upgrade request. + /// Output stream used to write HTTP upgrade responses. + /// WebSocket server options controlling negotiation and auth behavior. + /// Cancellation token for handshake timeout/cancellation. public static async Task TryUpgradeAsync( Stream inputStream, Stream outputStream, WebSocketOptions options, CancellationToken ct = default) @@ -178,6 +186,7 @@ public static class WsUpgrade /// /// Computes the Sec-WebSocket-Accept value per RFC 6455 Section 4.2.2. /// + /// Client-provided Sec-WebSocket-Key challenge value. public static string ComputeAcceptKey(string clientKey) { var combined = Encoding.ASCII.GetBytes(clientKey + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); @@ -200,6 +209,7 @@ public static class WsUpgrade /// Returns true when the URL uses the ws:// scheme. /// Go reference: isWSURL(). /// + /// URL to evaluate. public static bool IsWsUrl(string? url) { if (!Uri.TryCreate(url, UriKind.Absolute, out var uri)) @@ -212,6 +222,7 @@ public static class WsUpgrade /// Returns true when the URL uses the wss:// scheme. /// Go reference: isWSSURL(). /// + /// URL to evaluate. public static bool IsWssUrl(string? url) { if (!Uri.TryCreate(url, UriKind.Absolute, out var uri)) @@ -224,6 +235,7 @@ public static class WsUpgrade /// Extracts a bearer token from an Authorization header value. /// Supports both "Bearer {token}" and bare "{token}" formats. /// + /// Authorization header value. internal static string? ExtractBearerToken(string? authHeader) { if (string.IsNullOrWhiteSpace(authHeader)) @@ -240,6 +252,7 @@ public static class WsUpgrade /// /// Parses a query string into key-value pairs. /// + /// Raw query string (with or without leading '?'). internal static Dictionary ParseQueryString(string queryString) { var result = new Dictionary(StringComparer.OrdinalIgnoreCase); @@ -286,6 +299,8 @@ public static class WsUpgrade /// Sends a 401 Unauthorized response and returns a failed upgrade result. /// Used by the server when JWT authentication fails during WS upgrade. /// + /// Output stream for the HTTP error response. + /// Human-readable unauthorized reason text. public static async Task FailUnauthorizedAsync(Stream output, string reason) { return await FailAsync(output, 401, reason); diff --git a/tools/DtpSnapshotExtractor/DtpSnapshotExtractor.csproj b/tools/DtpSnapshotExtractor/DtpSnapshotExtractor.csproj new file mode 100644 index 0000000..adb8abe --- /dev/null +++ b/tools/DtpSnapshotExtractor/DtpSnapshotExtractor.csproj @@ -0,0 +1,51 @@ + + + Exe + net10.0 + enable + enable + $(HOME)/Applications/dotTrace.app/Contents/DotFiles + + + + + $(DotTraceAppDir)/JetBrains.Platform.Core.dll + + + $(DotTraceAppDir)/JetBrains.Platform.Metadata.dll + + + $(DotTraceAppDir)/JetBrains.Lifetimes.dll + + + $(DotTraceAppDir)/JetBrains.Common.CallTreeStorage.dll + + + $(DotTraceAppDir)/JetBrains.Common.Util.dll + + + $(DotTraceAppDir)/JetBrains.Common.Util.Metadata.dll + + + $(DotTraceAppDir)/JetBrains.DotTrace.Dal.dll + + + $(DotTraceAppDir)/JetBrains.DotTrace.Dal.Interface.dll + + + $(DotTraceAppDir)/JetBrains.DotTrace.Common.Dal.Interface.dll + + + $(DotTraceAppDir)/JetBrains.DotTrace.Common.Dal.dll + + + $(DotTraceAppDir)/JetBrains.DotTrace.DataStructures.dll + + + $(DotTraceAppDir)/JetBrains.Profiler.Snapshot.dll + + + $(DotTraceAppDir)/JetBrains.Profiler.Snapshot.Interface.dll + + + diff --git a/tools/DtpSnapshotExtractor/Program.cs b/tools/DtpSnapshotExtractor/Program.cs new file mode 100644 index 0000000..b5154d4 --- /dev/null +++ b/tools/DtpSnapshotExtractor/Program.cs @@ -0,0 +1,435 @@ +using System.Text.Json; +using JetBrains.Common.CallTreeStorage.Dfs; +using JetBrains.Common.Util.Metadata; +using JetBrains.DotTrace.Dal.Performance.RemoteTree.CoreLogic; +using JetBrains.DotTrace.Dal.Performance.SnapshotComponents.BothSides; +using JetBrains.DotTrace.Dal.Performance.SnapshotComponents.Remote; +using JetBrains.DotTrace.Dal.Performance.SnapshotStorage; +using JetBrains.DotTrace.Dal.Timeline.SnapshotComponents.Remote; +using JetBrains.DotTrace.DalInterface.Performance.CallTree; +using JetBrains.DotTrace.DalInterface.Performance.Fuids; +using JetBrains.DotTrace.DataStructures.CallTree; +using JetBrains.DotTrace.DataStructures.Payloads; +using JetBrains.Lifetimes; +using JetBrains.Metadata.Access; +using JetBrains.Profiler.Snapshot.Converters; +using JetBrains.Profiler.Snapshot.Interface.Section; +using JetBrains.Profiler.Snapshot.Interface.Section.Metadata; +using JetBrains.Profiler.Snapshot.Interface.Section.Metadata.Helpers; +using JetBrains.Profiler.Snapshot.Section.Metadata; +using JetBrains.Util; +using JetBrains.Util.Logging; + +return await ProgramMain(args); + +static async Task ProgramMain(string[] args) +{ + try + { + if (args.Length == 0) + { + Console.Error.WriteLine("Usage: DtpSnapshotExtractor "); + return 2; + } + + var snapshotPath = Path.GetFullPath(args[0]); + if (!File.Exists(snapshotPath)) + { + Console.Error.WriteLine($"Snapshot not found: {snapshotPath}"); + return 2; + } + + var dotTraceAppDir = AppContext.GetData("APP_CONTEXT_DEPS_FILES") is not null + ? Environment.GetEnvironmentVariable("DOTTRACE_APP_DIR") + : Environment.GetEnvironmentVariable("DOTTRACE_APP_DIR"); + RegisterAssemblyResolver(dotTraceAppDir); + + using var lifetimeDef = Lifetime.Define(); + var lifetime = lifetimeDef.Lifetime; + var logger = Logger.GetLogger("DtpSnapshotExtractor"); + var masks = new SnapshotMasksComponent(); + var snapshotFile = FileSystemPath.Parse(snapshotPath); + var container = new SnapshotStorageContainer(lifetime, logger, masks, snapshotFile); + var callTreeSections = new CallTreeSections(container, masks); + var headerSections = new HeaderSections(container); + var headerIndexSections = new HeaderIndexSections(container, masks); + var headerCombinedSections = new HeaderCombinedSections(headerIndexSections, headerSections, masks); + var singles = new HeaderIndexOptSections(container, masks); + var accessor = new CallTreeAndIndexesSnapshotAccessor(callTreeSections, headerCombinedSections, singles); + var dfsReaders = new DotTraceDfsReaders(accessor); + var totalPayloadReader = new NodePayloadBatchReaderTotal(accessor); + var ownPayloadReader = new NodePayloadBatchReaderOwn(accessor); + + var metadataSection = (MetadataSection)new MetadataSectionContainer(container).Get(lifetime); + var fuidConverter = new FuidToMetadataSectionContainer(container).Get(); + metadataSection.SetFuidConverter(fuidConverter); + var assemblyProvider = metadataSection.GetMetadataAssemblyProvider(lifetime, loadReferencedAssemblies: false, guardMultiThreading: true); + var resolver = new SignatureResolver(masks, fuidConverter, assemblyProvider); + + var headers = callTreeSections.AllHeaders().ToArray(); + var totalNodeCount = headers.Sum(header => + checked((int)((header.HeaderFull.SectionSize - header.HeaderFull.SectionHeaderSize) / header.HeaderFull.RecordSize()))); + + var nodes = new DfsNode[totalNodeCount]; + var totals = new DotTracePayload[totalNodeCount]; + var owns = new DotTracePayload[totalNodeCount]; + + var readNodes = dfsReaders.GetNodesReaders(lifetime).ReadForwardOffsetsAscending(accessor.MinOffset, totalNodeCount, nodes, 0); + var readTotals = totalPayloadReader.ReadForwardOffsetsAscending(accessor.MinOffset, totalNodeCount, totals, 0); + var readOwns = ownPayloadReader.ReadForwardOffsetsAscending(accessor.MinOffset, totalNodeCount, owns, 0); + + if (readNodes != totalNodeCount || readTotals != totalNodeCount || readOwns != totalNodeCount) + throw new InvalidOperationException($"Snapshot read mismatch. nodes={readNodes}, totals={readTotals}, owns={readOwns}, expected={totalNodeCount}."); + + var nodeMap = new Dictionary(totalNodeCount); + foreach (var index in Enumerable.Range(0, totalNodeCount)) + { + var node = nodes[index]; + var signature = resolver.Resolve(node.Key); + nodeMap[node.Offset] = new MutableNode + { + Id = node.Offset.ToString(), + Name = signature.Name, + Kind = signature.Kind, + InclusiveTime = GetTotalTime(totals[index]), + ExclusiveTime = GetTotalTime(owns[index]), + CallCount = GetCallCount(totals[index]), + Children = [] + }; + } + + foreach (var index in Enumerable.Range(0, totalNodeCount)) + { + var node = nodes[index]; + if (!node.ParentOffset.IsValid) + continue; + + if (nodeMap.TryGetValue(node.ParentOffset, out var parent)) + parent.Children.Add(nodeMap[node.Offset]); + } + + var threadNodes = new List(headers.Length); + foreach (var header in headers) + { + if (!nodeMap.TryGetValue(header.Root, out var rootNode)) + continue; + + var threadName = string.IsNullOrWhiteSpace(header.ThreadName) + ? (string.IsNullOrWhiteSpace(header.GroupName) ? $"Thread {header.HeaderFull.GroupId}" : header.GroupName) + : header.ThreadName; + + threadNodes.Add(new SerializableNode + { + Id = $"thread:{header.HeaderFull.GroupId}:{rootNode.Id}", + Name = threadName, + Kind = "thread", + ThreadName = threadName, + InclusiveTime = rootNode.InclusiveTime, + ExclusiveTime = 0, + CallCount = rootNode.CallCount, + Children = [CloneTree(header.Root, nodeMap, [])] + }); + } + + var syntheticRoot = new SerializableNode + { + Id = "root", + Name = "", + Kind = "root", + ThreadName = null, + InclusiveTime = threadNodes.Sum(node => node.InclusiveTime), + ExclusiveTime = 0, + CallCount = threadNodes.Sum(node => node.CallCount), + Children = threadNodes + }; + + var hotspots = BuildHotspots(nodeMap.Values); + var payload = new OutputDocument + { + Snapshot = new SnapshotInfo + { + Path = snapshotPath, + PayloadType = "time", + ThreadCount = threadNodes.Count, + NodeCount = nodeMap.Count + }, + ThreadRoots = threadNodes.Select(node => new ThreadRootInfo + { + Id = node.Id, + Name = node.Name, + InclusiveTime = node.InclusiveTime + }).ToList(), + Hotspots = hotspots, + CallTree = syntheticRoot + }; + + await JsonSerializer.SerializeAsync(Console.OpenStandardOutput(), payload, CreateJsonOptions()); + await Console.Out.WriteLineAsync(); + return 0; + } + catch (Exception exception) + { + Console.Error.WriteLine(exception); + return 1; + } +} + +static JsonSerializerOptions CreateJsonOptions() => new() +{ + MaxDepth = 4096, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + WriteIndented = true +}; + +static void RegisterAssemblyResolver(string? dotTraceAppDir) +{ + var probeDir = string.IsNullOrWhiteSpace(dotTraceAppDir) + ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "Applications", "dotTrace.app", "Contents", "DotFiles") + : dotTraceAppDir; + + AppDomain.CurrentDomain.AssemblyResolve += (_, eventArgs) => + { + var assemblyName = new System.Reflection.AssemblyName(eventArgs.Name).Name; + if (string.IsNullOrWhiteSpace(assemblyName)) + return null; + + var candidatePath = Path.Combine(probeDir, $"{assemblyName}.dll"); + return File.Exists(candidatePath) ? System.Reflection.Assembly.LoadFrom(candidatePath) : null; + }; +} + +static long GetTotalTime(DotTracePayload payload) => payload.PlusTime - payload.MinusTime; + +static long GetCallCount(DotTracePayload payload) => payload.PlusCallCount - payload.MinusCallCount; + +static HotspotLists BuildHotspots(IEnumerable nodes) +{ + var candidates = nodes + .Where(node => node.Kind == "method") + .Select(node => new HotspotEntry + { + Id = node.Id, + Name = node.Name, + Kind = node.Kind, + InclusiveTime = node.InclusiveTime, + ExclusiveTime = node.ExclusiveTime, + CallCount = node.CallCount + }) + .ToArray(); + + return new HotspotLists + { + Inclusive = candidates + .OrderByDescending(node => node.InclusiveTime) + .ThenBy(node => node.Name, StringComparer.Ordinal) + .Take(50) + .ToList(), + Exclusive = candidates + .OrderByDescending(node => node.ExclusiveTime) + .ThenBy(node => node.Name, StringComparer.Ordinal) + .Take(50) + .ToList() + }; +} + +static SerializableNode CloneTree( + CallTreeSectionOffset offset, + IReadOnlyDictionary nodeMap, + HashSet ancestry) +{ + var source = nodeMap[offset]; + var nextAncestry = new HashSet(ancestry) { offset }; + var children = new List(source.Children.Count); + + foreach (var child in source.Children) + { + var childOffset = ParseOffset(child.Id); + if (nextAncestry.Contains(childOffset)) + continue; + + children.Add(CloneTree(childOffset, nodeMap, nextAncestry)); + } + + return new SerializableNode + { + Id = source.Id, + Name = source.Name, + Kind = source.Kind, + ThreadName = null, + InclusiveTime = source.InclusiveTime, + ExclusiveTime = source.ExclusiveTime, + CallCount = source.CallCount, + Children = children + }; +} + +static CallTreeSectionOffset ParseOffset(string value) +{ + var parts = value.Split('/'); + return new CallTreeSectionOffset(Convert.ToInt64(parts[0], 16), int.Parse(parts[1])); +} + +sealed class SignatureResolver( + SnapshotMasksComponent masks, + FuidToMetadataIdConverter fuidConverter, + IMetadataSectionAssemblyProvider assemblyProvider) +{ + private readonly Dictionary _cache = []; + + public SignatureResult Resolve(FunctionUID fuid) + { + if (_cache.TryGetValue(fuid, out var cached)) + return cached; + + var result = ResolveCore(fuid); + _cache[fuid] = result; + return result; + } + + private SignatureResult ResolveCore(FunctionUID fuid) + { + var fid = fuid.ToDotTraceFid(masks); + if (fid == KnownFunctionId.RootId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.NativeCallId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.ThreadStoppedByUnknownReasonCallId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.GcCallId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.AppDomainShutdownCallId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.CodePitchingCallId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.UnmanagedStackFrameCallId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.UnsafeStackFrameId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.ContinuationsId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.AwaitsId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.TaskScheduledId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.TaskExecutionId) + return new SignatureResult("", "special"); + if (fid == KnownFunctionId.TaskRecursionId) + return new SignatureResult("", "special"); + if (!KnownFunctionId.IsProcessable(fid)) + return new SignatureResult($"[special:0x{(uint)fid:X8}]", "special"); + + try + { + var metadataId = fuidConverter.Convert(fid); + if (metadataId.IsSynthetic) + return new SignatureResult($"[synthetic:{metadataId}]", "special"); + + var function = assemblyProvider.GetFunctionItemsLight(metadataId); + var className = function.ClassToken != MetadataToken.Nil + ? assemblyProvider.GetClassItems(MetadataId.Create(metadataId.MetadataIndex, function.ClassToken)).FullName + : null; + var qualifiedMethod = string.IsNullOrWhiteSpace(className) + ? function.FunctionName + : $"{className}.{function.FunctionName}"; + var methodName = string.IsNullOrEmpty(function.GenericParameters) + ? qualifiedMethod + : $"{qualifiedMethod}<{function.GenericParameters}>"; + return new SignatureResult(methodName, "method"); + } + catch + { + return new SignatureResult($"[unresolved:0x{(uint)fid:X8}]", "special"); + } + } +} + +readonly record struct SignatureResult(string Name, string Kind); + +sealed class OutputDocument +{ + public required SnapshotInfo Snapshot { get; init; } + + public required List ThreadRoots { get; init; } + + public required HotspotLists Hotspots { get; init; } + + public required SerializableNode CallTree { get; init; } +} + +sealed class SnapshotInfo +{ + public required string Path { get; init; } + + public required string PayloadType { get; init; } + + public required int ThreadCount { get; init; } + + public required int NodeCount { get; init; } +} + +sealed class ThreadRootInfo +{ + public required string Id { get; init; } + + public required string Name { get; init; } + + public required long InclusiveTime { get; init; } +} + +sealed class HotspotLists +{ + public required List Inclusive { get; init; } + + public required List Exclusive { get; init; } +} + +sealed class HotspotEntry +{ + public required string Id { get; init; } + + public required string Name { get; init; } + + public required string Kind { get; init; } + + public required long InclusiveTime { get; init; } + + public required long ExclusiveTime { get; init; } + + public required long CallCount { get; init; } +} + +class MutableNode +{ + public required string Id { get; init; } + + public required string Name { get; init; } + + public required string Kind { get; init; } + + public required long InclusiveTime { get; init; } + + public required long ExclusiveTime { get; init; } + + public required long CallCount { get; init; } + + public required List Children { get; init; } +} + +sealed class SerializableNode +{ + public required string Id { get; init; } + + public required string Name { get; init; } + + public required string Kind { get; init; } + + public string? ThreadName { get; init; } + + public required long InclusiveTime { get; init; } + + public required long ExclusiveTime { get; init; } + + public required long CallCount { get; init; } + + public required List Children { get; init; } +} diff --git a/tools/dtp_parse.py b/tools/dtp_parse.py new file mode 100644 index 0000000..51889ed --- /dev/null +++ b/tools/dtp_parse.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 + +import argparse +import json +import os +import subprocess +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] +HELPER_PROJECT = ROOT / "tools" / "DtpSnapshotExtractor" / "DtpSnapshotExtractor.csproj" +HELPER_DLL = ROOT / "tools" / "DtpSnapshotExtractor" / "bin" / "Debug" / "net10.0" / "DtpSnapshotExtractor.dll" +DEFAULT_DOTTRACE_DIR = Path.home() / "Applications" / "dotTrace.app" / "Contents" / "DotFiles" + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Parse a raw dotTrace .dtp snapshot family into JSON call-tree data." + ) + parser.add_argument("snapshot", help="Path to the .dtp snapshot index file.") + parser.add_argument("--out", help="Write JSON to this file.") + parser.add_argument("--stdout", action="store_true", help="Write JSON to stdout.") + return parser.parse_args() + + +def find_dottrace_dir() -> Path: + value = os.environ.get("DOTTRACE_APP_DIR") + if value: + candidate = Path(value).expanduser() + if candidate.is_dir(): + return candidate + if DEFAULT_DOTTRACE_DIR.is_dir(): + return DEFAULT_DOTTRACE_DIR + raise FileNotFoundError( + f"dotTrace assemblies not found. Set DOTTRACE_APP_DIR or install dotTrace under {DEFAULT_DOTTRACE_DIR}." + ) + + +def build_helper(dottrace_dir: Path) -> None: + command = [ + "dotnet", + "build", + str(HELPER_PROJECT), + "-nologo", + "-clp:ErrorsOnly", + f"-p:DotTraceAppDir={dottrace_dir}", + ] + result = subprocess.run(command, cwd=ROOT, capture_output=True, text=True, check=False) + if result.returncode != 0: + raise RuntimeError(result.stderr.strip() or result.stdout.strip() or "dotnet build failed") + + +def run_helper(snapshot: Path, dottrace_dir: Path) -> dict: + command = ["dotnet", str(HELPER_DLL), str(snapshot)] + env = os.environ.copy() + env["DOTTRACE_APP_DIR"] = str(dottrace_dir) + result = subprocess.run(command, cwd=ROOT, capture_output=True, text=True, check=False, env=env) + if result.returncode != 0: + raise RuntimeError(result.stderr.strip() or result.stdout.strip() or "extractor failed") + return json.loads(result.stdout) + + +def main() -> int: + args = parse_args() + snapshot = Path(args.snapshot).expanduser().resolve() + if not snapshot.is_file(): + print(f"Snapshot not found: {snapshot}", file=sys.stderr) + return 2 + + if not args.stdout and not args.out: + args.stdout = True + + try: + dottrace_dir = find_dottrace_dir() + build_helper(dottrace_dir) + payload = run_helper(snapshot, dottrace_dir) + except Exception as exc: # noqa: BLE001 + print(str(exc), file=sys.stderr) + return 1 + + text = json.dumps(payload, indent=2) + if args.out: + out_path = Path(args.out).expanduser().resolve() + out_path.write_text(text + "\n", encoding="utf-8") + if args.stdout: + sys.stdout.write(text + "\n") + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/tests/__pycache__/test_dtp_parser.cpython-314.pyc b/tools/tests/__pycache__/test_dtp_parser.cpython-314.pyc new file mode 100644 index 0000000..5e1ced6 Binary files /dev/null and b/tools/tests/__pycache__/test_dtp_parser.cpython-314.pyc differ diff --git a/tools/tests/test_dtp_parser.py b/tools/tests/test_dtp_parser.py new file mode 100644 index 0000000..aac0af8 --- /dev/null +++ b/tools/tests/test_dtp_parser.py @@ -0,0 +1,41 @@ +import json +import subprocess +import unittest +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[2] +SNAPSHOT = ROOT / "snapshots" / "js-ordered-consume.dtp" +SCRIPT = ROOT / "tools" / "dtp_parse.py" + + +def walk(node): + yield node + for child in node.get("children", []): + yield from walk(child) + + +class DtpParserTests(unittest.TestCase): + def test_emits_machine_readable_call_tree(self): + result = subprocess.run( + ["python3", str(SCRIPT), str(SNAPSHOT), "--stdout"], + cwd=ROOT, + capture_output=True, + text=True, + check=False, + ) + + self.assertEqual(result.returncode, 0, msg=result.stderr) + payload = json.loads(result.stdout) + + self.assertIn("callTree", payload) + self.assertIn("hotspots", payload) + self.assertTrue(payload["callTree"]["children"]) + self.assertTrue(payload["hotspots"]["inclusive"]) + + node_names = [node["name"] for node in walk(payload["callTree"])] + self.assertTrue(any(not name.startswith("[special:") for name in node_names)) + + +if __name__ == "__main__": + unittest.main()