public void Decode(String Id, String TKMsgIn, out uint TKResult, out String TKMsgOut) { lock (Lock) { //Cancel any pending operations tk.Cancel(); TKResult = (uint)TicketingKernel.Result.GENERAL_ERROR; TKMsgOut = ""; if (JobId != Id) { return; } Console.Write(string.Format("########## TKCommand IN:\n{0}\n", TKMsgIn)); bool ok = tk.Command(TKMsgIn, out TKMsgOut, TKCallback); Console.Write(string.Format("########## TKCommand OUT: {0}\n{1}\n", (ok ? "OK" : "ERROR!"), TKMsgOut)); if (ok) { TKResult = (uint)TicketingKernel.Result.OK; } if (MasterRef != null) { MasterRef.JobFinished(Id); } Working = false; } }
public void RunCommand( String Id, String TKMsgIn, out uint TKStatus, out uint TKResult, out String TKMsgOut, out IList <CTSWriteOperation> CardOperations, Card Card = null, ExAPDU RdrCallback = null) { lock (Lock) { //Cancel any pending operations tk.Cancel(); bool ok = false; Operations = CardOperations = new List <CTSWriteOperation>(); TKMsgOut = ""; TKResult = (uint)TicketingKernel.Result.GENERAL_ERROR; TKStatus = (uint)TicketingKernel.Status.DETECTION; if (JobId != Id || (Card == null && RdrCallback == null)) { return; } //Call TK Working = true; if (Card != null) { this.ActualCard = new RemoteCardData(Card); } this.RdrCallback = RdrCallback; Console.Write(string.Format("########## TKCommand IN:\n{0}\n", TKMsgIn)); ok = tk.Command(TKMsgIn, out TKMsgOut, TKCallback); Console.Write(string.Format("########## TKCommand OUT: {0}\n{1}\n", (ok ? "OK" : "ERROR!"), TKMsgOut)); if (!ok) { return; } tk.Activity(); TKMsgOut = this.TKMsgOut; TKResult = this.TKResult; TKStatus = this.TKStatus; if (this.TKResult != (uint)TicketingKernel.Result.OK) { CardOperations.Clear(); } this.RdrCallback = null; this.ActualCard = null; if (MasterRef != null) { MasterRef.JobFinished(Id); } Working = false; } }
private void WasJobDone(String Id) { lock (Lock) { if (JobId == Id && Working != true) { if (MasterRef != null) { MasterRef.JobFinished(Id); } JobId = null; Working = false; } } }