Exemple #1
0
        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;
            }
        }
Exemple #2
0
        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;
            }
        }
Exemple #3
0
 private void WasJobDone(String Id)
 {
     lock (Lock)
     {
         if (JobId == Id && Working != true)
         {
             if (MasterRef != null)
             {
                 MasterRef.JobFinished(Id);
             }
             JobId   = null;
             Working = false;
         }
     }
 }