using System;
using System.Collections.Generic;
using Aurora.Proto.Party;
namespace Aurora.Services.EventManager
{
public interface IEventManager
{
///
/// Get the list of event type subscriptions for a given sessionIdentifier id.
///
/// sessionIdentifier Id
///
List GetSubscriptionList(string sessionIdentifier);
///
/// Get the number of event subscriptions for a given sessionIdentifier
///
/// sessionIdentifier Id
///
int GetSubscriptionCount(string sessionIdentifier);
///
/// Add a new subscription
///
///
///
bool AddSubscription(string sessionIdentifier, EventType type);
///
/// Add a list of subscriptions. This unsubscribes from unused events.
///
/// The browser sessionIdentifier id.
/// The list of event types to subscribe to.
void AddSubscriptionList(string sessionIdentifier, List types);
///
/// Unsubscribe from a given event type.
///
/// sessionIdentifier Id
/// Event Type to be removed
void RemoveSubscription(string sessionIdentifier, EventType type);
void RemoveSubscriptionList(string sessionIdentifier, List types);
///
/// Remove all subscriptons for a given sessionIdentifier.
///
/// sessionIdentifier Id
void RemoveAllSubscriptions(string sessionIdentifier);
void AddEventHandler(Action action, Action cancel, string sessionIdentifierId);
void RemoveEventHandler(string sessionIdentifierId);
void CancelEventStream(string sessionIdentifierId);
void FireEvent(BaseEvent bEvent);
}
}