pub struct ServerCapabilities {
pub version: Option<ServerVersion>,
pub generation: ServerGeneration,
pub user_scoped_item_routes: bool,
pub honours_directplay_audio_codec: bool,
pub supports_manifest_container_direct_play: bool,
pub image_endpoint_upscales: bool,
}Expand description
The resolved answer, carried by OnlineRepository for the life of a
connection.
Fields§
§version: Option<ServerVersion>§generation: ServerGeneration§user_scoped_item_routes: boolWhether item queries go to /Users/{userId}/Items (true) or to
/Items?userId= (false).
true for every generation, and deliberately so. The whole
/Users/{userId}/… family still exists and still works in 12.0 — only
six routes were removed anywhere, and the only user-scoped one is
POST /Users/{userId}/EasyPassword, which this client never called.
What did change is policy: the family has carried [Obsolete] and been
hidden from the OpenAPI spec since 10.11.5, and 12.0 states in writing
that unspecified endpoints “can be removed in any major release without
warning”. The replacements (/Items?userId= and friends) already exist
on 10.11.5, so migrating is a one-generation-compatible change whenever
it is wanted — which is why the route table carries both shapes even
though nothing selects the second one yet. See DR-282.
honours_directplay_audio_codec: boolWhether the server honours the audio codec in a submitted
DirectPlayProfile.
false on 10.11.5: it enforces the profile’s container and video codec
but ignores its audio codec, so it offers direct play for an E-AC-3 track
the renderer cannot decode and the picture plays in silence. The client
therefore has to overrule the server’s own direct-play offer. See
device_profile::audio_forces_transcode and DR-283.
Still false on 12.x, and that is an admission rather than a finding.
A source-level diff of 12.0 could not establish whether the underlying
behaviour changed; it established only that 12.0 reports codec
mismatches in TranscodeReasons which 10.11.5 omitted, which is not the
same claim. Keeping the override on costs a transcode that might not be
needed; turning it off on a guess costs silent playback. Flip it only
against a running 12.x server.
supports_manifest_container_direct_play: boolWhether a source whose container is a manifest (hls, applehttp,
dash) may be direct-played. 12.0 makes such sources ineligible; on
10.11.x they were eligible, which is what this client has assumed.
image_endpoint_upscales: boolWhether asking the image endpoint for a size larger than the stored image returns that size. 10.11.x upscaled; 12.0 returns the original instead. Governs layout expectation only — a smaller image is never an error.
Implementations§
Source§impl ServerCapabilities
impl ServerCapabilities
Sourcepub fn for_version(version: Option<ServerVersion>) -> Self
pub fn for_version(version: Option<ServerVersion>) -> Self
The single place a version becomes behaviour. Nothing else in the crate compares a version number.
Sourcepub fn from_reported(raw_version: &str) -> Self
pub fn from_reported(raw_version: &str) -> Self
Resolve straight from what the server reported.
Sourcepub fn assumed() -> Self
pub fn assumed() -> Self
What this build assumes with no server to ask — the current target. Used by offline paths and by tests that do not care.
Sourcepub fn is_below_supported_floor(&self) -> bool
pub fn is_below_supported_floor(&self) -> bool
Whether the server is old enough that failure is certain rather than likely. An unparseable version is never below the floor: we do not refuse a server on the strength of not understanding its version string.
Trait Implementations§
Source§impl Clone for ServerCapabilities
impl Clone for ServerCapabilities
Source§fn clone(&self) -> ServerCapabilities
fn clone(&self) -> ServerCapabilities
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ServerCapabilities
impl Debug for ServerCapabilities
Source§impl Default for ServerCapabilities
impl Default for ServerCapabilities
Source§impl PartialEq for ServerCapabilities
impl PartialEq for ServerCapabilities
Source§fn eq(&self, other: &ServerCapabilities) -> bool
fn eq(&self, other: &ServerCapabilities) -> bool
self and other values to be equal, and is used by ==.impl Eq for ServerCapabilities
impl StructuralPartialEq for ServerCapabilities
Auto Trait Implementations§
impl Freeze for ServerCapabilities
impl RefUnwindSafe for ServerCapabilities
impl Send for ServerCapabilities
impl Sync for ServerCapabilities
impl Unpin for ServerCapabilities
impl UnsafeUnpin for ServerCapabilities
impl UnwindSafe for ServerCapabilities
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.