This commit is contained in:
HueByte
2026-07-17 20:24:25 +00:00
parent a6bf50c567
commit ffac9f208a
23 changed files with 3937 additions and 46 deletions
@@ -0,0 +1,757 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ServerStatsReport | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ServerStatsReport | EchoHub Documentation ">
<meta name="description" content="A snapshot of server activity over one reporting window, produced periodically by the stats-report background job. Each report is logged as pretty-printed JSON and persisted for historical trend analysis. The window is &amp;quot;since the previous report&amp;quot; (or since startup for the first report of a run).">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Core_Models_ServerStatsReport.md&amp;value=---%0Auid%3A%20EchoHub.Core.Models.ServerStatsReport%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Core.Models.ServerStatsReport">
<h1 id="EchoHub_Core_Models_ServerStatsReport" data-uid="EchoHub.Core.Models.ServerStatsReport" class="text-break">
Class ServerStatsReport <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Core.html">Core</a>.<a class="xref" href="EchoHub.Core.Models.html">Models</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Core.dll</dd></dl>
</div>
<div class="markdown summary"><p>A snapshot of server activity over one reporting window, produced periodically by the
stats-report background job. Each report is logged as pretty-printed JSON and persisted
for historical trend analysis. The window is &quot;since the previous report&quot; (or since startup
for the first report of a run).</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public class ServerStatsReport</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ServerStatsReport</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Core_Models_ServerStatsReport__ctor_" data-uid="EchoHub.Core.Models.ServerStatsReport.#ctor*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport__ctor" data-uid="EchoHub.Core.Models.ServerStatsReport.#ctor">
ServerStatsReport()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ServerStatsReport()</code></pre>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Core_Models_ServerStatsReport_ActiveMembers_" data-uid="EchoHub.Core.Models.ServerStatsReport.ActiveMembers*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_ActiveMembers" data-uid="EchoHub.Core.Models.ServerStatsReport.ActiveMembers">
ActiveMembers
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Distinct users who sent at least one message during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int ActiveMembers { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_Bans_" data-uid="EchoHub.Core.Models.ServerStatsReport.Bans*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_Bans" data-uid="EchoHub.Core.Models.ServerStatsReport.Bans">
Bans
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Users banned during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int Bans { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_BytesUploaded_" data-uid="EchoHub.Core.Models.ServerStatsReport.BytesUploaded*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_BytesUploaded" data-uid="EchoHub.Core.Models.ServerStatsReport.BytesUploaded">
BytesUploaded
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Total bytes across all attachments uploaded during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long BytesUploaded { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_Connections_" data-uid="EchoHub.Core.Models.ServerStatsReport.Connections*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_Connections" data-uid="EchoHub.Core.Models.ServerStatsReport.Connections">
Connections
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Session connects during the window (per-connection, across SignalR + IRC).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int Connections { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_Disconnections_" data-uid="EchoHub.Core.Models.ServerStatsReport.Disconnections*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_Disconnections" data-uid="EchoHub.Core.Models.ServerStatsReport.Disconnections">
Disconnections
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Session disconnects during the window (&quot;members left&quot; sessions).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int Disconnections { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_FilesUploaded_" data-uid="EchoHub.Core.Models.ServerStatsReport.FilesUploaded*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_FilesUploaded" data-uid="EchoHub.Core.Models.ServerStatsReport.FilesUploaded">
FilesUploaded
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Attachments (files/images/audio) uploaded during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int FilesUploaded { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_GeneratedAt_" data-uid="EchoHub.Core.Models.ServerStatsReport.GeneratedAt*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_GeneratedAt" data-uid="EchoHub.Core.Models.ServerStatsReport.GeneratedAt">
GeneratedAt
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>When this report was generated (equals <a class="xref" href="EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeriodEnd">PeriodEnd</a>).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DateTimeOffset GeneratedAt { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_Id_" data-uid="EchoHub.Core.Models.ServerStatsReport.Id*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_Id" data-uid="EchoHub.Core.Models.ServerStatsReport.Id">
Id
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public Guid Id { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.guid">Guid</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_Kicks_" data-uid="EchoHub.Core.Models.ServerStatsReport.Kicks*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_Kicks" data-uid="EchoHub.Core.Models.ServerStatsReport.Kicks">
Kicks
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Users kicked during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int Kicks { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_MessagesSent_" data-uid="EchoHub.Core.Models.ServerStatsReport.MessagesSent*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_MessagesSent" data-uid="EchoHub.Core.Models.ServerStatsReport.MessagesSent">
MessagesSent
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Messages sent during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int MessagesSent { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_NewMembers_" data-uid="EchoHub.Core.Models.ServerStatsReport.NewMembers*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_NewMembers" data-uid="EchoHub.Core.Models.ServerStatsReport.NewMembers">
NewMembers
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Accounts registered during the window (&quot;new members joined&quot;).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int NewMembers { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_OnlineNow_" data-uid="EchoHub.Core.Models.ServerStatsReport.OnlineNow*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_OnlineNow" data-uid="EchoHub.Core.Models.ServerStatsReport.OnlineNow">
OnlineNow
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Distinct users online at window end.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int OnlineNow { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_PeakOnline_" data-uid="EchoHub.Core.Models.ServerStatsReport.PeakOnline*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_PeakOnline" data-uid="EchoHub.Core.Models.ServerStatsReport.PeakOnline">
PeakOnline
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Peak distinct users online observed during the window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int PeakOnline { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_PeriodEnd_" data-uid="EchoHub.Core.Models.ServerStatsReport.PeriodEnd*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_PeriodEnd" data-uid="EchoHub.Core.Models.ServerStatsReport.PeriodEnd">
PeriodEnd
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>End of the reporting window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DateTimeOffset PeriodEnd { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_PeriodStart_" data-uid="EchoHub.Core.Models.ServerStatsReport.PeriodStart*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_PeriodStart" data-uid="EchoHub.Core.Models.ServerStatsReport.PeriodStart">
PeriodStart
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Start of the reporting window.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DateTimeOffset PeriodStart { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.datetimeoffset">DateTimeOffset</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_TotalMembers_" data-uid="EchoHub.Core.Models.ServerStatsReport.TotalMembers*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_TotalMembers" data-uid="EchoHub.Core.Models.ServerStatsReport.TotalMembers">
TotalMembers
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Total registered (unique) members at window end.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int TotalMembers { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Core_Models_ServerStatsReport_WindowHours_" data-uid="EchoHub.Core.Models.ServerStatsReport.WindowHours*"></a>
<h3 id="EchoHub_Core_Models_ServerStatsReport_WindowHours" data-uid="EchoHub.Core.Models.ServerStatsReport.WindowHours">
WindowHours
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Length of the reporting window in hours.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double WindowHours { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
+8
View File
@@ -122,6 +122,14 @@ new accounts (REST and IRC alike) require a valid, unexpired, not-fully-used cod
<dt><a class="xref" href="EchoHub.Core.Models.RefreshToken.html">RefreshToken</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.Models.ServerStatsReport.html">ServerStatsReport</a></dt>
<dd><p>A snapshot of server activity over one reporting window, produced periodically by the
stats-report background job. Each report is logged as pretty-printed JSON and persisted
for historical trend analysis. The window is &quot;since the previous report&quot; (or since startup
for the first report of a run).</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Core.Models.User.html">User</a></dt>
<dd></dd>
@@ -0,0 +1,307 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class StatsOptions | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class StatsOptions | EchoHub Documentation ">
<meta name="description" content="Periodic server-stats report settings, bound from the &amp;quot;Stats&amp;quot; config section (env override: Stats__Enabled etc.). When enabled, a background job periodically snapshots server activity, logs it as pretty-printed JSON, and persists it to the database.">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Config_StatsOptions.md&amp;value=---%0Auid%3A%20EchoHub.Server.Config.StatsOptions%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Config.StatsOptions">
<h1 id="EchoHub_Server_Config_StatsOptions" data-uid="EchoHub.Server.Config.StatsOptions" class="text-break">
Class StatsOptions <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/StatsOptions.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Config.html">Config</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"><p>Periodic server-stats report settings, bound from the &quot;Stats&quot; config section (env override:
<code>Stats__Enabled</code> etc.). When enabled, a background job periodically snapshots server
activity, logs it as pretty-printed JSON, and persists it to the database.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class StatsOptions</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">StatsOptions</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Config_StatsOptions__ctor_" data-uid="EchoHub.Server.Config.StatsOptions.#ctor*"></a>
<h3 id="EchoHub_Server_Config_StatsOptions__ctor" data-uid="EchoHub.Server.Config.StatsOptions.#ctor">
StatsOptions()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/StatsOptions.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StatsOptions()</code></pre>
</div>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Server_Config_StatsOptions_Enabled_" data-uid="EchoHub.Server.Config.StatsOptions.Enabled*"></a>
<h3 id="EchoHub_Server_Config_StatsOptions_Enabled" data-uid="EchoHub.Server.Config.StatsOptions.Enabled">
Enabled
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/StatsOptions.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Master switch for the periodic stats report job.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool Enabled { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Config_StatsOptions_IntervalHours_" data-uid="EchoHub.Server.Config.StatsOptions.IntervalHours*"></a>
<h3 id="EchoHub_Server_Config_StatsOptions_IntervalHours" data-uid="EchoHub.Server.Config.StatsOptions.IntervalHours">
IntervalHours
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/StatsOptions.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>How often a report is generated, in hours. Default: every 6 hours.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public double IntervalHours { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Config_StatsOptions_RetentionDays_" data-uid="EchoHub.Server.Config.StatsOptions.RetentionDays*"></a>
<h3 id="EchoHub_Server_Config_StatsOptions_RetentionDays" data-uid="EchoHub.Server.Config.StatsOptions.RetentionDays">
RetentionDays
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/StatsOptions.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>How long persisted reports are kept before being pruned, in days. Set to 0 to keep
reports indefinitely. Default: 90 days.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int RetentionDays { get; set; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Config/StatsOptions.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
+7
View File
@@ -106,6 +106,13 @@ database; the rolling Serilog log files remain the only persistence.</p>
<dt><a class="xref" href="EchoHub.Server.Config.SpamOptions.html">SpamOptions</a></dt>
<dd><p>Anti-spam thresholds, bound from the &quot;Spam&quot; config section. Defaults are lenient enough
that a fast typist never trips them; Mods and above are always exempt.</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Config.StatsOptions.html">StatsOptions</a></dt>
<dd><p>Periodic server-stats report settings, bound from the &quot;Stats&quot; config section (env override:
<code>Stats__Enabled</code> etc.). When enabled, a background job periodically snapshots server
activity, logs it as pretty-printed JSON, and persists it to the database.</p>
</dd>
</dl>
<dl class="jumplist">
@@ -159,8 +159,8 @@ public class ChannelsController : ControllerBase</code></pre>
<a id="EchoHub_Server_Controllers_ChannelsController__ctor_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor*"></a>
<h3 id="EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Server_Config_UploadLimits_" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits)">
ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
<h3 id="EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Server_Config_UploadLimits_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Controllers_ChannelsController__" data-uid="EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Controllers.ChannelsController})">
ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits, ILogger&lt;ChannelsController&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/ChannelsController.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -168,7 +168,7 @@ public class ChannelsController : ControllerBase</code></pre>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ChannelsController(IChannelService channelService, EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService, IMessageEncryptionService encryption, UploadLimits uploadLimits)</code></pre>
<pre><code class="lang-csharp hljs">public ChannelsController(IChannelService channelService, EchoHubDbContext db, FileStorageService fileStorage, ImageToAsciiService asciiService, IHttpClientFactory httpClientFactory, IChatService chatService, IMessageEncryptionService encryption, UploadLimits uploadLimits, ILogger&lt;ChannelsController&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -189,6 +189,8 @@ public class ChannelsController : ControllerBase</code></pre>
<dd></dd>
<dt><code>uploadLimits</code> <a class="xref" href="EchoHub.Server.Config.UploadLimits.html">UploadLimits</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Controllers.ChannelsController.html">ChannelsController</a>&gt;</dt>
<dd></dd>
</dl>
@@ -159,8 +159,8 @@ public class ModerationController : ControllerBase</code></pre>
<a id="EchoHub_Server_Controllers_ModerationController__ctor_" data-uid="EchoHub.Server.Controllers.ModerationController.#ctor*"></a>
<h3 id="EchoHub_Server_Controllers_ModerationController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Core_Contracts_IChatService_EchoHub_Server_Services_PresenceTracker_EchoHub_Server_Services_FileStorageService_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__" data-uid="EchoHub.Server.Controllers.ModerationController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Core.Contracts.IChatService,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.FileStorageService,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster})">
ModerationController(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable&lt;IChatBroadcaster&gt;)
<h3 id="EchoHub_Server_Controllers_ModerationController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Core_Contracts_IChatService_EchoHub_Server_Services_PresenceTracker_EchoHub_Server_Services_FileStorageService_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_Stats_ServerStatsCollector_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Controllers_ModerationController__" data-uid="EchoHub.Server.Controllers.ModerationController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Core.Contracts.IChatService,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.FileStorageService,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.Stats.ServerStatsCollector,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Controllers.ModerationController})">
ModerationController(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable&lt;IChatBroadcaster&gt;, ServerStatsCollector, ILogger&lt;ModerationController&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Controllers/ModerationController.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -168,7 +168,7 @@ public class ModerationController : ControllerBase</code></pre>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ModerationController(EchoHubDbContext db, IChatService chatService, PresenceTracker presenceTracker, FileStorageService fileStorage, IEnumerable&lt;IChatBroadcaster&gt; broadcasters)</code></pre>
<pre><code class="lang-csharp hljs">public ModerationController(EchoHubDbContext db, IChatService chatService, PresenceTracker presenceTracker, FileStorageService fileStorage, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, ServerStatsCollector statsCollector, ILogger&lt;ModerationController&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -183,6 +183,10 @@ public class ModerationController : ControllerBase</code></pre>
<dd></dd>
<dt><code>broadcasters</code> <span class="xref">IEnumerable</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Contracts/IChatBroadcaster.cs">IChatBroadcaster</a>&gt;</dt>
<dd></dd>
<dt><code>statsCollector</code> <a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Controllers.ModerationController.html">ModerationController</a>&gt;</dt>
<dd></dd>
</dl>
@@ -381,6 +381,37 @@ Class EchoHubDbContext <a class="header-action link-secondary" title="View sour
<a id="EchoHub_Server_Data_EchoHubDbContext_ServerStatsReports_" data-uid="EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports*"></a>
<h3 id="EchoHub_Server_Data_EchoHubDbContext_ServerStatsReports" data-uid="EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports">
ServerStatsReports
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/EchoHubDbContext.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public DbSet&lt;ServerStatsReport&gt; ServerStatsReports { get; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><span class="xref">DbSet</span>&lt;<a class="xref" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Core/Models/ServerStatsReport.cs">ServerStatsReport</a>&gt;</dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_EchoHubDbContext_Users_" data-uid="EchoHub.Server.Data.EchoHubDbContext.Users*"></a>
<h3 id="EchoHub_Server_Data_EchoHubDbContext_Users" data-uid="EchoHub.Server.Data.EchoHubDbContext.Users">
@@ -0,0 +1,306 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class AddServerStatsReports | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class AddServerStatsReports | EchoHub Documentation ">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Data_Migrations_AddServerStatsReports.md&amp;value=---%0Auid%3A%20EchoHub.Server.Data.Migrations.AddServerStatsReports%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports">
<h1 id="EchoHub_Server_Data_Migrations_AddServerStatsReports" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports" class="text-break">
Class AddServerStatsReports <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260717200332_AddServerStatsReports.Designer.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Data.html">Data</a>.<a class="xref" href="EchoHub.Server.Data.Migrations.html">Migrations</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"></div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">[DbContext(typeof(EchoHubDbContext))]
[Migration(&quot;20260717200332_AddServerStatsReports&quot;)]
public class AddServerStatsReports : Migration</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">Migration</span></div>
<div><span class="xref">AddServerStatsReports</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Data_Migrations_AddServerStatsReports__ctor_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.#ctor*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddServerStatsReports__ctor" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.#ctor">
AddServerStatsReports()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260717200332_AddServerStatsReports.Designer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public AddServerStatsReports()</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Data_Migrations_AddServerStatsReports_BuildTargetModel_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddServerStatsReports_BuildTargetModel_Microsoft_EntityFrameworkCore_ModelBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)">
BuildTargetModel(ModelBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260717200332_AddServerStatsReports.Designer.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override void BuildTargetModel(ModelBuilder modelBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>modelBuilder</code> <span class="xref">ModelBuilder</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_Migrations_AddServerStatsReports_Down_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.Down*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddServerStatsReports_Down_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
Down(MigrationBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260717200332_AddServerStatsReports.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override void Down(MigrationBuilder migrationBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>migrationBuilder</code> <span class="xref">MigrationBuilder</span></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Data_Migrations_AddServerStatsReports_Up_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.Up*"></a>
<h3 id="EchoHub_Server_Data_Migrations_AddServerStatsReports_Up_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_" data-uid="EchoHub.Server.Data.Migrations.AddServerStatsReports.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)">
Up(MigrationBuilder)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260717200332_AddServerStatsReports.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override void Up(MigrationBuilder migrationBuilder)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>migrationBuilder</code> <span class="xref">MigrationBuilder</span></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Data/Migrations/20260717200332_AddServerStatsReports.Designer.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -138,6 +138,10 @@ Classes
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddModerationRoles.html">AddModerationRoles</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.AddServerStatsReports.html">AddServerStatsReports</a></dt>
<dd></dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Data.Migrations.InitialCreate.html">InitialCreate</a></dt>
<dd></dd>
@@ -160,8 +160,8 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<a id="EchoHub_Server_Services_ChatService__ctor_" data-uid="EchoHub.Server.Services.ChatService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_SpamGuard_EchoHub_Server_Services_ServerLogs_ServerLogsService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__" data-uid="EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.SpamGuard,EchoHub.Server.Services.ServerLogs.ServerLogsService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})">
ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable&lt;IChatBroadcaster&gt;, LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ILogger&lt;ChatService&gt;)
<h3 id="EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_SpamGuard_EchoHub_Server_Services_ServerLogs_ServerLogsService_EchoHub_Server_Services_Stats_ServerStatsCollector_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__" data-uid="EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.SpamGuard,EchoHub.Server.Services.ServerLogs.ServerLogsService,EchoHub.Server.Services.Stats.ServerStatsCollector,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})">
ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable&lt;IChatBroadcaster&gt;, LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ServerStatsCollector, ILogger&lt;ChatService&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/ChatService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
@@ -169,7 +169,7 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, LinkEmbedService embedService, IMessageEncryptionService encryption, IChannelService channelService, FileStorageService fileStorage, SpamGuard spamGuard, ServerLogsService serverLogs, ILogger&lt;ChatService&gt; logger)</code></pre>
<pre><code class="lang-csharp hljs">public ChatService(IServiceScopeFactory scopeFactory, PresenceTracker presenceTracker, IEnumerable&lt;IChatBroadcaster&gt; broadcasters, LinkEmbedService embedService, IMessageEncryptionService encryption, IChannelService channelService, FileStorageService fileStorage, SpamGuard spamGuard, ServerLogsService serverLogs, ServerStatsCollector statsCollector, ILogger&lt;ChatService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
@@ -192,6 +192,8 @@ Class ChatService <a class="header-action link-secondary" title="View source" h
<dd></dd>
<dt><code>serverLogs</code> <a class="xref" href="EchoHub.Server.Services.ServerLogs.ServerLogsService.html">ServerLogsService</a></dt>
<dd></dd>
<dt><code>statsCollector</code> <a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.ChatService.html">ChatService</a>&gt;</dt>
<dd></dd>
</dl>
@@ -0,0 +1,401 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ServerStatsCollector | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ServerStatsCollector | EchoHub Documentation ">
<meta name="description" content="Thread-safe, in-memory accumulator for server-activity counters that have no natural database timestamp to query after the fact — session connects/disconnects, moderation actions, and peak concurrency. The periodic stats-report job snapshots and resets these once per reporting window. Registered as a singleton; every increment is lock-free so it is safe to call from hot paths (connect/disconnect).">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Services_Stats_ServerStatsCollector.md&amp;value=---%0Auid%3A%20EchoHub.Server.Services.Stats.ServerStatsCollector%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector">
<h1 id="EchoHub_Server_Services_Stats_ServerStatsCollector" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector" class="text-break">
Class ServerStatsCollector <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Services.html">Services</a>.<a class="xref" href="EchoHub.Server.Services.Stats.html">Stats</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"><p>Thread-safe, in-memory accumulator for server-activity counters that have no natural
database timestamp to query after the fact — session connects/disconnects, moderation
actions, and peak concurrency. The periodic stats-report job snapshots and resets these
once per reporting window. Registered as a singleton; every increment is lock-free so it
is safe to call from hot paths (connect/disconnect).</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class ServerStatsCollector</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">ServerStatsCollector</span></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector__ctor_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.#ctor*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector__ctor" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.#ctor">
ServerStatsCollector()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ServerStatsCollector()</code></pre>
</div>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordBan_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordBan" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan">
RecordBan()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Record a ban action.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RecordBan()</code></pre>
</div>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordConnection_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordConnection_System_Int32_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection(System.Int32)">
RecordConnection(int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Record a session coming online, updating the running peak.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RecordConnection(int onlineNow)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>onlineNow</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordDisconnection_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordDisconnection_System_Int32_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection(System.Int32)">
RecordDisconnection(int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Record a session going offline, updating the running peak.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RecordDisconnection(int onlineNow)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>onlineNow</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordKick_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordKick" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick">
RecordKick()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Record a kick action.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RecordKick()</code></pre>
</div>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordOnline_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector_RecordOnline_System_Int32_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline(System.Int32)">
RecordOnline(int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Update the running maximum of concurrent online users (lock-free).</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void RecordOnline(int onlineNow)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>onlineNow</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_ServerStatsCollector_SnapshotAndReset_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsCollector_SnapshotAndReset_System_Int32_" data-uid="EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset(System.Int32)">
SnapshotAndReset(int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Atomically read all counters and reset them for the next reporting window. The peak is
reset to <code class="paramref">onlineNow</code> so the next window's peak starts from the current
concurrency rather than zero.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StatsCounters SnapshotAndReset(int onlineNow)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>onlineNow</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,267 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Class ServerStatsReportService | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Class ServerStatsReportService | EchoHub Documentation ">
<meta name="description" content="Background job that periodically snapshots server activity over a window, logs it as pretty-printed JSON (which also surfaces in the live server-logs room), and persists it to the database for historical trends. Interval and retention are configurable via the &amp;quot;Stats&amp;quot; section; the default cadence is every 6 hours.">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Services_Stats_ServerStatsReportService.md&amp;value=---%0Auid%3A%20EchoHub.Server.Services.Stats.ServerStatsReportService%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Services.Stats.ServerStatsReportService">
<h1 id="EchoHub_Server_Services_Stats_ServerStatsReportService" data-uid="EchoHub.Server.Services.Stats.ServerStatsReportService" class="text-break">
Class ServerStatsReportService <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsReportService.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Services.html">Services</a>.<a class="xref" href="EchoHub.Server.Services.Stats.html">Stats</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"><p>Background job that periodically snapshots server activity over a window, logs it as
pretty-printed JSON (which also surfaces in the live server-logs room), and persists it to
the database for historical trends. Interval and retention are configurable via the &quot;Stats&quot;
section; the default cadence is every 6 hours.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public sealed class ServerStatsReportService : BackgroundService, IDisposable</code></pre>
</div>
<dl class="typelist inheritance">
<dt>Inheritance</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
<div><span class="xref">BackgroundService</span></div>
<div><span class="xref">ServerStatsReportService</span></div>
</dd>
</dl>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.idisposable">IDisposable</a></div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.tostring">object.ToString()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object)">object.Equals(object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gethashcode">object.GetHashCode()</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Services_Stats_ServerStatsReportService__ctor_" data-uid="EchoHub.Server.Services.Stats.ServerStatsReportService.#ctor*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsReportService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_EchoHub_Server_Services_Stats_ServerStatsCollector_EchoHub_Server_Config_StatsOptions_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_Stats_ServerStatsReportService__" data-uid="EchoHub.Server.Services.Stats.ServerStatsReportService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.Stats.ServerStatsCollector,EchoHub.Server.Config.StatsOptions,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.Stats.ServerStatsReportService})">
ServerStatsReportService(IServiceScopeFactory, PresenceTracker, ServerStatsCollector, StatsOptions, ILogger&lt;ServerStatsReportService&gt;)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsReportService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public ServerStatsReportService(IServiceScopeFactory scopeFactory, PresenceTracker presence, ServerStatsCollector collector, StatsOptions options, ILogger&lt;ServerStatsReportService&gt; logger)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>scopeFactory</code> <span class="xref">IServiceScopeFactory</span></dt>
<dd></dd>
<dt><code>presence</code> <a class="xref" href="EchoHub.Server.Services.PresenceTracker.html">PresenceTracker</a></dt>
<dd></dd>
<dt><code>collector</code> <a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a></dt>
<dd></dd>
<dt><code>options</code> <a class="xref" href="EchoHub.Server.Config.StatsOptions.html">StatsOptions</a></dt>
<dd></dd>
<dt><code>logger</code> <span class="xref">ILogger</span>&lt;<a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsReportService.html">ServerStatsReportService</a>&gt;</dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Services_Stats_ServerStatsReportService_ExecuteAsync_" data-uid="EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync*"></a>
<h3 id="EchoHub_Server_Services_Stats_ServerStatsReportService_ExecuteAsync_System_Threading_CancellationToken_" data-uid="EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync(System.Threading.CancellationToken)">
ExecuteAsync(CancellationToken)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsReportService.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">protected override Task ExecuteAsync(CancellationToken stoppingToken)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>stoppingToken</code> <span class="xref">CancellationToken</span></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><span class="xref">Task</span></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsReportService.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,624 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Struct StatsCounters | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Struct StatsCounters | EchoHub Documentation ">
<meta name="description" content="Immutable snapshot of the counters held by .">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/new/master/apiSpec/new?filename=EchoHub_Server_Services_Stats_StatsCounters.md&amp;value=---%0Auid%3A%20EchoHub.Server.Services.Stats.StatsCounters%0Asummary%3A%20&#39;*You%20can%20override%20summary%20for%20the%20API%20here%20using%20*MARKDOWN*%20syntax&#39;%0A---%0A%0A*Please%20type%20below%20more%20information%20about%20this%20API%3A*%0A%0A">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Services.Stats.StatsCounters">
<h1 id="EchoHub_Server_Services_Stats_StatsCounters" data-uid="EchoHub.Server.Services.Stats.StatsCounters" class="text-break">
Struct StatsCounters <a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h1>
<div class="facts text-secondary">
<dl><dt>Namespace</dt><dd><a class="xref" href="EchoHub.html">EchoHub</a>.<a class="xref" href="EchoHub.Server.html">Server</a>.<a class="xref" href="EchoHub.Server.Services.html">Services</a>.<a class="xref" href="EchoHub.Server.Services.Stats.html">Stats</a></dd></dl>
<dl><dt>Assembly</dt><dd>EchoHub.Server.dll</dd></dl>
</div>
<div class="markdown summary"><p>Immutable snapshot of the counters held by <a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a>.</p>
</div>
<div class="markdown conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public readonly struct StatsCounters : IEquatable&lt;StatsCounters&gt;</code></pre>
</div>
<dl class="typelist implements">
<dt>Implements</dt>
<dd>
<div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable</a>&lt;<a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a>&gt;</div>
</dd>
</dl>
<dl class="typelist inheritedMembers">
<dt>Inherited Members</dt>
<dd>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
</div>
<div>
<a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
</div>
</dd></dl>
<h2 class="section" id="constructors">Constructors
</h2>
<a id="EchoHub_Server_Services_Stats_StatsCounters__ctor_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.#ctor*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters__ctor_System_Int64_System_Int64_System_Int64_System_Int64_System_Int32_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.#ctor(System.Int64,System.Int64,System.Int64,System.Int64,System.Int32)">
StatsCounters(long, long, long, long, int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"><p>Immutable snapshot of the counters held by <a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a>.</p>
</div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public StatsCounters(long Connections, long Disconnections, long Kicks, long Bans, int PeakOnline)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Connections</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>Disconnections</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>Kicks</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>Bans</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>PeakOnline</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="properties">Properties
</h2>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Bans_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Bans*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Bans" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Bans">
Bans
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long Bans { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Connections_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Connections*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Connections" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Connections">
Connections
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long Connections { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Disconnections_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Disconnections*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Disconnections" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Disconnections">
Disconnections
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long Disconnections { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Kicks_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Kicks*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Kicks" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Kicks">
Kicks
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public long Kicks { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_PeakOnline_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.PeakOnline*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_PeakOnline" data-uid="EchoHub.Server.Services.Stats.StatsCounters.PeakOnline">
PeakOnline
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public int PeakOnline { get; init; }</code></pre>
</div>
<h4 class="section">Property Value</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="methods">Methods
</h2>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Deconstruct_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Deconstruct*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Deconstruct_System_Int64__System_Int64__System_Int64__System_Int64__System_Int32__" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Deconstruct(System.Int64@,System.Int64@,System.Int64@,System.Int64@,System.Int32@)">
Deconstruct(out long, out long, out long, out long, out int)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public void Deconstruct(out long Connections, out long Disconnections, out long Kicks, out long Bans, out int PeakOnline)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>Connections</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>Disconnections</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>Kicks</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>Bans</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int64">long</a></dt>
<dd></dd>
<dt><code>PeakOnline</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Equals_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Equals*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Equals_EchoHub_Server_Services_Stats_StatsCounters_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Equals(EchoHub.Server.Services.Stats.StatsCounters)">
Equals(StatsCounters)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public bool Equals(StatsCounters other)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>other</code> <a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_Equals_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Equals*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_Equals_System_Object_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.Equals(System.Object)">
Equals(object)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override bool Equals(object obj)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>obj</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_GetHashCode_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.GetHashCode*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_GetHashCode" data-uid="EchoHub.Server.Services.Stats.StatsCounters.GetHashCode">
GetHashCode()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override int GetHashCode()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_ToString_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.ToString*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_ToString" data-uid="EchoHub.Server.Services.Stats.StatsCounters.ToString">
ToString()
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
</div>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
<dd></dd>
</dl>
<h2 class="section" id="operators">Operators
</h2>
<a id="EchoHub_Server_Services_Stats_StatsCounters_op_Equality_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.op_Equality*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_op_Equality_EchoHub_Server_Services_Stats_StatsCounters_EchoHub_Server_Services_Stats_StatsCounters_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.op_Equality(EchoHub.Server.Services.Stats.StatsCounters,EchoHub.Server.Services.Stats.StatsCounters)">
operator ==(StatsCounters, StatsCounters)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool operator ==(StatsCounters left, StatsCounters right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
<a id="EchoHub_Server_Services_Stats_StatsCounters_op_Inequality_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.op_Inequality*"></a>
<h3 id="EchoHub_Server_Services_Stats_StatsCounters_op_Inequality_EchoHub_Server_Services_Stats_StatsCounters_EchoHub_Server_Services_Stats_StatsCounters_" data-uid="EchoHub.Server.Services.Stats.StatsCounters.op_Inequality(EchoHub.Server.Services.Stats.StatsCounters,EchoHub.Server.Services.Stats.StatsCounters)">
operator !=(StatsCounters, StatsCounters)
<a class="header-action link-secondary" title="View source" href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs"><i class="bi bi-code-slash"></i></a>
</h3>
<div class="markdown level1 summary"></div>
<div class="markdown level1 conceptual"></div>
<div class="codewrapper">
<pre><code class="lang-csharp hljs">public static bool operator !=(StatsCounters left, StatsCounters right)</code></pre>
</div>
<h4 class="section">Parameters</h4>
<dl class="parameters">
<dt><code>left</code> <a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd></dd>
<dt><code>right</code> <a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd></dd>
</dl>
<h4 class="section">Returns</h4>
<dl class="parameters">
<dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
<dd></dd>
</dl>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/src/EchoHub.Server/Services/Stats/ServerStatsCollector.cs" class="edit-link">Edit this page</a>
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
@@ -0,0 +1,147 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Namespace EchoHub.Server.Services.Stats | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="Namespace EchoHub.Server.Services.Stats | EchoHub Documentation ">
<link rel="icon" href="../../images/hue_icon.svg">
<link rel="stylesheet" href="../../public/docfx.min.css">
<link rel="stylesheet" href="../../public/main.css">
<meta name="docfx:navrel" content="../../toc.html">
<meta name="docfx:tocrel" content="../toc.html">
<meta name="docfx:rel" content="../../">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../../index.html">
<img id="logo" class="svg" src="../../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="EchoHub.Server.Services.Stats">
<h1 id="EchoHub_Server_Services_Stats" data-uid="EchoHub.Server.Services.Stats" class="text-break">Namespace EchoHub.Server.Services.Stats</h1>
<div class="markdown level0 summary"></div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">
Classes
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a></dt>
<dd><p>Thread-safe, in-memory accumulator for server-activity counters that have no natural
database timestamp to query after the fact — session connects/disconnects, moderation
actions, and peak concurrency. The periodic stats-report job snapshots and resets these
once per reporting window. Registered as a singleton; every increment is lock-free so it
is safe to call from hot paths (connect/disconnect).</p>
</dd>
</dl>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsReportService.html">ServerStatsReportService</a></dt>
<dd><p>Background job that periodically snapshots server activity over a window, logs it as
pretty-printed JSON (which also surfaces in the live server-logs room), and persists it to
the database for historical trends. Interval and retention are configurable via the &quot;Stats&quot;
section; the default cadence is every 6 hours.</p>
</dd>
</dl>
<h3 id="structs">
Structs
</h3>
<dl class="jumplist">
<dt><a class="xref" href="EchoHub.Server.Services.Stats.StatsCounters.html">StatsCounters</a></dt>
<dd><p>Immutable snapshot of the counters held by <a class="xref" href="EchoHub.Server.Services.Stats.ServerStatsCollector.html">ServerStatsCollector</a>.</p>
</dd>
</dl>
</article>
<div class="contribution d-print-none">
</div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
+25
View File
@@ -517,6 +517,9 @@
<li>
<a href="core/EchoHub.Core.Models.ServerRole.html" name="" title="ServerRole">ServerRole</a>
</li>
<li>
<a href="core/EchoHub.Core.Models.ServerStatsReport.html" name="" title="ServerStatsReport">ServerStatsReport</a>
</li>
<li>
<a href="core/EchoHub.Core.Models.User.html" name="" title="User">User</a>
</li>
@@ -599,6 +602,9 @@
<li>
<a href="server/EchoHub.Server.Config.SpamOptions.html" name="" title="SpamOptions">SpamOptions</a>
</li>
<li>
<a href="server/EchoHub.Server.Config.StatsOptions.html" name="" title="StatsOptions">StatsOptions</a>
</li>
<li>
<a href="server/EchoHub.Server.Config.UploadLimits.html" name="" title="UploadLimits">UploadLimits</a>
</li>
@@ -680,6 +686,9 @@
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddModerationRoles.html" name="" title="AddModerationRoles">AddModerationRoles</a>
</li>
<li>
<a href="server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html" name="" title="AddServerStatsReports">AddServerStatsReports</a>
</li>
<li>
<a href="server/EchoHub.Server.Data.Migrations.InitialCreate.html" name="" title="InitialCreate">InitialCreate</a>
</li>
@@ -769,6 +778,22 @@
</li>
</ul>
</li>
<li>
<span class="expand-stub"></span>
<a href="server/EchoHub.Server.Services.Stats.html" name="" title="EchoHub.Server.Services.Stats">EchoHub.Server.Services.Stats</a>
<ul class="nav level4">
<li>
<a href="server/EchoHub.Server.Services.Stats.ServerStatsCollector.html" name="" title="ServerStatsCollector">ServerStatsCollector</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.Stats.ServerStatsReportService.html" name="" title="ServerStatsReportService">ServerStatsReportService</a>
</li>
<li>
<a href="server/EchoHub.Server.Services.Stats.StatsCounters.html" name="" title="StatsCounters">StatsCounters</a>
</li>
</ul>
</li>
<li>
<span class="expand-stub"></span>
<a href="server/EchoHub.Server.Setup.html" name="" title="EchoHub.Server.Setup">EchoHub.Server.Setup</a>
+1 -1
View File
File diff suppressed because one or more lines are too long
+1
View File
@@ -90,6 +90,7 @@
<p>Release history for EchoHub.</p>
<h2 id="releases">Releases</h2>
<ul>
<li><a href="v0.2.16.html">v0.2.16</a> - Periodic Server-Stats Report, Upload &amp; Moderation Logging &amp; Quieter Connection Logs</li>
<li><a href="v0.2.15.html">v0.2.15</a> - Invite Codes, Data Export &amp; Deletion, /me, /banner, Replies, Open Images In Browser &amp; IRC Image Links</li>
<li><a href="v0.2.14.html">v0.2.14</a> - Clipboard Image &amp; Multi-File Paste, E2E Room Unlock Fixes, Encrypted Key Cache &amp; IRC Gateway Polish</li>
<li><a href="v0.2.13.html">v0.2.13</a> - Chat Visual Overhaul, Auto-Join All Channels &amp; Persistent Read Positions</li>
+3
View File
@@ -15,6 +15,9 @@
<li>
<a href="index.html" name="" title="Overview">Overview</a>
</li>
<li>
<a href="v0.2.16.html" name="" title="v0.2.16">v0.2.16</a>
</li>
<li>
<a href="v0.2.15.html" name="" title="v0.2.15">v0.2.15</a>
</li>
+1 -1
View File
@@ -1,2 +1,2 @@
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"v0.2.15","href":"v0.2.15.html","topicHref":"v0.2.15.html"},{"name":"v0.2.14","href":"v0.2.14.html","topicHref":"v0.2.14.html"},{"name":"v0.2.13","href":"v0.2.13.html","topicHref":"v0.2.13.html"},{"name":"v0.2.12","href":"v0.2.12.html","topicHref":"v0.2.12.html"},{"name":"v0.2.11","href":"v0.2.11.html","topicHref":"v0.2.11.html"},{"name":"v0.2.10","href":"v0.2.10.html","topicHref":"v0.2.10.html"},{"name":"v0.2.9","href":"v0.2.9.html","topicHref":"v0.2.9.html"},{"name":"v0.2.8","href":"v0.2.8.html","topicHref":"v0.2.8.html"},{"name":"v0.2.7","href":"v0.2.7.html","topicHref":"v0.2.7.html"},{"name":"v0.2.6","href":"v0.2.6.html","topicHref":"v0.2.6.html"},{"name":"v0.2.5","href":"v0.2.5.html","topicHref":"v0.2.5.html"},{"name":"v0.2.4","href":"v0.2.4.html","topicHref":"v0.2.4.html"},{"name":"v0.2.3","href":"v0.2.3.html","topicHref":"v0.2.3.html"},{"name":"v0.2.2","href":"v0.2.2.html","topicHref":"v0.2.2.html"},{"name":"v0.2.1","href":"v0.2.1.html","topicHref":"v0.2.1.html"},{"name":"v0.2.0","href":"v0.2.0.html","topicHref":"v0.2.0.html"},{"name":"v0.1.1","href":"v0.1.1.html","topicHref":"v0.1.1.html"},{"name":"v0.1.0","href":"v0.1.0.html","topicHref":"v0.1.0.html"}]}
{"items":[{"name":"Overview","href":"index.html","topicHref":"index.html"},{"name":"v0.2.16","href":"v0.2.16.html","topicHref":"v0.2.16.html"},{"name":"v0.2.15","href":"v0.2.15.html","topicHref":"v0.2.15.html"},{"name":"v0.2.14","href":"v0.2.14.html","topicHref":"v0.2.14.html"},{"name":"v0.2.13","href":"v0.2.13.html","topicHref":"v0.2.13.html"},{"name":"v0.2.12","href":"v0.2.12.html","topicHref":"v0.2.12.html"},{"name":"v0.2.11","href":"v0.2.11.html","topicHref":"v0.2.11.html"},{"name":"v0.2.10","href":"v0.2.10.html","topicHref":"v0.2.10.html"},{"name":"v0.2.9","href":"v0.2.9.html","topicHref":"v0.2.9.html"},{"name":"v0.2.8","href":"v0.2.8.html","topicHref":"v0.2.8.html"},{"name":"v0.2.7","href":"v0.2.7.html","topicHref":"v0.2.7.html"},{"name":"v0.2.6","href":"v0.2.6.html","topicHref":"v0.2.6.html"},{"name":"v0.2.5","href":"v0.2.5.html","topicHref":"v0.2.5.html"},{"name":"v0.2.4","href":"v0.2.4.html","topicHref":"v0.2.4.html"},{"name":"v0.2.3","href":"v0.2.3.html","topicHref":"v0.2.3.html"},{"name":"v0.2.2","href":"v0.2.2.html","topicHref":"v0.2.2.html"},{"name":"v0.2.1","href":"v0.2.1.html","topicHref":"v0.2.1.html"},{"name":"v0.2.0","href":"v0.2.0.html","topicHref":"v0.2.0.html"},{"name":"v0.1.1","href":"v0.1.1.html","topicHref":"v0.1.1.html"},{"name":"v0.1.0","href":"v0.1.0.html","topicHref":"v0.1.0.html"}]}
+157
View File
@@ -0,0 +1,157 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>v0.2.16 | EchoHub Documentation </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="v0.2.16 | EchoHub Documentation ">
<link rel="icon" href="../images/hue_icon.svg">
<link rel="stylesheet" href="../public/docfx.min.css">
<link rel="stylesheet" href="../public/main.css">
<meta name="docfx:navrel" content="../toc.html">
<meta name="docfx:tocrel" content="toc.html">
<meta name="docfx:rel" content="../">
<meta name="docfx:docurl" content="https://github.com/HueByte/EchoHub/blob/master/docs/#L1">
<meta name="loc:inThisArticle" content="In this article">
<meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<meta name="loc:tocFilter" content="Filter by title">
<meta name="loc:nextArticle" content="Next">
<meta name="loc:prevArticle" content="Previous">
<meta name="loc:themeLight" content="Light">
<meta name="loc:themeDark" content="Dark">
<meta name="loc:themeAuto" content="Auto">
<meta name="loc:changeTheme" content="Change theme">
<meta name="loc:copy" content="Copy">
<meta name="loc:downloadPdf" content="Download PDF">
<script type="module" src="./../public/docfx.min.js"></script>
<script>
const theme = localStorage.getItem('theme') || 'auto'
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
</script>
</head>
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
<header class="bg-body border-bottom">
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
<div class="container-xxl flex-nowrap">
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../images/hue_icon.svg" alt="EchoHub">
EchoHub
</a>
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
<i class="bi bi-three-dots"></i>
</button>
<div class="collapse navbar-collapse" id="navpanel">
<div id="navbar">
<form class="search" role="search" id="search">
<i class="bi bi-search"></i>
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
</form>
</div>
</div>
</div>
</nav>
</header>
<main class="container-xxl">
<div class="toc-offcanvas">
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<nav class="toc" id="toc"></nav>
</div>
</div>
</div>
<div class="content">
<div class="actionbar">
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
<i class="bi bi-list"></i>
</button>
<nav id="breadcrumb"></nav>
</div>
<article data-uid="">
<h1 id="v0216">v0.2.16</h1>
<p>A logging and observability pass built on the new server-logs room. Busy servers stop drowning
in connect/disconnect noise, the events operators actually care about — uploads, moderation
actions — now get logged, and a new periodic report summarizes server activity as pretty-printed
JSON that streams into the logs room and is saved to the database for history.</p>
<h2 id="new-features">New Features</h2>
<ul>
<li><strong>Periodic server-stats report</strong> — every 6 hours (configurable), the server logs an aggregate
activity snapshot as pretty-printed JSON and saves it to the database. Each report covers the
window since the previous one: messages sent, files uploaded (and total bytes), new members,
active members (distinct senders), session connections/disconnections, kicks, bans, total
registered members, users online now, and peak concurrent online. Reports also stream into the
live server-logs room, and old ones are pruned past a configurable retention. New <code>Stats</code> config
section (<code>Stats:Enabled</code>, <code>Stats:IntervalHours</code> = 6, <code>Stats:RetentionDays</code> = 90).</li>
<li><strong>Upload logging</strong> — every file, image, and audio upload is now logged with its resource URL
(<code>/api/files/{id}</code>), kind, size, uploader, and channel. In end-to-end encrypted rooms the
filename is client-side ciphertext, so it's logged as <code>[encrypted]</code> — the server still never
sees room content.</li>
<li><strong>Moderation &amp; user-action logging</strong> — role changes, kicks, bans, unbans, mutes, unmutes,
moderator message removals, and channel nukes are now logged with the actor, target, and reason.
Bans and channel nukes log at Warning level so they stand out.</li>
</ul>
<h2 id="improvements">Improvements</h2>
<ul>
<li><strong>Quieter connection logs</strong> — user connect, disconnect, join-channel, and leave-channel events
(over both SignalR and IRC) dropped from Information to Debug. On a busy server these fired
constantly and buried everything else; the aggregate counts now live in the periodic stats
report instead. They still show in Development, where the default level is Debug.</li>
<li><strong>Config examples stay in sync</strong><code>.env.example</code> gained the <code>ServerLogs</code> and <code>Stats</code> sections
(the former had been missing), alongside <code>appsettings.json</code> / <code>appsettings.example.json</code>.</li>
</ul>
<h2 id="notes-for-server-operators">Notes for server operators</h2>
<ul>
<li>New config section: <code>Stats</code><code>Enabled</code> (default true), <code>IntervalHours</code> (default 6),
<code>RetentionDays</code> (default 90, <code>0</code> keeps reports forever). See <code>appsettings.example.json</code> and
<code>.env.example</code>. A non-positive interval falls back to 6h; positive values are honored down to a
1-second floor.</li>
<li>One new database migration (<code>AddServerStatsReports</code>) applies automatically on startup.</li>
<li>Connect/disconnect/join/leave now log at Debug — if you relied on those Information lines, lower
<code>Serilog:MinimumLevel:Default</code> (or <code>ServerLogs:MinLevel</code> for the room) to <code>Debug</code>, or read the
periodic stats report for aggregates.</li>
</ul>
</article>
<div class="contribution d-print-none">
<a href="https://github.com/HueByte/EchoHub/blob/master/docs/#L1" class="edit-link">Edit this page</a>
</div>
<div class="next-article d-print-none border-top" id="nextArticle"></div>
</div>
<div class="affix">
<nav id="affix"></nav>
</div>
</main>
<div class="container-xxl search-results" id="search-results"></div>
<footer class="border-top text-secondary">
<div class="container-xxl">
<div class="flex-fill">
<div class='footer-custom'><div class='footer-inner'><span class='footer-brand'>EchoHub</span><span class='footer-sep'>&middot;</span><a href='https://github.com/HueByte/EchoHub'>GitHub</a><span class='footer-sep'>&middot;</span><a href='https://echohub.voidcube.cloud'>Website</a></div></div>
</div>
</div>
</footer>
</body>
</html>
+48 -8
View File
File diff suppressed because one or more lines are too long
+108
View File
@@ -1942,6 +1942,20 @@
"Title": "EchoHub.Core.Models.ServerRole",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.Models.ServerStatsReport.yml",
"output": {
".html": {
"relative_path": "api/core/EchoHub.Core.Models.ServerStatsReport.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Core.Models.ServerStatsReport",
"Summary": "<p sourcefile=\"_api_meta/core/EchoHub.Core.Models.ServerStatsReport.yml\" sourcestartlinenumber=\"1\">A snapshot of server activity over one reporting window, produced periodically by the\nstats-report background job. Each report is logged as pretty-printed JSON and persisted\nfor historical trend analysis. The window is &quot;since the previous report&quot; (or since startup\nfor the first report of a run).</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/core/EchoHub.Core.Models.User.yml",
@@ -2278,6 +2292,20 @@
"Title": "EchoHub.Server.Config.SpamOptions",
"Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.SpamOptions.yml\" sourcestartlinenumber=\"1\">Anti-spam thresholds, bound from the &quot;Spam&quot; config section. Defaults are lenient enough\nthat a fast typist never trips them; Mods and above are always exempt.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Config.StatsOptions.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Config.StatsOptions.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Config.StatsOptions",
"Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Config.StatsOptions.yml\" sourcestartlinenumber=\"1\">Periodic server-stats report settings, bound from the &quot;Stats&quot; config section (env override:\n<code>Stats__Enabled</code> etc.). When enabled, a background job periodically snapshots server\nactivity, logs it as pretty-printed JSON, and persists it to the database.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Config.UploadLimits.yml",
@@ -2586,6 +2614,20 @@
"Title": "EchoHub.Server.Data.Migrations.AddModerationRoles",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Data.Migrations.AddServerStatsReports",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Data.Migrations.InitialCreate.yml",
@@ -2936,6 +2978,62 @@
"Title": "EchoHub.Server.Services.SpamVerdictKind",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsCollector.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.Stats.ServerStatsCollector",
"Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsCollector.yml\" sourcestartlinenumber=\"1\">Thread-safe, in-memory accumulator for server-activity counters that have no natural\ndatabase timestamp to query after the fact — session connects/disconnects, moderation\nactions, and peak concurrency. The periodic stats-report job snapshots and resets these\nonce per reporting window. Registered as a singleton; every increment is lock-free so it\nis safe to call from hot paths (connect/disconnect).</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsReportService.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.Stats.ServerStatsReportService",
"Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.Stats.ServerStatsReportService.yml\" sourcestartlinenumber=\"1\">Background job that periodically snapshots server activity over a window, logs it as\npretty-printed JSON (which also surfaces in the live server-logs room), and persists it to\nthe database for historical trends. Interval and retention are configurable via the &quot;Stats&quot;\nsection; the default cadence is every 6 hours.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.StatsCounters.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.Stats.StatsCounters.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.Stats.StatsCounters",
"Summary": "<p sourcefile=\"_api_meta/server/EchoHub.Server.Services.Stats.StatsCounters.yml\" sourcestartlinenumber=\"1\">Immutable snapshot of the counters held by <xref href=\"EchoHub.Server.Services.Stats.ServerStatsCollector\" data-throw-if-not-resolved=\"false\"></xref>.</p>\n"
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.Stats.yml",
"output": {
".html": {
"relative_path": "api/server/EchoHub.Server.Services.Stats.html"
}
},
"version": "",
"Uid": null,
"IsMRef": true,
"Title": "EchoHub.Server.Services.Stats",
"Summary": null
},
{
"type": "ManagedReference",
"source_relative_path": "_api_meta/server/EchoHub.Server.Services.UserService.yml",
@@ -3368,6 +3466,16 @@
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "changelog/v0.2.16.md",
"output": {
".html": {
"relative_path": "changelog/v0.2.16.html"
}
},
"version": ""
},
{
"type": "Conceptual",
"source_relative_path": "changelog/v0.2.2.md",
+717 -27
View File
@@ -18250,6 +18250,234 @@ references:
commentId: F:EchoHub.Core.Models.ServerRole.Owner
fullName: EchoHub.Core.Models.ServerRole.Owner
nameWithType: ServerRole.Owner
- uid: EchoHub.Core.Models.ServerStatsReport
name: ServerStatsReport
href: api/core/EchoHub.Core.Models.ServerStatsReport.html
commentId: T:EchoHub.Core.Models.ServerStatsReport
fullName: EchoHub.Core.Models.ServerStatsReport
nameWithType: ServerStatsReport
- uid: EchoHub.Core.Models.ServerStatsReport.#ctor
name: ServerStatsReport()
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport__ctor
commentId: M:EchoHub.Core.Models.ServerStatsReport.#ctor
name.vb: New()
fullName: EchoHub.Core.Models.ServerStatsReport.ServerStatsReport()
fullName.vb: EchoHub.Core.Models.ServerStatsReport.New()
nameWithType: ServerStatsReport.ServerStatsReport()
nameWithType.vb: ServerStatsReport.New()
- uid: EchoHub.Core.Models.ServerStatsReport.#ctor*
name: ServerStatsReport
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport__ctor_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.#ctor
name.vb: New
fullName: EchoHub.Core.Models.ServerStatsReport.ServerStatsReport
fullName.vb: EchoHub.Core.Models.ServerStatsReport.New
nameWithType: ServerStatsReport.ServerStatsReport
nameWithType.vb: ServerStatsReport.New
- uid: EchoHub.Core.Models.ServerStatsReport.ActiveMembers
name: ActiveMembers
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_ActiveMembers
commentId: P:EchoHub.Core.Models.ServerStatsReport.ActiveMembers
fullName: EchoHub.Core.Models.ServerStatsReport.ActiveMembers
nameWithType: ServerStatsReport.ActiveMembers
- uid: EchoHub.Core.Models.ServerStatsReport.ActiveMembers*
name: ActiveMembers
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_ActiveMembers_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.ActiveMembers
fullName: EchoHub.Core.Models.ServerStatsReport.ActiveMembers
nameWithType: ServerStatsReport.ActiveMembers
- uid: EchoHub.Core.Models.ServerStatsReport.Bans
name: Bans
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Bans
commentId: P:EchoHub.Core.Models.ServerStatsReport.Bans
fullName: EchoHub.Core.Models.ServerStatsReport.Bans
nameWithType: ServerStatsReport.Bans
- uid: EchoHub.Core.Models.ServerStatsReport.Bans*
name: Bans
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Bans_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.Bans
fullName: EchoHub.Core.Models.ServerStatsReport.Bans
nameWithType: ServerStatsReport.Bans
- uid: EchoHub.Core.Models.ServerStatsReport.BytesUploaded
name: BytesUploaded
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_BytesUploaded
commentId: P:EchoHub.Core.Models.ServerStatsReport.BytesUploaded
fullName: EchoHub.Core.Models.ServerStatsReport.BytesUploaded
nameWithType: ServerStatsReport.BytesUploaded
- uid: EchoHub.Core.Models.ServerStatsReport.BytesUploaded*
name: BytesUploaded
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_BytesUploaded_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.BytesUploaded
fullName: EchoHub.Core.Models.ServerStatsReport.BytesUploaded
nameWithType: ServerStatsReport.BytesUploaded
- uid: EchoHub.Core.Models.ServerStatsReport.Connections
name: Connections
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Connections
commentId: P:EchoHub.Core.Models.ServerStatsReport.Connections
fullName: EchoHub.Core.Models.ServerStatsReport.Connections
nameWithType: ServerStatsReport.Connections
- uid: EchoHub.Core.Models.ServerStatsReport.Connections*
name: Connections
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Connections_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.Connections
fullName: EchoHub.Core.Models.ServerStatsReport.Connections
nameWithType: ServerStatsReport.Connections
- uid: EchoHub.Core.Models.ServerStatsReport.Disconnections
name: Disconnections
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Disconnections
commentId: P:EchoHub.Core.Models.ServerStatsReport.Disconnections
fullName: EchoHub.Core.Models.ServerStatsReport.Disconnections
nameWithType: ServerStatsReport.Disconnections
- uid: EchoHub.Core.Models.ServerStatsReport.Disconnections*
name: Disconnections
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Disconnections_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.Disconnections
fullName: EchoHub.Core.Models.ServerStatsReport.Disconnections
nameWithType: ServerStatsReport.Disconnections
- uid: EchoHub.Core.Models.ServerStatsReport.FilesUploaded
name: FilesUploaded
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_FilesUploaded
commentId: P:EchoHub.Core.Models.ServerStatsReport.FilesUploaded
fullName: EchoHub.Core.Models.ServerStatsReport.FilesUploaded
nameWithType: ServerStatsReport.FilesUploaded
- uid: EchoHub.Core.Models.ServerStatsReport.FilesUploaded*
name: FilesUploaded
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_FilesUploaded_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.FilesUploaded
fullName: EchoHub.Core.Models.ServerStatsReport.FilesUploaded
nameWithType: ServerStatsReport.FilesUploaded
- uid: EchoHub.Core.Models.ServerStatsReport.GeneratedAt
name: GeneratedAt
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_GeneratedAt
commentId: P:EchoHub.Core.Models.ServerStatsReport.GeneratedAt
fullName: EchoHub.Core.Models.ServerStatsReport.GeneratedAt
nameWithType: ServerStatsReport.GeneratedAt
- uid: EchoHub.Core.Models.ServerStatsReport.GeneratedAt*
name: GeneratedAt
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_GeneratedAt_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.GeneratedAt
fullName: EchoHub.Core.Models.ServerStatsReport.GeneratedAt
nameWithType: ServerStatsReport.GeneratedAt
- uid: EchoHub.Core.Models.ServerStatsReport.Id
name: Id
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Id
commentId: P:EchoHub.Core.Models.ServerStatsReport.Id
fullName: EchoHub.Core.Models.ServerStatsReport.Id
nameWithType: ServerStatsReport.Id
- uid: EchoHub.Core.Models.ServerStatsReport.Id*
name: Id
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Id_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.Id
fullName: EchoHub.Core.Models.ServerStatsReport.Id
nameWithType: ServerStatsReport.Id
- uid: EchoHub.Core.Models.ServerStatsReport.Kicks
name: Kicks
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Kicks
commentId: P:EchoHub.Core.Models.ServerStatsReport.Kicks
fullName: EchoHub.Core.Models.ServerStatsReport.Kicks
nameWithType: ServerStatsReport.Kicks
- uid: EchoHub.Core.Models.ServerStatsReport.Kicks*
name: Kicks
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_Kicks_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.Kicks
fullName: EchoHub.Core.Models.ServerStatsReport.Kicks
nameWithType: ServerStatsReport.Kicks
- uid: EchoHub.Core.Models.ServerStatsReport.MessagesSent
name: MessagesSent
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_MessagesSent
commentId: P:EchoHub.Core.Models.ServerStatsReport.MessagesSent
fullName: EchoHub.Core.Models.ServerStatsReport.MessagesSent
nameWithType: ServerStatsReport.MessagesSent
- uid: EchoHub.Core.Models.ServerStatsReport.MessagesSent*
name: MessagesSent
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_MessagesSent_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.MessagesSent
fullName: EchoHub.Core.Models.ServerStatsReport.MessagesSent
nameWithType: ServerStatsReport.MessagesSent
- uid: EchoHub.Core.Models.ServerStatsReport.NewMembers
name: NewMembers
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_NewMembers
commentId: P:EchoHub.Core.Models.ServerStatsReport.NewMembers
fullName: EchoHub.Core.Models.ServerStatsReport.NewMembers
nameWithType: ServerStatsReport.NewMembers
- uid: EchoHub.Core.Models.ServerStatsReport.NewMembers*
name: NewMembers
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_NewMembers_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.NewMembers
fullName: EchoHub.Core.Models.ServerStatsReport.NewMembers
nameWithType: ServerStatsReport.NewMembers
- uid: EchoHub.Core.Models.ServerStatsReport.OnlineNow
name: OnlineNow
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_OnlineNow
commentId: P:EchoHub.Core.Models.ServerStatsReport.OnlineNow
fullName: EchoHub.Core.Models.ServerStatsReport.OnlineNow
nameWithType: ServerStatsReport.OnlineNow
- uid: EchoHub.Core.Models.ServerStatsReport.OnlineNow*
name: OnlineNow
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_OnlineNow_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.OnlineNow
fullName: EchoHub.Core.Models.ServerStatsReport.OnlineNow
nameWithType: ServerStatsReport.OnlineNow
- uid: EchoHub.Core.Models.ServerStatsReport.PeakOnline
name: PeakOnline
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeakOnline
commentId: P:EchoHub.Core.Models.ServerStatsReport.PeakOnline
fullName: EchoHub.Core.Models.ServerStatsReport.PeakOnline
nameWithType: ServerStatsReport.PeakOnline
- uid: EchoHub.Core.Models.ServerStatsReport.PeakOnline*
name: PeakOnline
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeakOnline_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.PeakOnline
fullName: EchoHub.Core.Models.ServerStatsReport.PeakOnline
nameWithType: ServerStatsReport.PeakOnline
- uid: EchoHub.Core.Models.ServerStatsReport.PeriodEnd
name: PeriodEnd
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeriodEnd
commentId: P:EchoHub.Core.Models.ServerStatsReport.PeriodEnd
fullName: EchoHub.Core.Models.ServerStatsReport.PeriodEnd
nameWithType: ServerStatsReport.PeriodEnd
- uid: EchoHub.Core.Models.ServerStatsReport.PeriodEnd*
name: PeriodEnd
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeriodEnd_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.PeriodEnd
fullName: EchoHub.Core.Models.ServerStatsReport.PeriodEnd
nameWithType: ServerStatsReport.PeriodEnd
- uid: EchoHub.Core.Models.ServerStatsReport.PeriodStart
name: PeriodStart
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeriodStart
commentId: P:EchoHub.Core.Models.ServerStatsReport.PeriodStart
fullName: EchoHub.Core.Models.ServerStatsReport.PeriodStart
nameWithType: ServerStatsReport.PeriodStart
- uid: EchoHub.Core.Models.ServerStatsReport.PeriodStart*
name: PeriodStart
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_PeriodStart_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.PeriodStart
fullName: EchoHub.Core.Models.ServerStatsReport.PeriodStart
nameWithType: ServerStatsReport.PeriodStart
- uid: EchoHub.Core.Models.ServerStatsReport.TotalMembers
name: TotalMembers
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_TotalMembers
commentId: P:EchoHub.Core.Models.ServerStatsReport.TotalMembers
fullName: EchoHub.Core.Models.ServerStatsReport.TotalMembers
nameWithType: ServerStatsReport.TotalMembers
- uid: EchoHub.Core.Models.ServerStatsReport.TotalMembers*
name: TotalMembers
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_TotalMembers_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.TotalMembers
fullName: EchoHub.Core.Models.ServerStatsReport.TotalMembers
nameWithType: ServerStatsReport.TotalMembers
- uid: EchoHub.Core.Models.ServerStatsReport.WindowHours
name: WindowHours
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_WindowHours
commentId: P:EchoHub.Core.Models.ServerStatsReport.WindowHours
fullName: EchoHub.Core.Models.ServerStatsReport.WindowHours
nameWithType: ServerStatsReport.WindowHours
- uid: EchoHub.Core.Models.ServerStatsReport.WindowHours*
name: WindowHours
href: api/core/EchoHub.Core.Models.ServerStatsReport.html#EchoHub_Core_Models_ServerStatsReport_WindowHours_
commentId: Overload:EchoHub.Core.Models.ServerStatsReport.WindowHours
fullName: EchoHub.Core.Models.ServerStatsReport.WindowHours
nameWithType: ServerStatsReport.WindowHours
- uid: EchoHub.Core.Models.User
name: User
href: api/core/EchoHub.Core.Models.User.html
@@ -19276,6 +19504,66 @@ references:
commentId: Overload:EchoHub.Server.Config.SpamOptions.WindowSeconds
fullName: EchoHub.Server.Config.SpamOptions.WindowSeconds
nameWithType: SpamOptions.WindowSeconds
- uid: EchoHub.Server.Config.StatsOptions
name: StatsOptions
href: api/server/EchoHub.Server.Config.StatsOptions.html
commentId: T:EchoHub.Server.Config.StatsOptions
fullName: EchoHub.Server.Config.StatsOptions
nameWithType: StatsOptions
- uid: EchoHub.Server.Config.StatsOptions.#ctor
name: StatsOptions()
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions__ctor
commentId: M:EchoHub.Server.Config.StatsOptions.#ctor
name.vb: New()
fullName: EchoHub.Server.Config.StatsOptions.StatsOptions()
fullName.vb: EchoHub.Server.Config.StatsOptions.New()
nameWithType: StatsOptions.StatsOptions()
nameWithType.vb: StatsOptions.New()
- uid: EchoHub.Server.Config.StatsOptions.#ctor*
name: StatsOptions
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions__ctor_
commentId: Overload:EchoHub.Server.Config.StatsOptions.#ctor
name.vb: New
fullName: EchoHub.Server.Config.StatsOptions.StatsOptions
fullName.vb: EchoHub.Server.Config.StatsOptions.New
nameWithType: StatsOptions.StatsOptions
nameWithType.vb: StatsOptions.New
- uid: EchoHub.Server.Config.StatsOptions.Enabled
name: Enabled
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions_Enabled
commentId: P:EchoHub.Server.Config.StatsOptions.Enabled
fullName: EchoHub.Server.Config.StatsOptions.Enabled
nameWithType: StatsOptions.Enabled
- uid: EchoHub.Server.Config.StatsOptions.Enabled*
name: Enabled
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions_Enabled_
commentId: Overload:EchoHub.Server.Config.StatsOptions.Enabled
fullName: EchoHub.Server.Config.StatsOptions.Enabled
nameWithType: StatsOptions.Enabled
- uid: EchoHub.Server.Config.StatsOptions.IntervalHours
name: IntervalHours
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions_IntervalHours
commentId: P:EchoHub.Server.Config.StatsOptions.IntervalHours
fullName: EchoHub.Server.Config.StatsOptions.IntervalHours
nameWithType: StatsOptions.IntervalHours
- uid: EchoHub.Server.Config.StatsOptions.IntervalHours*
name: IntervalHours
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions_IntervalHours_
commentId: Overload:EchoHub.Server.Config.StatsOptions.IntervalHours
fullName: EchoHub.Server.Config.StatsOptions.IntervalHours
nameWithType: StatsOptions.IntervalHours
- uid: EchoHub.Server.Config.StatsOptions.RetentionDays
name: RetentionDays
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions_RetentionDays
commentId: P:EchoHub.Server.Config.StatsOptions.RetentionDays
fullName: EchoHub.Server.Config.StatsOptions.RetentionDays
nameWithType: StatsOptions.RetentionDays
- uid: EchoHub.Server.Config.StatsOptions.RetentionDays*
name: RetentionDays
href: api/server/EchoHub.Server.Config.StatsOptions.html#EchoHub_Server_Config_StatsOptions_RetentionDays_
commentId: Overload:EchoHub.Server.Config.StatsOptions.RetentionDays
fullName: EchoHub.Server.Config.StatsOptions.RetentionDays
nameWithType: StatsOptions.RetentionDays
- uid: EchoHub.Server.Config.UploadLimits
name: UploadLimits
href: api/server/EchoHub.Server.Config.UploadLimits.html
@@ -19516,15 +19804,15 @@ references:
commentId: T:EchoHub.Server.Controllers.ChannelsController
fullName: EchoHub.Server.Controllers.ChannelsController
nameWithType: ChannelsController
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits)
name: ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Server_Config_UploadLimits_
commentId: M:EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits)
name.vb: New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
fullName: EchoHub.Server.Controllers.ChannelsController.ChannelsController(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Server.Config.UploadLimits)
fullName.vb: EchoHub.Server.Controllers.ChannelsController.New(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Server.Config.UploadLimits)
nameWithType: ChannelsController.ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
nameWithType.vb: ChannelsController.New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits)
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Controllers.ChannelsController})
name: ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits, ILogger<ChannelsController>)
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Server_Services_FileStorageService_EchoHub_Core_Services_ImageToAsciiService_System_Net_Http_IHttpClientFactory_EchoHub_Core_Contracts_IChatService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Server_Config_UploadLimits_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Controllers_ChannelsController__
commentId: M:EchoHub.Server.Controllers.ChannelsController.#ctor(EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Data.EchoHubDbContext,EchoHub.Server.Services.FileStorageService,EchoHub.Core.Services.ImageToAsciiService,System.Net.Http.IHttpClientFactory,EchoHub.Core.Contracts.IChatService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Server.Config.UploadLimits,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Controllers.ChannelsController})
name.vb: New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits, ILogger(Of ChannelsController))
fullName: EchoHub.Server.Controllers.ChannelsController.ChannelsController(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Server.Config.UploadLimits, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Controllers.ChannelsController>)
fullName.vb: EchoHub.Server.Controllers.ChannelsController.New(EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Data.EchoHubDbContext, EchoHub.Server.Services.FileStorageService, EchoHub.Core.Services.ImageToAsciiService, System.Net.Http.IHttpClientFactory, EchoHub.Core.Contracts.IChatService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Server.Config.UploadLimits, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Controllers.ChannelsController))
nameWithType: ChannelsController.ChannelsController(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits, ILogger<ChannelsController>)
nameWithType.vb: ChannelsController.New(IChannelService, EchoHubDbContext, FileStorageService, ImageToAsciiService, IHttpClientFactory, IChatService, IMessageEncryptionService, UploadLimits, ILogger(Of ChannelsController))
- uid: EchoHub.Server.Controllers.ChannelsController.#ctor*
name: ChannelsController
href: api/server/EchoHub.Server.Controllers.ChannelsController.html#EchoHub_Server_Controllers_ChannelsController__ctor_
@@ -19774,15 +20062,15 @@ references:
commentId: T:EchoHub.Server.Controllers.ModerationController
fullName: EchoHub.Server.Controllers.ModerationController
nameWithType: ModerationController
- uid: EchoHub.Server.Controllers.ModerationController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Core.Contracts.IChatService,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.FileStorageService,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster})
name: ModerationController(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable<IChatBroadcaster>)
href: api/server/EchoHub.Server.Controllers.ModerationController.html#EchoHub_Server_Controllers_ModerationController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Core_Contracts_IChatService_EchoHub_Server_Services_PresenceTracker_EchoHub_Server_Services_FileStorageService_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__
commentId: M:EchoHub.Server.Controllers.ModerationController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Core.Contracts.IChatService,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.FileStorageService,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster})
name.vb: New(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable(Of IChatBroadcaster))
fullName: EchoHub.Server.Controllers.ModerationController.ModerationController(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Core.Contracts.IChatService, EchoHub.Server.Services.PresenceTracker, EchoHub.Server.Services.FileStorageService, System.Collections.Generic.IEnumerable<EchoHub.Core.Contracts.IChatBroadcaster>)
fullName.vb: EchoHub.Server.Controllers.ModerationController.New(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Core.Contracts.IChatService, EchoHub.Server.Services.PresenceTracker, EchoHub.Server.Services.FileStorageService, System.Collections.Generic.IEnumerable(Of EchoHub.Core.Contracts.IChatBroadcaster))
nameWithType: ModerationController.ModerationController(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable<IChatBroadcaster>)
nameWithType.vb: ModerationController.New(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable(Of IChatBroadcaster))
- uid: EchoHub.Server.Controllers.ModerationController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Core.Contracts.IChatService,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.FileStorageService,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.Stats.ServerStatsCollector,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Controllers.ModerationController})
name: ModerationController(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable<IChatBroadcaster>, ServerStatsCollector, ILogger<ModerationController>)
href: api/server/EchoHub.Server.Controllers.ModerationController.html#EchoHub_Server_Controllers_ModerationController__ctor_EchoHub_Server_Data_EchoHubDbContext_EchoHub_Core_Contracts_IChatService_EchoHub_Server_Services_PresenceTracker_EchoHub_Server_Services_FileStorageService_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_Stats_ServerStatsCollector_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Controllers_ModerationController__
commentId: M:EchoHub.Server.Controllers.ModerationController.#ctor(EchoHub.Server.Data.EchoHubDbContext,EchoHub.Core.Contracts.IChatService,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.FileStorageService,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.Stats.ServerStatsCollector,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Controllers.ModerationController})
name.vb: New(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable(Of IChatBroadcaster), ServerStatsCollector, ILogger(Of ModerationController))
fullName: EchoHub.Server.Controllers.ModerationController.ModerationController(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Core.Contracts.IChatService, EchoHub.Server.Services.PresenceTracker, EchoHub.Server.Services.FileStorageService, System.Collections.Generic.IEnumerable<EchoHub.Core.Contracts.IChatBroadcaster>, EchoHub.Server.Services.Stats.ServerStatsCollector, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Controllers.ModerationController>)
fullName.vb: EchoHub.Server.Controllers.ModerationController.New(EchoHub.Server.Data.EchoHubDbContext, EchoHub.Core.Contracts.IChatService, EchoHub.Server.Services.PresenceTracker, EchoHub.Server.Services.FileStorageService, System.Collections.Generic.IEnumerable(Of EchoHub.Core.Contracts.IChatBroadcaster), EchoHub.Server.Services.Stats.ServerStatsCollector, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Controllers.ModerationController))
nameWithType: ModerationController.ModerationController(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable<IChatBroadcaster>, ServerStatsCollector, ILogger<ModerationController>)
nameWithType.vb: ModerationController.New(EchoHubDbContext, IChatService, PresenceTracker, FileStorageService, IEnumerable(Of IChatBroadcaster), ServerStatsCollector, ILogger(Of ModerationController))
- uid: EchoHub.Server.Controllers.ModerationController.#ctor*
name: ModerationController
href: api/server/EchoHub.Server.Controllers.ModerationController.html#EchoHub_Server_Controllers_ModerationController__ctor_
@@ -20185,6 +20473,18 @@ references:
commentId: Overload:EchoHub.Server.Data.EchoHubDbContext.RefreshTokens
fullName: EchoHub.Server.Data.EchoHubDbContext.RefreshTokens
nameWithType: EchoHubDbContext.RefreshTokens
- uid: EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports
name: ServerStatsReports
href: api/server/EchoHub.Server.Data.EchoHubDbContext.html#EchoHub_Server_Data_EchoHubDbContext_ServerStatsReports
commentId: P:EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports
fullName: EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports
nameWithType: EchoHubDbContext.ServerStatsReports
- uid: EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports*
name: ServerStatsReports
href: api/server/EchoHub.Server.Data.EchoHubDbContext.html#EchoHub_Server_Data_EchoHubDbContext_ServerStatsReports_
commentId: Overload:EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports
fullName: EchoHub.Server.Data.EchoHubDbContext.ServerStatsReports
nameWithType: EchoHubDbContext.ServerStatsReports
- uid: EchoHub.Server.Data.EchoHubDbContext.Users
name: Users
href: api/server/EchoHub.Server.Data.EchoHubDbContext.html#EchoHub_Server_Data_EchoHubDbContext_Users
@@ -20863,6 +21163,66 @@ references:
commentId: Overload:EchoHub.Server.Data.Migrations.AddModerationRoles.Up
fullName: EchoHub.Server.Data.Migrations.AddModerationRoles.Up
nameWithType: AddModerationRoles.Up
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports
name: AddServerStatsReports
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html
commentId: T:EchoHub.Server.Data.Migrations.AddServerStatsReports
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports
nameWithType: AddServerStatsReports
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.#ctor
name: AddServerStatsReports()
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports__ctor
commentId: M:EchoHub.Server.Data.Migrations.AddServerStatsReports.#ctor
name.vb: New()
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.AddServerStatsReports()
fullName.vb: EchoHub.Server.Data.Migrations.AddServerStatsReports.New()
nameWithType: AddServerStatsReports.AddServerStatsReports()
nameWithType.vb: AddServerStatsReports.New()
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.#ctor*
name: AddServerStatsReports
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports__ctor_
commentId: Overload:EchoHub.Server.Data.Migrations.AddServerStatsReports.#ctor
name.vb: New
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.AddServerStatsReports
fullName.vb: EchoHub.Server.Data.Migrations.AddServerStatsReports.New
nameWithType: AddServerStatsReports.AddServerStatsReports
nameWithType.vb: AddServerStatsReports.New
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)
name: BuildTargetModel(ModelBuilder)
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports_BuildTargetModel_Microsoft_EntityFrameworkCore_ModelBuilder_
commentId: M:EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel(Microsoft.EntityFrameworkCore.ModelBuilder)
nameWithType: AddServerStatsReports.BuildTargetModel(ModelBuilder)
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel*
name: BuildTargetModel
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports_BuildTargetModel_
commentId: Overload:EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.BuildTargetModel
nameWithType: AddServerStatsReports.BuildTargetModel
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
name: Down(MigrationBuilder)
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports_Down_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_
commentId: M:EchoHub.Server.Data.Migrations.AddServerStatsReports.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.Down(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
nameWithType: AddServerStatsReports.Down(MigrationBuilder)
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.Down*
name: Down
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports_Down_
commentId: Overload:EchoHub.Server.Data.Migrations.AddServerStatsReports.Down
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.Down
nameWithType: AddServerStatsReports.Down
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
name: Up(MigrationBuilder)
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports_Up_Microsoft_EntityFrameworkCore_Migrations_MigrationBuilder_
commentId: M:EchoHub.Server.Data.Migrations.AddServerStatsReports.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.Up(Microsoft.EntityFrameworkCore.Migrations.MigrationBuilder)
nameWithType: AddServerStatsReports.Up(MigrationBuilder)
- uid: EchoHub.Server.Data.Migrations.AddServerStatsReports.Up*
name: Up
href: api/server/EchoHub.Server.Data.Migrations.AddServerStatsReports.html#EchoHub_Server_Data_Migrations_AddServerStatsReports_Up_
commentId: Overload:EchoHub.Server.Data.Migrations.AddServerStatsReports.Up
fullName: EchoHub.Server.Data.Migrations.AddServerStatsReports.Up
nameWithType: AddServerStatsReports.Up
- uid: EchoHub.Server.Data.Migrations.InitialCreate
name: InitialCreate
href: api/server/EchoHub.Server.Data.Migrations.InitialCreate.html
@@ -22528,15 +22888,15 @@ references:
commentId: T:EchoHub.Server.Services.ChatService
fullName: EchoHub.Server.Services.ChatService
nameWithType: ChatService
- uid: EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.SpamGuard,EchoHub.Server.Services.ServerLogs.ServerLogsService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name: ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ILogger<ChatService>)
href: api/server/EchoHub.Server.Services.ChatService.html#EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_SpamGuard_EchoHub_Server_Services_ServerLogs_ServerLogsService_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__
commentId: M:EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.SpamGuard,EchoHub.Server.Services.ServerLogs.ServerLogsService,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name.vb: New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ILogger(Of ChatService))
fullName: EchoHub.Server.Services.ChatService.ChatService(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable<EchoHub.Core.Contracts.IChatBroadcaster>, EchoHub.Server.Services.LinkEmbedService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.SpamGuard, EchoHub.Server.Services.ServerLogs.ServerLogsService, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Services.ChatService>)
fullName.vb: EchoHub.Server.Services.ChatService.New(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable(Of EchoHub.Core.Contracts.IChatBroadcaster), EchoHub.Server.Services.LinkEmbedService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.SpamGuard, EchoHub.Server.Services.ServerLogs.ServerLogsService, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Services.ChatService))
nameWithType: ChatService.ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ILogger<ChatService>)
nameWithType.vb: ChatService.New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ILogger(Of ChatService))
- uid: EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.SpamGuard,EchoHub.Server.Services.ServerLogs.ServerLogsService,EchoHub.Server.Services.Stats.ServerStatsCollector,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name: ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ServerStatsCollector, ILogger<ChatService>)
href: api/server/EchoHub.Server.Services.ChatService.html#EchoHub_Server_Services_ChatService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_System_Collections_Generic_IEnumerable_EchoHub_Core_Contracts_IChatBroadcaster__EchoHub_Server_Services_LinkEmbedService_EchoHub_Core_Contracts_IMessageEncryptionService_EchoHub_Core_Contracts_IChannelService_EchoHub_Server_Services_FileStorageService_EchoHub_Server_Services_SpamGuard_EchoHub_Server_Services_ServerLogs_ServerLogsService_EchoHub_Server_Services_Stats_ServerStatsCollector_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_ChatService__
commentId: M:EchoHub.Server.Services.ChatService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,System.Collections.Generic.IEnumerable{EchoHub.Core.Contracts.IChatBroadcaster},EchoHub.Server.Services.LinkEmbedService,EchoHub.Core.Contracts.IMessageEncryptionService,EchoHub.Core.Contracts.IChannelService,EchoHub.Server.Services.FileStorageService,EchoHub.Server.Services.SpamGuard,EchoHub.Server.Services.ServerLogs.ServerLogsService,EchoHub.Server.Services.Stats.ServerStatsCollector,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.ChatService})
name.vb: New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ServerStatsCollector, ILogger(Of ChatService))
fullName: EchoHub.Server.Services.ChatService.ChatService(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable<EchoHub.Core.Contracts.IChatBroadcaster>, EchoHub.Server.Services.LinkEmbedService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.SpamGuard, EchoHub.Server.Services.ServerLogs.ServerLogsService, EchoHub.Server.Services.Stats.ServerStatsCollector, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Services.ChatService>)
fullName.vb: EchoHub.Server.Services.ChatService.New(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, System.Collections.Generic.IEnumerable(Of EchoHub.Core.Contracts.IChatBroadcaster), EchoHub.Server.Services.LinkEmbedService, EchoHub.Core.Contracts.IMessageEncryptionService, EchoHub.Core.Contracts.IChannelService, EchoHub.Server.Services.FileStorageService, EchoHub.Server.Services.SpamGuard, EchoHub.Server.Services.ServerLogs.ServerLogsService, EchoHub.Server.Services.Stats.ServerStatsCollector, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Services.ChatService))
nameWithType: ChatService.ChatService(IServiceScopeFactory, PresenceTracker, IEnumerable<IChatBroadcaster>, LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ServerStatsCollector, ILogger<ChatService>)
nameWithType.vb: ChatService.New(IServiceScopeFactory, PresenceTracker, IEnumerable(Of IChatBroadcaster), LinkEmbedService, IMessageEncryptionService, IChannelService, FileStorageService, SpamGuard, ServerLogsService, ServerStatsCollector, ILogger(Of ChatService))
- uid: EchoHub.Server.Services.ChatService.#ctor*
name: ChatService
href: api/server/EchoHub.Server.Services.ChatService.html#EchoHub_Server_Services_ChatService__ctor_
@@ -24427,6 +24787,336 @@ references:
commentId: F:EchoHub.Server.Services.SpamVerdictKind.Rejected
fullName: EchoHub.Server.Services.SpamVerdictKind.Rejected
nameWithType: SpamVerdictKind.Rejected
- uid: EchoHub.Server.Services.Stats
name: EchoHub.Server.Services.Stats
href: api/server/EchoHub.Server.Services.Stats.html
commentId: N:EchoHub.Server.Services.Stats
fullName: EchoHub.Server.Services.Stats
nameWithType: EchoHub.Server.Services.Stats
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector
name: ServerStatsCollector
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html
commentId: T:EchoHub.Server.Services.Stats.ServerStatsCollector
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector
nameWithType: ServerStatsCollector
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.#ctor
name: ServerStatsCollector()
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector__ctor
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.#ctor
name.vb: New()
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.ServerStatsCollector()
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsCollector.New()
nameWithType: ServerStatsCollector.ServerStatsCollector()
nameWithType.vb: ServerStatsCollector.New()
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.#ctor*
name: ServerStatsCollector
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector__ctor_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.#ctor
name.vb: New
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.ServerStatsCollector
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsCollector.New
nameWithType: ServerStatsCollector.ServerStatsCollector
nameWithType.vb: ServerStatsCollector.New
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan
name: RecordBan()
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordBan
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan()
nameWithType: ServerStatsCollector.RecordBan()
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan*
name: RecordBan
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordBan_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordBan
nameWithType: ServerStatsCollector.RecordBan
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection(System.Int32)
name: RecordConnection(int)
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordConnection_System_Int32_
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection(System.Int32)
name.vb: RecordConnection(Integer)
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection(int)
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection(Integer)
nameWithType: ServerStatsCollector.RecordConnection(int)
nameWithType.vb: ServerStatsCollector.RecordConnection(Integer)
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection*
name: RecordConnection
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordConnection_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordConnection
nameWithType: ServerStatsCollector.RecordConnection
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection(System.Int32)
name: RecordDisconnection(int)
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordDisconnection_System_Int32_
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection(System.Int32)
name.vb: RecordDisconnection(Integer)
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection(int)
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection(Integer)
nameWithType: ServerStatsCollector.RecordDisconnection(int)
nameWithType.vb: ServerStatsCollector.RecordDisconnection(Integer)
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection*
name: RecordDisconnection
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordDisconnection_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordDisconnection
nameWithType: ServerStatsCollector.RecordDisconnection
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick
name: RecordKick()
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordKick
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick()
nameWithType: ServerStatsCollector.RecordKick()
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick*
name: RecordKick
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordKick_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordKick
nameWithType: ServerStatsCollector.RecordKick
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline(System.Int32)
name: RecordOnline(int)
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordOnline_System_Int32_
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline(System.Int32)
name.vb: RecordOnline(Integer)
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline(int)
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline(Integer)
nameWithType: ServerStatsCollector.RecordOnline(int)
nameWithType.vb: ServerStatsCollector.RecordOnline(Integer)
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline*
name: RecordOnline
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_RecordOnline_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.RecordOnline
nameWithType: ServerStatsCollector.RecordOnline
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset(System.Int32)
name: SnapshotAndReset(int)
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_SnapshotAndReset_System_Int32_
commentId: M:EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset(System.Int32)
name.vb: SnapshotAndReset(Integer)
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset(int)
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset(Integer)
nameWithType: ServerStatsCollector.SnapshotAndReset(int)
nameWithType.vb: ServerStatsCollector.SnapshotAndReset(Integer)
- uid: EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset*
name: SnapshotAndReset
href: api/server/EchoHub.Server.Services.Stats.ServerStatsCollector.html#EchoHub_Server_Services_Stats_ServerStatsCollector_SnapshotAndReset_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset
fullName: EchoHub.Server.Services.Stats.ServerStatsCollector.SnapshotAndReset
nameWithType: ServerStatsCollector.SnapshotAndReset
- uid: EchoHub.Server.Services.Stats.ServerStatsReportService
name: ServerStatsReportService
href: api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html
commentId: T:EchoHub.Server.Services.Stats.ServerStatsReportService
fullName: EchoHub.Server.Services.Stats.ServerStatsReportService
nameWithType: ServerStatsReportService
- uid: EchoHub.Server.Services.Stats.ServerStatsReportService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.Stats.ServerStatsCollector,EchoHub.Server.Config.StatsOptions,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.Stats.ServerStatsReportService})
name: ServerStatsReportService(IServiceScopeFactory, PresenceTracker, ServerStatsCollector, StatsOptions, ILogger<ServerStatsReportService>)
href: api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html#EchoHub_Server_Services_Stats_ServerStatsReportService__ctor_Microsoft_Extensions_DependencyInjection_IServiceScopeFactory_EchoHub_Server_Services_PresenceTracker_EchoHub_Server_Services_Stats_ServerStatsCollector_EchoHub_Server_Config_StatsOptions_Microsoft_Extensions_Logging_ILogger_EchoHub_Server_Services_Stats_ServerStatsReportService__
commentId: M:EchoHub.Server.Services.Stats.ServerStatsReportService.#ctor(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory,EchoHub.Server.Services.PresenceTracker,EchoHub.Server.Services.Stats.ServerStatsCollector,EchoHub.Server.Config.StatsOptions,Microsoft.Extensions.Logging.ILogger{EchoHub.Server.Services.Stats.ServerStatsReportService})
name.vb: New(IServiceScopeFactory, PresenceTracker, ServerStatsCollector, StatsOptions, ILogger(Of ServerStatsReportService))
fullName: EchoHub.Server.Services.Stats.ServerStatsReportService.ServerStatsReportService(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, EchoHub.Server.Services.Stats.ServerStatsCollector, EchoHub.Server.Config.StatsOptions, Microsoft.Extensions.Logging.ILogger<EchoHub.Server.Services.Stats.ServerStatsReportService>)
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsReportService.New(Microsoft.Extensions.DependencyInjection.IServiceScopeFactory, EchoHub.Server.Services.PresenceTracker, EchoHub.Server.Services.Stats.ServerStatsCollector, EchoHub.Server.Config.StatsOptions, Microsoft.Extensions.Logging.ILogger(Of EchoHub.Server.Services.Stats.ServerStatsReportService))
nameWithType: ServerStatsReportService.ServerStatsReportService(IServiceScopeFactory, PresenceTracker, ServerStatsCollector, StatsOptions, ILogger<ServerStatsReportService>)
nameWithType.vb: ServerStatsReportService.New(IServiceScopeFactory, PresenceTracker, ServerStatsCollector, StatsOptions, ILogger(Of ServerStatsReportService))
- uid: EchoHub.Server.Services.Stats.ServerStatsReportService.#ctor*
name: ServerStatsReportService
href: api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html#EchoHub_Server_Services_Stats_ServerStatsReportService__ctor_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsReportService.#ctor
name.vb: New
fullName: EchoHub.Server.Services.Stats.ServerStatsReportService.ServerStatsReportService
fullName.vb: EchoHub.Server.Services.Stats.ServerStatsReportService.New
nameWithType: ServerStatsReportService.ServerStatsReportService
nameWithType.vb: ServerStatsReportService.New
- uid: EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync(System.Threading.CancellationToken)
name: ExecuteAsync(CancellationToken)
href: api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html#EchoHub_Server_Services_Stats_ServerStatsReportService_ExecuteAsync_System_Threading_CancellationToken_
commentId: M:EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync(System.Threading.CancellationToken)
fullName: EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync(System.Threading.CancellationToken)
nameWithType: ServerStatsReportService.ExecuteAsync(CancellationToken)
- uid: EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync*
name: ExecuteAsync
href: api/server/EchoHub.Server.Services.Stats.ServerStatsReportService.html#EchoHub_Server_Services_Stats_ServerStatsReportService_ExecuteAsync_
commentId: Overload:EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync
fullName: EchoHub.Server.Services.Stats.ServerStatsReportService.ExecuteAsync
nameWithType: ServerStatsReportService.ExecuteAsync
- uid: EchoHub.Server.Services.Stats.StatsCounters
name: StatsCounters
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html
commentId: T:EchoHub.Server.Services.Stats.StatsCounters
fullName: EchoHub.Server.Services.Stats.StatsCounters
nameWithType: StatsCounters
- uid: EchoHub.Server.Services.Stats.StatsCounters.#ctor(System.Int64,System.Int64,System.Int64,System.Int64,System.Int32)
name: StatsCounters(long, long, long, long, int)
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters__ctor_System_Int64_System_Int64_System_Int64_System_Int64_System_Int32_
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.#ctor(System.Int64,System.Int64,System.Int64,System.Int64,System.Int32)
name.vb: New(Long, Long, Long, Long, Integer)
fullName: EchoHub.Server.Services.Stats.StatsCounters.StatsCounters(long, long, long, long, int)
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.New(Long, Long, Long, Long, Integer)
nameWithType: StatsCounters.StatsCounters(long, long, long, long, int)
nameWithType.vb: StatsCounters.New(Long, Long, Long, Long, Integer)
- uid: EchoHub.Server.Services.Stats.StatsCounters.#ctor*
name: StatsCounters
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters__ctor_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.#ctor
name.vb: New
fullName: EchoHub.Server.Services.Stats.StatsCounters.StatsCounters
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.New
nameWithType: StatsCounters.StatsCounters
nameWithType.vb: StatsCounters.New
- uid: EchoHub.Server.Services.Stats.StatsCounters.Bans
name: Bans
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Bans
commentId: P:EchoHub.Server.Services.Stats.StatsCounters.Bans
fullName: EchoHub.Server.Services.Stats.StatsCounters.Bans
nameWithType: StatsCounters.Bans
- uid: EchoHub.Server.Services.Stats.StatsCounters.Bans*
name: Bans
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Bans_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.Bans
fullName: EchoHub.Server.Services.Stats.StatsCounters.Bans
nameWithType: StatsCounters.Bans
- uid: EchoHub.Server.Services.Stats.StatsCounters.Connections
name: Connections
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Connections
commentId: P:EchoHub.Server.Services.Stats.StatsCounters.Connections
fullName: EchoHub.Server.Services.Stats.StatsCounters.Connections
nameWithType: StatsCounters.Connections
- uid: EchoHub.Server.Services.Stats.StatsCounters.Connections*
name: Connections
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Connections_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.Connections
fullName: EchoHub.Server.Services.Stats.StatsCounters.Connections
nameWithType: StatsCounters.Connections
- uid: EchoHub.Server.Services.Stats.StatsCounters.Deconstruct(System.Int64@,System.Int64@,System.Int64@,System.Int64@,System.Int32@)
name: Deconstruct(out long, out long, out long, out long, out int)
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Deconstruct_System_Int64__System_Int64__System_Int64__System_Int64__System_Int32__
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.Deconstruct(System.Int64@,System.Int64@,System.Int64@,System.Int64@,System.Int32@)
name.vb: Deconstruct(Long, Long, Long, Long, Integer)
fullName: EchoHub.Server.Services.Stats.StatsCounters.Deconstruct(out long, out long, out long, out long, out int)
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.Deconstruct(Long, Long, Long, Long, Integer)
nameWithType: StatsCounters.Deconstruct(out long, out long, out long, out long, out int)
nameWithType.vb: StatsCounters.Deconstruct(Long, Long, Long, Long, Integer)
- uid: EchoHub.Server.Services.Stats.StatsCounters.Deconstruct*
name: Deconstruct
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Deconstruct_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.Deconstruct
fullName: EchoHub.Server.Services.Stats.StatsCounters.Deconstruct
nameWithType: StatsCounters.Deconstruct
- uid: EchoHub.Server.Services.Stats.StatsCounters.Disconnections
name: Disconnections
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Disconnections
commentId: P:EchoHub.Server.Services.Stats.StatsCounters.Disconnections
fullName: EchoHub.Server.Services.Stats.StatsCounters.Disconnections
nameWithType: StatsCounters.Disconnections
- uid: EchoHub.Server.Services.Stats.StatsCounters.Disconnections*
name: Disconnections
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Disconnections_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.Disconnections
fullName: EchoHub.Server.Services.Stats.StatsCounters.Disconnections
nameWithType: StatsCounters.Disconnections
- uid: EchoHub.Server.Services.Stats.StatsCounters.Equals(EchoHub.Server.Services.Stats.StatsCounters)
name: Equals(StatsCounters)
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Equals_EchoHub_Server_Services_Stats_StatsCounters_
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.Equals(EchoHub.Server.Services.Stats.StatsCounters)
fullName: EchoHub.Server.Services.Stats.StatsCounters.Equals(EchoHub.Server.Services.Stats.StatsCounters)
nameWithType: StatsCounters.Equals(StatsCounters)
- uid: EchoHub.Server.Services.Stats.StatsCounters.Equals(System.Object)
name: Equals(object)
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Equals_System_Object_
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.Equals(System.Object)
name.vb: Equals(Object)
fullName: EchoHub.Server.Services.Stats.StatsCounters.Equals(object)
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.Equals(Object)
nameWithType: StatsCounters.Equals(object)
nameWithType.vb: StatsCounters.Equals(Object)
- uid: EchoHub.Server.Services.Stats.StatsCounters.Equals*
name: Equals
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Equals_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.Equals
fullName: EchoHub.Server.Services.Stats.StatsCounters.Equals
nameWithType: StatsCounters.Equals
- uid: EchoHub.Server.Services.Stats.StatsCounters.GetHashCode
name: GetHashCode()
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_GetHashCode
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.GetHashCode
fullName: EchoHub.Server.Services.Stats.StatsCounters.GetHashCode()
nameWithType: StatsCounters.GetHashCode()
- uid: EchoHub.Server.Services.Stats.StatsCounters.GetHashCode*
name: GetHashCode
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_GetHashCode_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.GetHashCode
fullName: EchoHub.Server.Services.Stats.StatsCounters.GetHashCode
nameWithType: StatsCounters.GetHashCode
- uid: EchoHub.Server.Services.Stats.StatsCounters.Kicks
name: Kicks
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Kicks
commentId: P:EchoHub.Server.Services.Stats.StatsCounters.Kicks
fullName: EchoHub.Server.Services.Stats.StatsCounters.Kicks
nameWithType: StatsCounters.Kicks
- uid: EchoHub.Server.Services.Stats.StatsCounters.Kicks*
name: Kicks
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_Kicks_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.Kicks
fullName: EchoHub.Server.Services.Stats.StatsCounters.Kicks
nameWithType: StatsCounters.Kicks
- uid: EchoHub.Server.Services.Stats.StatsCounters.PeakOnline
name: PeakOnline
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_PeakOnline
commentId: P:EchoHub.Server.Services.Stats.StatsCounters.PeakOnline
fullName: EchoHub.Server.Services.Stats.StatsCounters.PeakOnline
nameWithType: StatsCounters.PeakOnline
- uid: EchoHub.Server.Services.Stats.StatsCounters.PeakOnline*
name: PeakOnline
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_PeakOnline_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.PeakOnline
fullName: EchoHub.Server.Services.Stats.StatsCounters.PeakOnline
nameWithType: StatsCounters.PeakOnline
- uid: EchoHub.Server.Services.Stats.StatsCounters.ToString
name: ToString()
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_ToString
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.ToString
fullName: EchoHub.Server.Services.Stats.StatsCounters.ToString()
nameWithType: StatsCounters.ToString()
- uid: EchoHub.Server.Services.Stats.StatsCounters.ToString*
name: ToString
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_ToString_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.ToString
fullName: EchoHub.Server.Services.Stats.StatsCounters.ToString
nameWithType: StatsCounters.ToString
- uid: EchoHub.Server.Services.Stats.StatsCounters.op_Equality(EchoHub.Server.Services.Stats.StatsCounters,EchoHub.Server.Services.Stats.StatsCounters)
name: operator ==(StatsCounters, StatsCounters)
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_op_Equality_EchoHub_Server_Services_Stats_StatsCounters_EchoHub_Server_Services_Stats_StatsCounters_
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.op_Equality(EchoHub.Server.Services.Stats.StatsCounters,EchoHub.Server.Services.Stats.StatsCounters)
name.vb: =(StatsCounters, StatsCounters)
fullName: EchoHub.Server.Services.Stats.StatsCounters.operator ==(EchoHub.Server.Services.Stats.StatsCounters, EchoHub.Server.Services.Stats.StatsCounters)
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.=(EchoHub.Server.Services.Stats.StatsCounters, EchoHub.Server.Services.Stats.StatsCounters)
nameWithType: StatsCounters.operator ==(StatsCounters, StatsCounters)
nameWithType.vb: StatsCounters.=(StatsCounters, StatsCounters)
- uid: EchoHub.Server.Services.Stats.StatsCounters.op_Equality*
name: operator ==
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_op_Equality_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.op_Equality
name.vb: =
fullName: EchoHub.Server.Services.Stats.StatsCounters.operator ==
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.=
nameWithType: StatsCounters.operator ==
nameWithType.vb: StatsCounters.=
- uid: EchoHub.Server.Services.Stats.StatsCounters.op_Inequality(EchoHub.Server.Services.Stats.StatsCounters,EchoHub.Server.Services.Stats.StatsCounters)
name: operator !=(StatsCounters, StatsCounters)
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_op_Inequality_EchoHub_Server_Services_Stats_StatsCounters_EchoHub_Server_Services_Stats_StatsCounters_
commentId: M:EchoHub.Server.Services.Stats.StatsCounters.op_Inequality(EchoHub.Server.Services.Stats.StatsCounters,EchoHub.Server.Services.Stats.StatsCounters)
name.vb: <>(StatsCounters, StatsCounters)
fullName: EchoHub.Server.Services.Stats.StatsCounters.operator !=(EchoHub.Server.Services.Stats.StatsCounters, EchoHub.Server.Services.Stats.StatsCounters)
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.<>(EchoHub.Server.Services.Stats.StatsCounters, EchoHub.Server.Services.Stats.StatsCounters)
nameWithType: StatsCounters.operator !=(StatsCounters, StatsCounters)
nameWithType.vb: StatsCounters.<>(StatsCounters, StatsCounters)
- uid: EchoHub.Server.Services.Stats.StatsCounters.op_Inequality*
name: operator !=
href: api/server/EchoHub.Server.Services.Stats.StatsCounters.html#EchoHub_Server_Services_Stats_StatsCounters_op_Inequality_
commentId: Overload:EchoHub.Server.Services.Stats.StatsCounters.op_Inequality
name.vb: <>
fullName: EchoHub.Server.Services.Stats.StatsCounters.operator !=
fullName.vb: EchoHub.Server.Services.Stats.StatsCounters.<>
nameWithType: StatsCounters.operator !=
nameWithType.vb: StatsCounters.<>
- uid: EchoHub.Server.Services.UserService
name: UserService
href: api/server/EchoHub.Server.Services.UserService.html