#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 { /// /// Receiver class for the TraceService events /// 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); } } } }