public override void SolicitudEntregada(PDU rta, PDU source, Transaction tr, AbstractTransport t) { if (rta.CH == (byte)Decoder.ComandoH.LoginAcepted && LoginSuccess != null) { var la = rta as LoginAcepted; if (la == null) { throw new Exception("SA: fallo la especializacion del PDU"); } LoginSuccess(this, la.IdAsignado); } else if (rta.CH == (byte)Decoder.ComandoH.LoginReject && LoginFail != null) { var lr = rta as LoginReject; if (lr == null) { throw new Exception("SA: fallo la especializacion del PDU"); } LoginFail(this, lr.CL); } else if (rta.CH == (byte)Decoder.ComandoH.OKACK) { if (source.CH == (byte)Decoder.ComandoH.MsgPosicion && AutoReportSuccess != null) { var pos = source as Posicion; if (pos == null) { throw new Exception("SA: fallo la especializacion del PDU"); } AutoReportSuccess(this, pos.IdQueue); } } }
public MRS(PDU _pdu, AbstractTransport t, TransactionUser ut) : base(t, ut) { pdu = _pdu; Seq = pdu.Seq; DeviceId = pdu.DeviceId; }
public MRC(PDU _pdu, AbstractTransport t, TransactionUser ut) : base(t, ut) { pdu = _pdu; Seq = pdu.Seq; DeviceId = pdu.DeviceId; State = States.INICIO; }
public void SetCorrectTransportType(AbstractTransport transport) { switch (transport.TypeTransport) { case (TransportType.Car): this.transport = transport as Car; break; } deleteBtn.Visible = (this.transport.ID == 0) ? false : true; }
public void KeepAlive(AbstractTransport t, Destination address) { T.TRACE(0, "Solicitando keep alive."); var pdu = new PDU { CH = (byte)Decoder.ComandoH.KeepAlive, DeviceId = IdDispositivo, Transport = t, Destination = address, }; var keep_alive_mrc = new MRC(pdu, pdu.Transport, this); pdu.Transport.NuevaTransaccion(keep_alive_mrc, pdu); keep_alive_mrc.Seq = pdu.Seq; keep_alive_mrc.Start(); }
public void AutoReport(AbstractTransport t, Destination address, List <GPSPoint> puntos, int idQueue) { var req = new Posicion { DeviceId = IdDispositivo, IdQueue = idQueue, Transport = t, Destination = address }; req.AddPoints(puntos); var mrc = new MRC(req, t, this); // Seq: automatico aqui. t.NuevaTransaccion(mrc, req); mrc.Start(); }
public void LoginRequest(AbstractTransport t, Destination address, string IMEI, string password, short tableversion, string firmware) { var req = new LoginRequest { DeviceId = IdDispositivo, IMEI = IMEI, Password = password, Firmware = firmware, TableVersion = tableversion, Destination = address }; var mrc = new MRC(req, t, this); // Seq, automatico aqui. t.NuevaTransaccion(mrc, req); mrc.Start(); }
public override void SolicitudNoEnviada(PDU pdu, Transaction tr, AbstractTransport t) { if (pdu.CH == (byte)Decoder.ComandoH.LoginRequest && LoginFail != null) { LoginFail(this, 0xFF); } else if (pdu.CH == (byte)Decoder.ComandoH.MsgPosicion && AutoReportFail != null) { var pos = pdu as Posicion; if (pos == null) { throw new Exception("SA: fallo la especializacion del PDU"); } AutoReportFail(this, pos.IdQueue); } else if (pdu.CH == (byte)Decoder.ComandoH.KeepAlive) { GeneralFail(this); } }
// MRS cuando nunca recibio el ACK. public abstract void RespuestaNoEntregada(PDU pdu, Transaction tr, AbstractTransport t);
// MRS si la solicitud requiere RTA public abstract PDU RequieroRespuesta(PDU pdu, Transaction tr, AbstractTransport t);
public Email(AbstractTransport transport, EmailContentType type = EmailContentType.Text) { Transport = transport; Type = type; }
public override PDU RequieroACK(PDU pdu, Transaction tr, AbstractTransport t) { throw new NotImplementedException(); }
public void AddTransport(AbstractTransport transport) { MyTransports.Add(transport); }
// MRC cuando obtiene un ACK de un msg sin RTA. public abstract void SolicitudEntregada(PDU response, PDU pdu, Transaction tr, AbstractTransport t);
protected Transaction(AbstractTransport t, TransactionUser ut) { Transport = t; TransactionUser = ut; State = States.INICIO; }
// MRC cuando llega una RTA a una solicitud enviada. public abstract PDU RequieroACK(PDU pdu, Transaction tr, AbstractTransport t);
// MRC cuando no obtiene ni RTA ni ACK. public abstract void SolicitudNoEnviada(PDU pdu, Transaction tr, AbstractTransport t);
public override bool NuevaSolicitud(PDU pdu, Transaction tr, AbstractTransport t) { // si llega hasta aqui, no se pudo procesar el mensaje. tr.ResponseCL = 0x01; // codigo interino de MensajeDesconocido. return(false); }
// MRS cuando llega una nueva solicitud, siempre. public abstract bool NuevaSolicitud(PDU pdu, Transaction tr, AbstractTransport t);
public override void RespuestaNoEntregada(PDU pdu, Transaction tr, AbstractTransport t) { throw new NotImplementedException(); }