| Refresh | Home EGTry.com


flex.messaging.MessageBrokerServlet
  endpointPath=/messagebroker/amf
  endpoint.server(req,res) ->
  
  flex.messaging.endpoints.BaseHTTPEndpoint 
   super(req,res) ->
   AbstractEndPoint.service
     validateRequestProtocol(req):
      filterChain
 
     flex.messaging.endpoints.amf.SerializationFilter
     do the message serialization
       flex.messaging.io.MessageDeserializer




flex.messaging.io.amf.Amf0Input amfIn

//AMF package header
int version=amfIn.readUnsignedShort(); //4
int headerCount=amfIn.readUnsignedShort(); //0
int bodyCount=amfIn.readUnsignedShort(); //1

//AMF message
String targetURI=amfIn.readUTF(); //null
String responseURI=amfIn.readUTF(); // /1

int length=amfIn.readInt(); //ignored

//read object
Object obj=amfIn.readObject();
 
flex.messaging.messages.ActionMessage
respMsg.setVersion(contect.getVersion())
BatchProcessFilter.java

Response Message
  MessageBody responseBody=new MessageBody();
  reponseBody.setTargetURI("/1");

next filter: SessionFilter.java
next filter: LegacyFilter.java

if (data.getClass().isArray())
  int paramLength=Array.getLength(data);
  //get the first object from array
  Object firstObj=Array.get(data,0);

convert to ArrayList();
  newParams=new ArrayList();
  newParams.add(firstObj);


next filter: flex.messaging.endpoints.amf.MessageBrokerFilter



response:
flex.messaging.endpoints.amf.SerializationFilter
 flex.messaging.io.MessageSerializer serializer=sc.newMessageSerializer();
 serializer.initialize(sc, outBuffer, debugTrace);
 serializer.writeMessage(respMesg);

 flex.messaging.io.amf.AmfMessageSerializer.java
 Amf0Output amfOut
 amfOut.setAvmPlus(true);
 amfOut.writeShort(3); 

 int headerCount=0;
 amfOut.writeShort(headerCount);
 int bodyCount=0;
 amfOut.writeShort(bodyCount); //1 
   //write the body
   String targetURI="/1/onStatus";
   amfOut.writeUTF(targetURI);
   String responseURI="";
   amfOut.writeURF(reponseURI);

   int UNKOWN_CONTENT_LENGTH=-1;
   amfOut.writeInt(UNKNOWN_CONTENT_LENGTH);
   amfOut.reset();
   amfOut.writeObject(obj);
obj: 
messages.ErrorMessage
messages.AcknowledgeMessageExt
messages.AcknowledgeMessage