using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Threading.Tasks;
using gehGassi.Dto.Messages;
namespace gehGassi.Web.Hubs
{
///
/// Schnittstellenbeschreibung für einen Hub der verbundene Benutzer verwalten kann
///
public interface IAppHubUsers
{
public ConcurrentDictionary> ConnectedUsers { get; set; }
}
///
/// Schnittstellenbeschreibung für einen Hub der App-Nachrichten ermöglicht
///
public interface IAppHub
{
///
/// Buchen der Events eines App-Users
///
/// ID des App-Users
/// Task
Task JoinAppUser(string appUserId);
///
/// Abbsestellen der Events eines App-Users
///
/// ID des App-Users
/// Task
Task LeaveAppUser(string appUserId);
///
/// Buchen der Events einer Konversation für einen Benutzer
///
/// Id der Konversation
/// ID des App-Users
/// Task
Task JoinConversation(string conversationId, string appUserId);
///
/// Abbsestellen der Events einer Konversation
///
/// Id der Konversation
/// ID des App-Users
/// Task
Task LeaveConversation(string conversationId, string appUserId);
}
///
/// Schnittstellenbeschreibung für einen Service der den Versand von SignalR-Nachrichten
/// vom Server an die App ermöglicht.
///
public interface IAppHubSender
{
///
/// Senden eine Nachricht an einen Benutzer
///
/// Benutzer - email
/// Nachricht
/// Task
Task MessageForUser(string user, string message);
#region App-User
///
/// Event wenn sich die Daten eines App-Users geändert haben
///
/// Id des App-Users
/// Liste Benutzer die ignoriert werden soll
/// Task
Task AppUserChangedAsync(string appUserId, List ignoreUsers = null);
///
/// Gibt zurück ob ein Benutzer verbunden ist
///
/// Benutzername
/// true wenn verbunden, false sonst
Task IsUserConnectedAsync(string userName);
///
/// Event wenn sich ein Benutzer ausloggen soll
///
/// Id des App-Users
///
Task LogoutAsync(string appUserId);
#endregion
#region Conversations & Messages
///
/// Event wenn eine Nachricht für einen Benutzer angekommen ist
///
///
///
Task MessageAddedAsync(string appUserId);
///
/// Event wenn eine Nachricht für einen Benutzer angekommen ist
///
///
///
Task SystemMessageAddedAsync(string appUserId);
#endregion
#region News & Newscategories
///
/// Event wenn sich NewsKategorien geändert haben
///
/// Liste Benutzer die ignoriert werden soll
///
Task NewsCategoriesChangedAsync(List ignoreUsers = null);
#endregion
}
}