Skip to content

Commit

Permalink
ui: Put some options in for event source runners (behind flags) (#5738)
Browse files Browse the repository at this point in the history
  • Loading branch information
johncowen authored Jun 4, 2019
1 parent e6a7e1c commit 48b4c57
Showing 1 changed file with 54 additions and 1 deletion.
55 changes: 54 additions & 1 deletion ui-v2/app/utils/dom/event-source/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,61 @@ import ReopenableEventSourceFactory from 'consul-ui/utils/dom/event-source/reope
import BlockingEventSourceFactory from 'consul-ui/utils/dom/event-source/blocking';
import StorageEventSourceFactory from 'consul-ui/utils/dom/event-source/storage';

import EmberObject from '@ember/object';
import { task } from 'ember-concurrency';

import env from 'consul-ui/env';

let runner;
switch (env('CONSUL_UI_REALTIME_RUNNER')) {
case 'ec':
runner = function(target, configuration, isClosed) {
return EmberObject.extend({
task: task(function* run() {
while (!isClosed(target)) {
yield target.source.bind(target)(configuration);
}
}),
})
.create()
.get('task')
.perform();
};
break;
case 'generator':
runner = async function(target, configuration, isClosed) {
const run = function*() {
while (!isClosed(target)) {
yield target.source.bind(target)(configuration);
}
};
let step = run().next();
let res;
while (!step.done) {
res = await step.value;
step = run().next();
}
return res;
};
break;
case 'async':
runner = async function(target, configuration, isClosed) {
const run = function() {
return target.source.bind(target)(configuration);
};
let res;
while (!isClosed(target)) {
res = await run();
}
return res;
};
break;
default:
// use the default runner
}

// All The EventSource-i
export const CallableEventSource = CallableEventSourceFactory(EventTarget, Promise);
export const CallableEventSource = CallableEventSourceFactory(EventTarget, Promise, runner);
export const ReopenableEventSource = ReopenableEventSourceFactory(CallableEventSource);
export const BlockingEventSource = BlockingEventSourceFactory(ReopenableEventSource);
export const StorageEventSource = StorageEventSourceFactory(EventTarget, Promise);
Expand Down

0 comments on commit 48b4c57

Please sign in to comment.