outlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplace
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.0 KiB
62 lines
2.0 KiB
// @tag enterprise |
|
/** |
|
* The AMF Reader is used by an {@link Ext.data.amf.Proxy AMF Proxy} to read |
|
* records from a server response that contains binary data in either AMF0 or |
|
* AMF3 format. AMF Reader constructs an {@link Ext.data.amf.Packet AMF Packet} |
|
* and uses it to decode the binary data into javascript objects, then simply |
|
* allows its superclass ({@link Ext.data.reader.Json}) to handle converting the |
|
* raw javascript objects into {@link Ext.data.Model} instances. |
|
* |
|
* For a more detailed tutorial see the [AMF Guide](#/guide/amf). |
|
*/ |
|
Ext.define('Ext.data.amf.Reader', { |
|
|
|
extend: 'Ext.data.reader.Json', |
|
|
|
alias : 'reader.amf', |
|
|
|
requires: [ |
|
'Ext.data.amf.Packet' |
|
], |
|
|
|
/** |
|
* @cfg {Number} messageIndex |
|
* AMF Packets can contain multiple messages. This config specifies the |
|
* 0-based index of the message that contains the record data. |
|
*/ |
|
messageIndex: 0, |
|
|
|
/** |
|
* Reads records from a XMLHttpRequest response object containing a binary |
|
* AMF Packet and returns a ResultSet. |
|
* @param {Object} response The XMLHttpRequest response object |
|
* @return {Ext.data.ResultSet} |
|
*/ |
|
read: function(response) { |
|
var me = this, |
|
bytes = response.responseBytes, |
|
packet, messages, resultSet; |
|
|
|
if (!bytes) { |
|
throw "AMF Reader cannot process the response because it does not contain binary data. Make sure the Proxy's 'binary' config is true."; |
|
} |
|
|
|
packet = new Ext.data.amf.Packet(); |
|
packet.decode(bytes); |
|
messages = packet.messages; |
|
|
|
if (messages.length) { |
|
resultSet = me.readRecords(messages[me.messageIndex].body); |
|
} else { |
|
// no messages, return null result set |
|
resultSet = me.nullResultSet; |
|
if (packet.invalid) { |
|
// packet contains invalid data |
|
resultSet.success = false; |
|
} |
|
} |
|
|
|
return resultSet; |
|
} |
|
}); |
|
|
|
|