38 lines
1.8 KiB
Markdown
38 lines
1.8 KiB
Markdown
# AyCode.Models.Server
|
|
|
|
Server-side models: authentication state and dynamic method dispatch for SignalR message routing.
|
|
|
|
## Folder Structure
|
|
|
|
| Folder | Purpose |
|
|
|---|---|
|
|
| `Logins/` | Server-side logged-in user model |
|
|
| `DynamicMethods/` | Reflection-based method registry for SignalR message tag routing |
|
|
|
|
## Key Files
|
|
|
|
### Logins/
|
|
- **`AcLoggedInModelServer.cs`** — Implements `IAcLoggedInModelBase<...>`. Tracks `LoggedInUser`, `AccessToken`, `LoginErrorCode`. Methods: `AddLoggedInUser()`, `Logout()`.
|
|
|
|
### DynamicMethods/
|
|
- **`AcMethodInfoModel.cs`** — Wraps a `MethodInfo` + its `TagAttribute` + `ParameterInfo[]`. Generic over `TAttribute : TagAttribute`.
|
|
- **`AcDynamicMethodCallModel.cs`** — Binds an object instance to its attributed methods. Static `ConcurrentDictionary` + `FrozenDictionary` cache — reflection runs once per type. Lookup by `MessageTag` (int).
|
|
- **`AcDynamicMethodRegistry.cs`** — Per-request registry for dynamic method dispatch. `Register()` stores instances, `GetMethodByMessageTag()` resolves method + instance with lazy search and static cache. Optimized for small instance counts (array-backed, no List).
|
|
|
|
## Dependencies
|
|
|
|
| Dependency | Purpose |
|
|
|---|---|
|
|
| `AyCode.Core` | Error codes |
|
|
| `AyCode.Core.Server` | Server-side core |
|
|
| `AyCode.Entities` | Entity base classes |
|
|
| `AyCode.Entities.Server` | Server entities |
|
|
| `AyCode.Interfaces` | Interface contracts |
|
|
| `AyCode.Interfaces.Server` | `IAcLoggedInModelBase` |
|
|
| `AyCode.Models` | Shared models |
|
|
| `AyCode.Services` | `TagAttribute` for SignalR method tagging |
|
|
|
|
---
|
|
|
|
> **LLM Maintenance:** If you modify code in this folder, update this README to reflect the changes. If you notice the README content does not match the current code, automatically update the README to match the code.
|