/// <summary> /// Event disparado por el nivel de transporte, antes de pasar el /// mensaje al nivel de session. Permite tanto modificar el mensaje /// como evitar que llegue a la sesion y responder directo al punto /// de red correspondiente una respuesta o ninguna. /// </summary> /// <param name="node">INode que mando el mensaje</param> /// <param name="message">Mensaje que esta a punto de ser entregado a la session.</param> /// <param name="result">Referencia a la respuesta hacia atras.</param> /// <returns>Verdadero si se debe interrumpir, falso si continuar.</returns> public bool BeforeBorderSession(INode node, IMessage message, ref BackwardReply result) { if (!UserPoints.ContainsKey(node.NodeCode)) { return(false); } result = UserPoints[node.NodeCode].BeforeBorderSession(message); if (BackwardReply.IsNothing(result)) { STrace.Debug(GetType().FullName, "TransportHelper: El nodo no dio respuesta, Session Cancelada x null."); return(true); } if (result.Action == ReplyAction.ReturnedResponseSilently) { //STrace.Trace(GetType().FullName,2, "TransportHelper: Respuesta al Movil, Session Cancelada x Rta Silenciosa."); result.Action = ReplyAction.ReturnedResponse; return(true); } //STrace.Trace(GetType().FullName,2, "TransportHelper: Respuesta al Movil, Session Continua."); return(false); }
/// <summary> /// Callback disparado por el nivel de transporte, despues de pasar el /// mensaje al nivel de session. Incluye el mensaje de la session, y /// permite cambiar su decisión (aunque no lo que haya hecho). /// </summary> /// <param name="node">INode que mando el mensaje</param> /// <param name="message">Mensaje entregado a la session.</param> /// <param name="result">Referencia a la respuesta hacia atras.</param> /// <returns>Verdadero si se debe interrumpir, falso si continuar.</returns> public bool AfterBorderSession(INode node, IMessage message, ref BackwardReply result) { return(UserPoints.ContainsKey(node.NodeCode) && BackwardReply.IsNothing(UserPoints[node.NodeCode].AfterBorderSession(message, result))); }