using System;
using Wayne.Lib;
#if _SINP
using Wayne.ForecourtControl.Nfs;
#endif
namespace Wayne.ForecourtControl.Fusion
{
///
///
public interface ITwin
{
///
/// Opens or closes the station.
///
/// A user supplied object that will be returned in the requestCompleted callback
void OpenMasterAsync(EventHandler requestCompleted, object userToken);
event EventHandler OnMasterReady;
}
public static class FUSIONTwinFactory
{
private static FUSIONTwin twin = null;
public static ITwin CreateTwin(int deviceId)
{
twin = new FUSIONTwin(deviceId);
return twin;
}
public static ITwin getTwin()
{ return twin; }
}
internal class FUSIONTwin: ITwin
{
private FUSIONForecourtControl forecourtControl;
public FUSIONTwin(int deviceId)
{
if (FUSIONFactory.fusionForecourtControlList.ContainsKey(deviceId))
this.forecourtControl = (FUSIONForecourtControl)(FUSIONFactory.fusionForecourtControlList[deviceId]);
}
public event EventHandler OnMasterReady;
internal void FireOnTwinMasterReady()
{
try
{
if (this.OnMasterReady != null)
{
Trace.WriteLine("init FireOnTwinMasterReady");
this.OnMasterReady(this, EventArgs.Empty);
Trace.WriteLine("end FireOnTwinMasterReady");
}
else
Trace.WriteLine("FireOnTwinMasterReady - OnMasterReady is null");
}
catch(Exception ex)
{
Trace.WriteLine(string.Format("EXCEPTION! Stack chiamate: {0} Messaggio: {1}", ex.StackTrace, ex.Message));
}
}
public void OpenMasterAsync(EventHandler requestCompleted, object userToken)
{
this.forecourtControl.manager.ifsfManager.TwinOpenMaster(requestCompleted, userToken, this);
}
}
}