# AyCode.Models.Server @project { type = "framework" } 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 |