#region Namespace using System; using System.Diagnostics; using com.itac.mes.proxy.business; using com.itac.mes.tools; using www.siplace.com.OIB._2015._10.LineControlServer.Contracts.Data; using AsmNamespace = www.siplace.com.OIB._2015._10.LineControlServer.Contracts.Data; using Constants = com.itac.mes.tools.Constants; using MesNamespace = com.itac.oib.linecontrol.contracts.data; using OibClient = Asm.As.Oib.Client; #endregion namespace Itac.Oib { /// /// Receiver class for the TraceService events /// public class LineControlMesInterceptorReceiver : IDisposable, IReceiver { #region Fields OIBEventHandler _eventHandler; readonly OibClient.OibLineControlMesInterceptorEvents _oibLineControlMesInterceptorEvents; #endregion #region construtor/destructor public LineControlMesInterceptorReceiver(OibClient.OibLineControlMesInterceptorEvents oibLineControlMesInterceptorEvents, OIBEventHandler eventHandler) { if (oibLineControlMesInterceptorEvents == null) throw new ArgumentNullException("oibLineControlMesInterceptorEvents"); if (eventHandler == null) throw new ArgumentNullException("eventHandler"); this._oibLineControlMesInterceptorEvents = oibLineControlMesInterceptorEvents; this._eventHandler = eventHandler; _oibLineControlMesInterceptorEvents.Ping = Ping; _oibLineControlMesInterceptorEvents.VerifyPcbForAutoProgramDownload = VerifyPcbForAutoProgramDownload; _oibLineControlMesInterceptorEvents.VerifyRecipeActivationOnDekPrinter = VerifyRecipeActivationOnDekPrinter; _oibLineControlMesInterceptorEvents.VerifyRecipeDownload = VerifyRecipeDownload; _oibLineControlMesInterceptorEvents.VerifyRecipeForAutoProgramDownload = VerifyRecipeForAutoProgramDownload; _oibLineControlMesInterceptorEvents.VerifyStartAutoProgramDownload = VerifyStartAutoProgramDownload; } public void Dispose() { if (_oibLineControlMesInterceptorEvents != null) { _oibLineControlMesInterceptorEvents.Dispose(); } } #endregion #region Start/Stop public void Start() { if (!_oibLineControlMesInterceptorEvents.IsStarted) { _oibLineControlMesInterceptorEvents.Start(); } } public void Stop() { _oibLineControlMesInterceptorEvents.Stop(); } #endregion #region Handling of events bool Ping() { LogHandler.log(Constants.LOGGER, TraceEventType.Verbose, "LineControlMesInterceptorReceiver.Ping"); return _eventHandler != null; } private MesVerificationResult VerifyRecipeForAutoProgramDownload(VerifyRecipeForAutoProgramDownloadRequest request) { LogHandler.log(Constants.LOGGER, TraceEventType.Information, "LineControlMesInterceptorReceiver VerifyRecipeForAutoProgramDownload called"); // map value from asm namespace to mes namespace MesNamespace.VerifyRecipeForAutoProgramDownloadRequest report = MesNamespace.VerifyRecipeForAutoProgramDownloadRequestMapper.get(request); // create return value AsmNamespace.MesVerificationResult asmResult = null; try { MesNamespace.MesVerificationResult mesResult = _eventHandler.verifyRecipeForAutoProgramDownload(report); asmResult = MesNamespace.MesVerificationResultMapper.get(mesResult); } catch (Exception e) { asmResult = getFailureResult(e); LogHandler.log(Constants.LOGGER, TraceEventType.Information, "failed to process LineControlMesInterceptorReceiver.VerifyRecipeForAutoProgramDownload", e); } return asmResult; } private MesVerificationResult VerifyStartAutoProgramDownload(VerifyRecipeForAutoProgramDownloadRequest request) { LogHandler.log(Constants.LOGGER, TraceEventType.Information, "LineControlMesInterceptorReceiver VerifyStartAutoProgramDownload called"); // map value from asm namespace to mes namespace MesNamespace.VerifyRecipeForAutoProgramDownloadRequest report = MesNamespace.VerifyRecipeForAutoProgramDownloadRequestMapper.get(request); AsmNamespace.MesVerificationResult asmResult = null; try { MesNamespace.MesVerificationResult mesResult = _eventHandler.verifyStartAutoProgramDownload(report); asmResult = MesNamespace.MesVerificationResultMapper.get(mesResult); } catch (Exception e) { asmResult = getFailureResult(e); LogHandler.log(Constants.LOGGER, TraceEventType.Information, "failed to process LineControlMesInterceptorReceiver.VerifyStartAutoProgramDownload", e); } return asmResult; } private MesVerificationResult VerifyRecipeDownload(VerifyRecipeDownloadRequest request) { LogHandler.log(Constants.LOGGER, TraceEventType.Information, "LineControlMesInterceptorReceiver VerifyRecipeDownload called"); // map value from asm namespace to mes namespace MesNamespace.VerifyRecipeDownloadRequest report = MesNamespace.VerifyRecipeDownloadRequestMapper.get(request); AsmNamespace.MesVerificationResult asmResult = null; try { MesNamespace.MesVerificationResult mesResult = _eventHandler.verifyRecipeDownload(report); asmResult = MesNamespace.MesVerificationResultMapper.get(mesResult); } catch (Exception e) { asmResult = getFailureResult(e); LogHandler.log(Constants.LOGGER, TraceEventType.Information, "failed to process LineControlMesInterceptorReceiver.VerifyRecipeDownload", e); } return asmResult; } private MesVerificationResult VerifyRecipeActivationOnDekPrinter(VerifyRecipeActivationOnDekPrinterRequest request) { LogHandler.log(Constants.LOGGER, TraceEventType.Information, "LineControlMesInterceptorReceiver VerifyRecipeActivationOnDekPrinterRequest called"); // map value from asm namespace to mes namespace MesNamespace.VerifyRecipeActivationOnDekPrinterRequest report = MesNamespace.VerifyRecipeActivationOnDekPrinterRequestMapper.get(request); AsmNamespace.MesVerificationResult asmResult = null; try { MesNamespace.MesVerificationResult mesResult = _eventHandler.verifyRecipeActivationOnDekPrinter(report); asmResult = MesNamespace.MesVerificationResultMapper.get(mesResult); } catch (Exception e) { asmResult = getFailureResult(e); LogHandler.log(Constants.LOGGER, TraceEventType.Information, "failed to process LineControlMesInterceptorReceiver.VerifyRecipeActivationOnDekPrinterRequest", e); } return asmResult; } private MesVerificationResult VerifyPcbForAutoProgramDownload(VerifyPcbForAutoProgramDownloadRequest request) { LogHandler.log(Constants.LOGGER, TraceEventType.Information, "LineControlMesInterceptorReceiver VerifyPcbForAutoProgramDownloadRequest called"); // map value from asm namespace to mes namespace MesNamespace.VerifyPcbForAutoProgramDownloadRequest report = MesNamespace.VerifyPcbForAutoProgramDownloadRequestMapper.get(request); AsmNamespace.MesVerificationResult asmResult = null; try { MesNamespace.MesVerificationResult mesResult = _eventHandler.verifyPcbForAutoProgramDownload(report); asmResult = MesNamespace.MesVerificationResultMapper.get(mesResult); } catch (Exception e) { asmResult = getFailureResult(e); LogHandler.log(Constants.LOGGER, TraceEventType.Information, "failed to process LineControlMesInterceptorReceiver.VerifyPcbForAutoProgramDownloadRequest", e); } return asmResult; } private AsmNamespace.MesVerificationResult getFailureResult(Exception e) { MesVerificationResult result = new MesVerificationResult(); result.VerificationResult = 2; // 0=OK, 1=Rejected, 2=Error result.Reason = e.Message; return result; } #endregion } }