@ -14,12 +14,12 @@ namespace MediaBrowser.Controller.SyncPlay
public class GroupInfo
{
/// <summary>
/// Gets t he default ping value used for sessions.
/// T he default ping value used for sessions.
/// </summary>
public long DefaultPing { get ; } = 500 ;
public const long DefaultPing = 500 ;
/// <summary>
/// Gets or sets the group identifier.
/// Gets the group identifier.
/// </summary>
/// <value>The group identifier.</value>
public Guid GroupId { get ; } = Guid . NewGuid ( ) ;
@ -58,7 +58,8 @@ namespace MediaBrowser.Controller.SyncPlay
/// <summary>
/// Checks if a session is in this group.
/// </summary>
/// <value><c>true</c> if the session is in this group; <c>false</c> otherwise.</value>
/// <param name="sessionId">The session id to check.</param>
/// <returns><c>true</c> if the session is in this group; <c>false</c> otherwise.</returns>
public bool ContainsSession ( string sessionId )
{
return Participants . ContainsKey ( sessionId ) ;
@ -70,16 +71,14 @@ namespace MediaBrowser.Controller.SyncPlay
/// <param name="session">The session.</param>
public void AddSession ( SessionInfo session )
{
if ( ContainsSession ( session . Id ) )
Participants . TryAdd (
session . Id ,
new GroupMember
{
return ;
}
var member = new GroupMember ( ) ;
member . Session = session ;
member . Ping = DefaultPing ;
member . IsBuffering = false ;
Participants [ session . Id ] = member ;
Session = session ,
Ping = DefaultPing ,
IsBuffering = false
} ) ;
}
/// <summary>
@ -88,12 +87,7 @@ namespace MediaBrowser.Controller.SyncPlay
/// <param name="session">The session.</param>
public void RemoveSession ( SessionInfo session )
{
if ( ! ContainsSession ( session . Id ) )
{
return ;
}
Participants . Remove ( session . Id , out _ ) ;
Participants . Remove ( session . Id ) ;
}
/// <summary>
@ -103,18 +97,16 @@ namespace MediaBrowser.Controller.SyncPlay
/// <param name="ping">The ping.</param>
public void UpdatePing ( SessionInfo session , long ping )
{
if ( ! ContainsSession ( session . Id ) )
if ( Participants . TryGetValue ( session . Id , out GroupMember value ) )
{
return ;
value. Ping = ping ;
}
Participants [ session . Id ] . Ping = ping ;
}
/// <summary>
/// Gets the highest ping in the group.
/// </summary>
/// < value name="session">The highest ping in the group.</value >
/// < returns>The highest ping in the group.</returns >
public long GetHighestPing ( )
{
long max = long . MinValue ;
@ -133,18 +125,16 @@ namespace MediaBrowser.Controller.SyncPlay
/// <param name="isBuffering">The state.</param>
public void SetBuffering ( SessionInfo session , bool isBuffering )
{
if ( ! ContainsSession ( session . Id ) )
if ( Participants . TryGetValue ( session . Id , out GroupMember value ) )
{
return ;
value. IsBuffering = isBuffering ;
}
Participants [ session . Id ] . IsBuffering = isBuffering ;
}
/// <summary>
/// Gets the group buffering state.
/// </summary>
/// < value ><c>true</c> if there is a session buffering in the group; <c>false</c> otherwise.</value >
/// < returns ><c>true</c> if there is a session buffering in the group; <c>false</c> otherwise.</returns >
public bool IsBuffering ( )
{
foreach ( var session in Participants . Values )
@ -161,7 +151,7 @@ namespace MediaBrowser.Controller.SyncPlay
/// <summary>
/// Checks if the group is empty.
/// </summary>
/// < value><c>true</c> if the group is empty; <c>false</c> otherwise.</value >
/// < returns><c>true</c> if the group is empty; <c>false</c> otherwise.</returns >
public bool IsEmpty ( )
{
return Participants . Count = = 0 ;