'use strict'
|
|
var util = require('util')
|
|
var transport = require('../../../spdy-transport')
|
var base = require('./')
|
var Scheduler = base.Scheduler
|
|
function Framer (options) {
|
Scheduler.call(this)
|
|
this.version = null
|
this.compress = null
|
this.window = options.window
|
this.timeout = options.timeout
|
|
// Wait for `enablePush`
|
this.pushEnabled = null
|
}
|
util.inherits(Framer, Scheduler)
|
module.exports = Framer
|
|
Framer.prototype.setVersion = function setVersion (version) {
|
this.version = version
|
this.emit('version')
|
}
|
|
Framer.prototype.setCompression = function setCompresion (pair) {
|
this.compress = new transport.utils.LockStream(pair.compress)
|
}
|
|
Framer.prototype.enablePush = function enablePush (enable) {
|
this.pushEnabled = enable
|
this.emit('_pushEnabled')
|
}
|
|
Framer.prototype._checkPush = function _checkPush (callback) {
|
if (this.pushEnabled === null) {
|
this.once('_pushEnabled', function () {
|
this._checkPush(callback)
|
})
|
return
|
}
|
|
var err = null
|
if (!this.pushEnabled) {
|
err = new Error('PUSH_PROMISE disabled by other side')
|
}
|
process.nextTick(function () {
|
return callback(err)
|
})
|
}
|
|
Framer.prototype._resetTimeout = function _resetTimeout () {
|
if (this.timeout) {
|
this.timeout.reset()
|
}
|
}
|