Beispiel #1
0
        public IList InteraccionPQ2(object cabecera, object juegos, PedidosSorteos queJuego)
        {
            try
            {
                Error err = new Error();
                IList objs = new List<object>();
                Errorof erNroOf = opOff.GetNro(DateTime.Now, ref TransacManager.ProtoConfig.nroOff);

                if (erNroOf.Error != 0)
                {
                    err.CodError = (uint)erNroOf.Error;
                    err.Descripcion = erNroOf.Mensaje;
                    objs.Add(err);
                    return objs;
                }

                LogBMTP.LogMessage("Transacción "+queJuego.ToString(), lvlLogTransaccion, TimeStampLog);

                if (queJuego == PedidosSorteos.QUINIELA)
                {
                    if (cabecera != null)
                    {
                        TransacQuinielaH tqh = (TransacQuinielaH)cabecera;
                        tqh.NroSecuencia = (uint)TransacManager.ProtoConfig.nroOff.numeroOff;
                        Enviar(ConstructorMenEnv.crearP_QM(tqh, (TransacQuinielaB)juegos), EnumPaquete.DATOS, TR.ordenMsgNackE);
                    }
                    else
                        throw new ArgumentException("El pedido de sorteo no es válido.", "Cabecera nula.");
                }

                TR.ordenMsgNackE++;

                bytes = new byte[ProtocoloConfig.TamBuffer];
                do
                {
                    objs = Recibir(bytes, 2, 0, "Q2");

                    //atrapa errores de recepción
                    if (objs.Count > 1 && !(objs[0] is string))
                    {
                        byte[] ACK = { };
                        Enviar(ACK,  EnumPaquete.ACK, TR.ordenAckE);
                    }
                    else
                    {
                        break;
                    }
                }
                while (!TransacManager.ProtoConfig.NACK_ENV.Equals(NackEnv.SINERROR));

                if (objs == null || objs.Count == 0)
                {
                    throw new Exception("Lista de objetos(objs) regreso vacía de Recibir()");
                }
                else if (objs[0] is string)
                {
                    opOff.BajaNro();
                    objs[0] = MensajeNack(objs[0]);
                }
                else if(objs[0] is Error)
                {
                    Error er = (Error)objs[0];
                    if (er.CodError != 0)
                        opOff.BajaNro();
                    else
                    {
                        if (objs[1] != null && objs[1] is TransacQuinielaH)
                            ((TransacQuinielaH)objs[1]).NroSecuencia = (uint)TransacManager.ProtoConfig.nroOff.numeroOff;
                        else if (objs[1] != null && objs[1] is TransacPoceado)
                            ((TransacPoceado)objs[1]).NroSecuencia = (uint)TransacManager.ProtoConfig.nroOff.numeroOff;
                    }

                }

                return objs;
            }
            catch (Exception ex)
            {
                opOff.BajaNro();
                Error errEx = EmpalmeErrorExcepcion(ex, ErrComunicacion.APUESTAex, "Ha ocurrido un problema durante la descarga de apuestas.");
                return new List<object> { errEx };
            }
        }
Beispiel #2
0
        public IList InteraccionPQ1(PedidosSorteos sort, UInt32 terminal, EnumEstadoParametrosOff estadoParametrosOff, string path = @"C:\BetmakerTP\Off")
        {
            try
            {
                LogBMTP.LogMessage("Pedido de sorteo: " + sort + " Terminal: " + terminal, lvlLogTransaccion, TimeStampLog);

                Enviar(ConstructorMenEnv.crearP_PedidoSorteo((byte)sort, terminal), EnumPaquete.DATOS, TR.ordenMsgNackE);

                TR.ordenMsgNackE++;

                Errorof errOf = new Errorof();

                IList objs = new List<object>();
                bytes = new byte[ProtocoloConfig.TamBuffer];

                do
                {
                    LogBMTP.LogMessage("Parametros " + sort, lvlLogTransaccion, TimeStampLog);
                    objs = Recibir(bytes, (ushort)EnumPaquete.DATOS, 0, "Q1");

                    //atrapa errores de recepción
                    if (objs.Count > 1 && !(objs[0] is string))
                    {
                        byte[] ACK = { };
                        Enviar(ACK,  EnumPaquete.ACK, TR.ordenAckE);
                    }
                    else
                    {
                        break;
                    }
                }
                while (!TransacManager.ProtoConfig.NACK_ENV.Equals(NackEnv.SINERROR));

                if (objs == null || objs.Count == 0)
                {
                    throw new Exception("Lista de objetos(objs) regreso vacía de Recibir()");
                }
                else if (objs[0] is string)
                {
                    Error err = MensajeNack(objs[0]);
                    objs[0] = err;
                }
                return objs;
            }
            catch (Exception ex)
            {
                Error errEx = EmpalmeErrorExcepcion(ex, ErrComunicacion.PEDIDO_SORTEOex, "Ha ocurrido un problema durante la descarga de parametros.");
                return new List<object> { errEx };
            }
        }