| '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() | 
|   } | 
| } |