protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     FFTgt_H2G_Ticket_Redemption_Response tgtSrc = target as FFTgt_H2G_Ticket_Redemption_Response;
     FF_AppId_TicketRedemption_Close_Status status = (tgtSrc.Amount > 0 ? FF_AppId_TicketRedemption_Close_Status.Success : FF_AppId_TicketRedemption_Close_Status.CouponRejectedbySystem);
     context.FreeformTargets.Add(TicketsHelper.RedeemTicketComplete(context.SourceMessage.IpAddress,
         tgtSrc.Barcode, tgtSrc.Amount, tgtSrc.Type, status));
     return true;
 }
 protected override bool OnProcessMessageG2HExternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     FFTgt_G2H_Ticket_Printed_Request tgtSrc = target as FFTgt_G2H_Ticket_Printed_Request;
     using (TicketIDInfo idInfo = new TicketIDInfo(tgtSrc.BarCode))
     {
         tgtSrc.SequenceNo = idInfo.SequenceNumber;
     }
     return base.OnProcessMessageG2HExternal_GMU(context, target);
 }
 protected override bool OnProcessMessageG2HInternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     FFTgt_B2B_GMUVarAction tgtDest = new FFTgt_B2B_GMUVarAction()
     {
         ActionData = new FFTgt_H2G_GVA_TPD_Response()
        {
            Date = DateTime.Now,
        }
     };
     context.FreeformTargets.Add(tgtDest);
     return true;
 }
        protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
        {
            string ipAddress = context.SourceMessage.IpAddress;

            // rsa enabled
            var msgRSAQuerySystem = PIDHelper.RSAQuerySystemRequest(ipAddress, false);

            // initiate a key exchange (ticket)
            var msgTicket = this.MessageHandlerFactory.SecurityTables.InitKeyExchangeStartG2H_SIM(ipAddress, FF_AppId_SessionIds.Security, this.NewTransactionId);

            // initiate a key exchange (eft)
            var msgEFT = this.MessageHandlerFactory.SecurityTables.InitKeyExchangeStartG2H_SIM(ipAddress, FF_AppId_SessionIds.ECash, this.NewTransactionId);

            // ticket parameter request
            var msgTicketParameters = TicketParametersHelper.InitTicketDataRequest(ipAddress);

            context.FreeformTargets.AddRange(new IFreeformEntity[] {
                msgRSAQuerySystem,
                msgTicket,
                msgEFT,
                msgTicketParameters
            });
            return(true);
        }
        protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
        {
            string ipAddress = context.SourceMessage.IpAddress;

            // rsa enabled
            var msgRSAQuerySystem = PIDHelper.RSAQuerySystemRequest(ipAddress, false);

            // initiate a key exchange (ticket)
            var msgTicket = this.MessageHandlerFactory.SecurityTables.InitKeyExchangeStartG2H_SIM(ipAddress, FF_AppId_SessionIds.Security, this.NewTransactionId);

            // initiate a key exchange (eft)
            var msgEFT = this.MessageHandlerFactory.SecurityTables.InitKeyExchangeStartG2H_SIM(ipAddress, FF_AppId_SessionIds.ECash, this.NewTransactionId);

            // ticket parameter request
            var msgTicketParameters = TicketParametersHelper.InitTicketDataRequest(ipAddress);

            context.FreeformTargets.AddRange(new IFreeformEntity[] { 
                msgRSAQuerySystem,
                msgTicket, 
                msgEFT,
                msgTicketParameters
            });
            return true;
        }
 protected override bool OnProcessMessageG2HExternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     return(base.OnProcessMessageG2HExternal_GMU(context, target));
 }
 protected override bool OnProcessMessageG2HInternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     context.FreeformTargets.Add(this.MessageHandlerFactory.SecurityTables.InitKeyExchangeStatusH2G_GMU(context.SourceMessage));
     return true;
 }
 protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     return base.OnProcessMessageH2GExternal_SIM(context, target);
 }
 protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     FFTgt_H2G_GVA_TSSlotID_Response tgtSrc = target as FFTgt_H2G_GVA_TSSlotID_Response;
     ModuleHelper.Current.TicketGlobals.UpdateTicketSlotID(context.SourceMessage.IpAddress, tgtSrc.SlotID);
     return true;
 }
 protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     context.FreeformTargets.Add(ECashHelper.SystemEnableResponse(context.SourceMessage.IpAddress, FF_AppId_EFT_ResponseTypes.Ack));
     return(true);
 }
Example #11
0
        protected override bool OnProcessMessageH2GExternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
        {
            FFTgt_H2G_Client_AddUDPsToList tgtSrc = target as FFTgt_H2G_Client_AddUDPsToList;

            return(ExCommsExecutorFactory.AddInstallations(tgtSrc.InstallationNos));
        }
 protected override bool OnProcessMessageH2GExternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     FFTgt_H2G_Client_AddUDPsToList tgtSrc = target as FFTgt_H2G_Client_AddUDPsToList;
     return ExCommsExecutorFactory.AddInstallations(tgtSrc.InstallationNos);
 }
Example #13
0
 protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     return(true);
 }
 protected override bool OnProcessMessageG2HInternal_GMU(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     context.FreeformTargets.Add(this.MessageHandlerFactory.SecurityTables.InitKeyExchangeStatusH2G_GMU(context.SourceMessage));
     return(true);
 }
        public bool Execute(IFreeformEntity_Msg request)
        {
            using (ILogMethod method = Log.LogMethod(this.DYN_MODULE_NAME, "ProcessMessage(G2H)"))
            {
                bool result = default(bool);
                string ipAddress = string.Empty;

                try
                {
                    using (FFTgtExecutionContext context = new FFTgtExecutionContext(request))
                    {
                        Stack<IFreeformEntity> st = new Stack<IFreeformEntity>();
                        request.CopyTo(st);

                        // push all the grandchildren into stack and process again
                        while (st.Count != 0)
                        {
                            IFreeformEntity_MsgTgt target = st.Pop() as IFreeformEntity_MsgTgt;
                            if (target == null || target.IsLeafNode) continue;

                            _requestResponseMappings.Persist(request, target);
                            string targetKey = CreateSessionTargetKey((int)request.SessionID, target.TypeKey);
                            if (_targetHandlers.ContainsKey(targetKey))
                            {
                                _HandlerInfo info = _targetHandlers[targetKey];
                                context.HandlerAttribute = info.HandlerAttribute;
                                info.Handler.Execute(context, target);
                            }

                            target.CopyTo(st);
                        }

                        if (request.TransactionID <= 0)
                        {
                            request.TransactionID = FFMsgHandlerFactory.NewTransactionId;
                        }

                        if (request.SessionID != FF_AppId_SessionIds.Internal)
                        {
                            // ok everything processed, now do the external or internal processing
                            if (request.FlowDirection == FF_FlowDirection.G2H)
                            {
                                // add the monitor meters
                                if (context.MonitorMeters.IsValueCreated)
                                {
                                    context.MonitorTargets.Value.Add(context.MonitorMeters.Value);
                                }
                                _msgTransmitter.ProcessMessage(request as FFMsg_G2H, context.MonitorTargets.Value);
                            }
                            else if (request.FlowDirection == FF_FlowDirection.H2G)
                            {
                                _msgTransmitter.ProcessMessage(request as FFMsg_H2G);
                            }

                            // process the internal messages
                            if (context.FreeformTargets != null &&
                                context.FreeformTargets.Count > 0)
                            {
                                FFMsg_H2G h2gMessage = null;
                                foreach (var freeformEntity in context.FreeformTargets)
                                {
                                    if (freeformEntity is IFreeformEntity_Msg)
                                    {
                                        FFMsgHandlerFactory.Current.Execute(freeformEntity as IFreeformEntity_Msg);
                                    }
                                    else if (freeformEntity is IFreeformEntity_MsgTgt)
                                    {
                                        if (h2gMessage == null)
                                        {
                                            h2gMessage = FreeformEntityFactory.CreateEntity<FFMsg_H2G>(FF_FlowDirection.H2G,
                                                new FFCreateEntityRequest_H2G()
                                                {
                                                    IPAddress = request.IpAddress,
                                                    PollCode = FF_AppId_H2G_PollCodes.FreeformNoResponse,
                                                    SessionID = request.SessionID,
                                                    TransactionID = request.TransactionID,
                                                });
                                        }
                                        h2gMessage.Targets.Add(freeformEntity as IFreeformEntity_MsgTgt);
                                    }
                                }

                                if (h2gMessage != null)
                                {
                                    FFMsgHandlerFactory.Current.Execute(h2gMessage);
                                }

                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    method.Exception(ex);
                }

                return result;
            }
        }
 protected override bool OnProcessMessageH2GExternal_SIM(FFTgtExecutionContext context, IFreeformEntity_MsgTgt target)
 {
     context.FreeformTargets.Add(ECashHelper.SystemEnableResponse(context.SourceMessage.IpAddress, FF_AppId_EFT_ResponseTypes.Ack));
     return true;
 }