Files
2025-06-06 09:15:13 +02:00

156 lines
7.2 KiB
C#

#region Namespace
using System;
using System.Diagnostics;
using com.itac.mes.tools;
using com.itac.mes.proxy.business;
using OibClient = Asm.As.Oib.Client;
using com.itac.oib.client.customextensions;
#endregion
namespace Itac.Oib
{
/// <summary>
/// Receiver class for the TraceService events
/// </summary>
public class BoardGateKeeperReceiver : IDisposable, IReceiver
{
#region Fields
OIBEventHandler _eventHandler;
readonly OibClient.OibBoardGateKeeperEvents _oibBoardGateKeeperEvents;
public BoardGateKeeperReceiver(OibClient.OibBoardGateKeeperEvents oibBoardGateKeeperEvents,
OIBEventHandler eventHandler)
{
if (oibBoardGateKeeperEvents == null) throw new ArgumentNullException("oibBoardGateKeeperEvents");
if (eventHandler == null) throw new ArgumentNullException("eventHandler");
this._oibBoardGateKeeperEvents = oibBoardGateKeeperEvents;
this._eventHandler = eventHandler;
_oibBoardGateKeeperEvents.Ping = Ping;
}
#endregion
#region Start/Stop
public void Start()
{
_oibBoardGateKeeperEvents.Start();
}
public void Stop()
{
_oibBoardGateKeeperEvents.Stop();
}
#endregion
#region Handling of events
bool Ping()
{
LogHandler.log(Constants.LOGGER, TraceEventType.Verbose, "BoardGateKeeperReceiver.Ping");
return _eventHandler != null;
}
#endregion
#region IDisposeable
public void Dispose()
{
if (_oibBoardGateKeeperEvents != null) { _oibBoardGateKeeperEvents.Dispose(); }
}
#endregion
public void virtualInkspotData(OibClient.CustomExtensions.VirtualInkspotHandlerBoardRequest virtualInkspotHandlerBoardRequest)
{
try
{
LogHandler.log(Constants.LOGGER, TraceEventType.Information, "BoardGateKeeperReceiver.VirtualInkspotData");
if (_eventHandler != null)
{
com.itac.oib.client.customextensions.VirtualInkspotHandlerBoardRequest virtInkspotBoardRequest = VirtualInkspotHandlerBoardRequestMapper.get(virtualInkspotHandlerBoardRequest);
com.itac.oib.boardgatekeeper.contracts.data.BoardRequestResult itacResult = _eventHandler.virtualInkspotBoardRequest(virtInkspotBoardRequest);
// itacResult ist null: call an das DataInterface schlug fehl
if (itacResult == null)
{
// setzen default Fehlertext
virtualInkspotHandlerBoardRequest.BoardRequestResult.Reason = "no results from iTAC.MES.Suite";
virtualInkspotHandlerBoardRequest.BoardRequestResult.RequestResult = "Rejected";
for (int i = 0; i < virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates.Length; i++)
{
virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates[i].Place = false;
virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates[i].Reason = "no results from iTAC.MES.Suite";
}
}
else
{
//
// Werte in die Rückgabe kopieren;
/* virtualInkspotHandlerBoardRequest.BoardRequestResult.Reason = itacResult.getBoardRequestResult().reason;
virtualInkspotHandlerBoardRequest.BoardRequestResult.RequestResult = itacResult.getBoardRequestResult().requestResult;
if (itacResult.getBoardRequestResult().getVIHResult().getSubPanelStates() != null)
{
if (itacResult.getBoardRequestResult().getVIHResult().getSubPanelStates().Length == virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates.Length)
{
// subPanelStates kopieren
for (int i = 0; i < itacResult.getBoardRequestResult().getVIHResult().getSubPanelStates().Length; i++)
{
virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates[i].Place = itacResult.getBoardRequestResult().getVIHResult().getSubPanelStates()[i].getPlace();
virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates[i].Reason = itacResult.getBoardRequestResult().getVIHResult().getSubPanelStates()[i].getReason();
}
}
}
*/
}
return;
}
else
{
LogHandler.log(Constants.LOGGER, TraceEventType.Warning, "calling BoardGateKeeperReceiver.VirtualInkspotData not performed");
}
}
catch (Exception e)
{
// der letzte Aufruf schlug fehl!!
LogHandler.log(Constants.LOGGER, TraceEventType.Error, "calling BoardRequestResult in eventHandler failed", e);
for (int i = 0; i < virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates.Length; i++)
{
virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates[i].Place = false;
virtualInkspotHandlerBoardRequest.BoardRequestResult.VIHResult.SubPanelStates[i].Reason = e.Message;
}
}
}
// called by incoming xml files
public void virtualInkspotData(com.itac.oib.client.customextensions.VirtualInkspotHandlerBoardRequest requestData)
{
try
{
LogHandler.log(Constants.LOGGER, TraceEventType.Information, "BoardGateKeeperReceiver.VirtualInkspotData from xml-file");
if (_eventHandler != null)
{
com.itac.oib.boardgatekeeper.contracts.data.BoardRequestResult itacResult = _eventHandler.virtualInkspotBoardRequest(requestData);
// TODO: Rückgabe noch auswerten ?
// requestData.setBoardRequestResult(itacResult);
return;
}
else
{
LogHandler.log(Constants.LOGGER, TraceEventType.Warning, "calling BoardGateKeeperReceiver.VirtualInkspotData not performed");
}
}
catch (Exception e)
{
// der letzte Aufruf schlug fehl!!
LogHandler.log(Constants.LOGGER, TraceEventType.Error, "calling BoardRequestResult in eventHandler failed", e);
}
}
}
}