Document (high level) LMS architecture#138
Document (high level) LMS architecture#138audiomuze wants to merge 2 commits intoLMS-Community:mainfrom
Conversation
|
|
||
| # Lyrion Music Server (LMS) core architecture | ||
|
|
||
| This guide provides an onboarding-oriented architectural map of the **Lyrion Music Server** core codebase (historically SlimServer / Logitech Media Server). It favors a high-level mental model over exhaustive module documentation so you can navigate the codebase quickly. |
There was a problem hiding this comment.
No need to mention the history again. It's all over the place already...
There was a problem hiding this comment.
I'm sorry, wanted to start a review... sent that off too early.
michaelherger
left a comment
There was a problem hiding this comment.
Nice one! Unfortunately the AI (I assume) left some quite poetic rubbish in a few places. But overall this can become a helpful document!
Please fix all the links: pointers at code should use the HEAD reference rather than a version specific path. And other documents on the web site should be referenced to by their relative path, not on Github.
|
|
||
| ## Big picture | ||
|
|
||
| LMS is an **event-driven server** that: |
There was a problem hiding this comment.
You might want to mention that it's single-threaded, too.
|
|
||
| # Lyrion Music Server (LMS) core architecture | ||
|
|
||
| This guide provides an onboarding-oriented architectural map of the **Lyrion Music Server** core codebase (historically SlimServer / Logitech Media Server). It favors a high-level mental model over exhaustive module documentation so you can navigate the codebase quickly. |
There was a problem hiding this comment.
I'm sorry, wanted to start a review... sent that off too early.
|
|
||
| - accepts player connections over **SlimProto** (TCP 3483) | ||
| - serves a web UI plus APIs over **HTTP** (default TCP 9000) | ||
| - exposes a command/query CLI internally and externally |
There was a problem hiding this comment.
Haven’t uploaded revision yet.
| - accepts player connections over **SlimProto** (TCP 3483) | ||
| - serves a web UI plus APIs over **HTTP** (default TCP 9000) | ||
| - exposes a command/query CLI internally and externally | ||
| - maintains a library database (SQLite by default, MySQL optional) |
There was a problem hiding this comment.
Please don't mention MySQL. It's been neglected for ages, and some features wouldn't work with it any more (FTS).
| - serves a web UI plus APIs over **HTTP** (default TCP 9000) | ||
| - exposes a command/query CLI internally and externally | ||
| - maintains a library database (SQLite by default, MySQL optional) | ||
| - scans media and playlists, often through a separate scanner process |
| Physical and emulated players connect through SlimProto: | ||
|
|
||
| - listener: [Slim/Networking/Slimproto.pm](https://github.com/LMS-Community/slimserver/blob/public/9.1/Slim/Networking/Slimproto.pm) | ||
| - default port: 3483/TCP |
There was a problem hiding this comment.
Can't be changed, officially reserved for LMS/Squeezebox (see eg. https://www.speedguide.net/port.php?port=3483).
There was a problem hiding this comment.
I don't think this port can be customised. Therefore "default" is somewhat misleading.
|
|
||
| ## Library database and persistence | ||
|
|
||
| The server stores different state types in purpose-built layers. |
There was a problem hiding this comment.
I'm a bit confused: you marked this as resolved, but I don't see any change. As you did with some of the other comments. Did you forget to push your changes up to GitHub?
|
|
||
| - entry: [Slim/Schema.pm](https://github.com/LMS-Community/slimserver/blob/public/9.1/Slim/Schema.pm) | ||
| - ORM: DBIx::Class | ||
| - backends: SQLite (default) or MySQL |
Did this to help me with conceptual understanding of Lyrion's architecture. Not sure whether it'd be useful for inclusion in reference docs, use or abuse as you see fit.