diff options
author | Maximilian Hils <git@maximilianhils.com> | 2014-09-13 23:05:12 +0200 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2014-09-13 23:05:12 +0200 |
commit | d2475e6a146534b5e7aaf2cc7b0b9a75e418415e (patch) | |
tree | 47f2ce48a1c03d8ca6414d92a78c764e25a16e3f /web/src/js/datastructures.js | |
parent | 9bacb6d426a54882235b8d745dbf123c7958c887 (diff) | |
download | mitmproxy-d2475e6a146534b5e7aaf2cc7b0b9a75e418415e.tar.gz mitmproxy-d2475e6a146534b5e7aaf2cc7b0b9a75e418415e.tar.bz2 mitmproxy-d2475e6a146534b5e7aaf2cc7b0b9a75e418415e.zip |
web: start gui
Diffstat (limited to 'web/src/js/datastructures.js')
-rw-r--r-- | web/src/js/datastructures.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/web/src/js/datastructures.js b/web/src/js/datastructures.js new file mode 100644 index 00000000..59f64e66 --- /dev/null +++ b/web/src/js/datastructures.js @@ -0,0 +1,101 @@ +class EventEmitter { + constructor(){ + this._listeners = {}; + } + emit(event){ + if(!(event in this._listeners)){ + return; + } + this._listeners[event].forEach(function (listener) { + listener(event, this); + }.bind(this)); + } + addListener(event, f){ + this._listeners[event] = this._listeners[event] || []; + this._listeners[event].push(f); + } + removeListener(event, f){ + if(!(event in this._listeners)){ + return false; + } + var index = this._listeners.indexOf(f); + if (index >= 0) { + this._listeners.splice(this._listeners.indexOf(f), 1); + } + } +} + +var FLOW_CHANGED = "flow.changed"; + +class FlowStore extends EventEmitter{ + constructor() { + super(); + this.flows = []; + this._listeners = []; + } + + getAll() { + return this.flows; + } + + emitChange() { + return this.emit(FLOW_CHANGED); + } + + addChangeListener(f) { + this.addListener(FLOW_CHANGED, f); + } + + removeChangeListener(f) { + this.removeListener(FLOW_CHANGED, f); + } +} + +class DummyFlowStore extends FlowStore { + constructor(flows) { + super(); + this.flows = flows; + } + + addFlow(f) { + this.flows.push(f); + this.emitChange(); + } +} + + +SETTINGS_CHANGED = "settings.change"; + +class Settings extends EventEmitter { + constructor(){ + super(); + this.settings = false; + } + + getAll(){ + return this.settings; + } + + emitChange() { + return this.emit(SETTINGS_CHANGED); + } + + addChangeListener(f) { + this.addListener(SETTINGS_CHANGED, f); + } + + removeChangeListener(f) { + this.removeListener(SETTINGS_CHANGED, f); + } +} + +class DummySettings extends Settings { + constructor(settings){ + super(); + this.settings = settings; + } + update(obj){ + _.merge(this.settings, obj); + this.emitChange(); + } +}
\ No newline at end of file |