GeoKnow/Jassa-Core

View on GitHub
lib/service/query_execution/QueryExecutionFailover.js

Summary

Maintainability
A
0 mins
Test Coverage
var Class = require('../../ext/Class');
var QueryExecution = require('./QueryExecution');
var QueryPaginator = require('../QueryPaginator');
var IteratorArray = require('../../util/collection/IteratorArray');
var ResultSetArrayIteratorBinding = require('../result_set/ResultSetArrayIteratorBinding');
var shared = require('../../util/shared');
var Promise = shared.Promise;


/**
 * TODO Specify and implement the behavior:
 *
 * - Start a new request if the prior one does not return within a specified time
 *     and use the fastest response
 *
 * - If there is an server-error with an endpoint,
 *
 * - Give a chance for an endpoint to recover (e.g. perform retry after a certain amount of time)
 *
 * - Start all queries simultaneously and use the fastest response
 *
 * -> requestDelay parameter
 *
 */
var QueryExecutionFailover = Class.create(QueryExecution, {
    initialize: function(sparqlServices) {
        this.sparqlServices = sparqlServices;
        this.timeoutInMillis = null;
    },

    execSelect: function() {
        var result = this.sparqlServices.createQueryExecution(this.query);
        result.setTimeout(this.timeoutInMillis);

        return result;
    },

    setTimeout: function(timeoutInMillis) {
        this.timeoutInMillis = timeoutInMillis;
    },
});

module.exports = QueryExecutionFailover;