Mechanism to synchronize multiple request in Cairngorm to assure server response correspond with the request.
Delegate:
package com.aqua.holamundo.business {
import com.adobe.cairngorm.business.ServiceLocator;
import mx.controls.Alert;
import mx.rpc.AbstractOperation;
import mx.rpc.IResponder;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.mxml.HTTPService;
import mx.rpc.AbstractService;
import mx.rpc.AsyncToken;
public class SaludoDelegate {
private var responder : IResponder;
private var service : Object;
private var param:String;
private var httpService:HTTPService;
public function SaludoDelegate( responder : IResponder, miParam:String ):void {
httpService = new HTTPService();
httpService.url = [URL];
httpService.method = "GET";
httpService.showBusyCursor = true;
this.service = httpService;
this.service.request.param=miParam;
this.responder = responder;
this.grupo=grupo;
}
public function getMessage() : void {
service.cancel();
var token:AsyncToken = httpService.send();
token.addResponder(responder);
token.param = miParam;
}
}
}
Command:
package com.aqua.holamundo.command {
import mx.rpc.IResponder;
import com.adobe.cairngorm.commands.ICommand;
import com.adobe.cairngorm.control.CairngormEvent;
import mx.rpc.events.*;
import mx.controls.Alert;
import com.aqua.holamundo.business.SaludoDelegate;
import com.aqua.holamundo.event.SaludoEvent;
import com.aqua.holamundo.model.HolaMundoModelLocator;
import com.aqua.holamundo.vo.Saludo;
public class SaludoCommand implements ICommand, IResponder {
public var _event:SaludoEvent;
public static var peticionId:String;
public function SaludoCommand() {
}
public function execute( event:CairngormEvent ):void {
_event = SaludoEvent(event);
var delegate:SaludoDelegate = new SaludoDelegate(this, _event.miParam);
delegate.getMessage();
peticionId=_event.miParam;
}
public function result( event : Object ):void {
var model:HolaMundoModelLocator = HolaMundoModelLocator.getInstance();
var eventR : ResultEvent;
eventR = event as ResultEvent;
var resultado : XML = new XML(eventR.message.body);
// Comprobar que la respuesta coincida con la última petición
if(peticionId==event.token.param){
// Actualizar modelo
}
}
public function fault( event : Object ) : void {
var faultEvent : FaultEvent = FaultEvent( event );
Alert.show( "Error al contactar con el servidor"+event,"Error" );
}
}
}







Freelance
Downloads
Projects
Utilities
Friends
Links
December 3, 2007
9:41 am
Categories
Files





