LiveDevServerManager Overview:
The LiveDevServerManager allows extensions to register to be Live Development servers. Servers are queried for their ability to serve a page in order of descending priority by way their canServe methods.
NOTE: This API is currently experimental and intented to be internal-only. It is very likely that it will be changed in the near future and/or removed entirely.
LiveDevServerManager.getServer(localPath)
Returns highest priority server (BaseServer) that can serve the local file.
A Live Development server must implement the BaseServer API. See LiveDevelopment/Servers/BaseServer base class.
function _providerSort(a, b) {
return b.priority - a.priority;
}
Determines which provider can serve a file with a local path.
function getServer(localPath) {
var provider, server, i;
for (i = 0; i < _serverProviders.length; i++) {
provider = _serverProviders[i];
server = provider.create();
if (server.canServe(localPath)) {
return server;
}
}
return null;
}
The method by which a server registers itself. It returns an object handler that can be used to remove that server from the list.
function registerServer(provider, priority) {
if (!provider.create) {
console.error("Incompatible live development server provider");
return;
}
var providerObj = {};
providerObj.create = provider.create;
providerObj.priority = priority || 0;
_serverProviders.push(providerObj);
_serverProviders.sort(_providerSort);
return providerObj;
}
Remove a server from the list of the registered providers.
function removeServer(provider) {
var i;
for (i = 0; i < _serverProviders.length; i++) {
if (provider === _serverProviders[i]) {
_serverProviders.splice(i, 1);
}
}
}
// Backwards compatibility
exports.getProvider = getServer;
exports.registerProvider = registerServer;
// Define public API
exports.getServer = getServer;
exports.registerServer = registerServer;
exports.removeServer = removeServer;
});