Browse Source

eliminate overhead of creating two funcs/closure for each port connection

pull/2/head
Raymond Hill 10 years ago
committed by gorhill
parent
commit
789bfe09f6
  1. 38
      meta/crx/vapi-background.js

38
meta/crx/vapi-background.js

@ -219,6 +219,7 @@ vAPI.messaging = {
ports: {}, ports: {},
listeners: {}, listeners: {},
defaultHandler: null, defaultHandler: null,
NOOPFUNC: function(){},
UNHANDLED: 'vAPI.messaging.notHandled' UNHANDLED: 'vAPI.messaging.notHandled'
}; };
@ -230,21 +231,17 @@ vAPI.messaging.listen = function(listenerName, callback) {
/******************************************************************************/ /******************************************************************************/
vAPI.messaging.onConnect = function(port) {
var onMessage = function(request) {
var callback = function(response) {
if ( vAPI.lastError() || response === undefined ) {
return;
}
if ( request.requestId ) {
vAPI.messaging.onPortMessage = function(request, port) {
var callback = vAPI.messaging.NOOPFUNC;
if ( request.requestId !== undefined ) {
callback = function(response) {
port.postMessage({ port.postMessage({
requestId: request.requestId, requestId: request.requestId,
portName: request.portName, portName: request.portName,
msg: response
msg: response !== undefined ? response : null
}); });
}
}; };
}
// Specific handler // Specific handler
var r; var r;
@ -263,16 +260,21 @@ vAPI.messaging.onConnect = function(port) {
} }
console.error('µBlock> messaging > unknown request: %o', request); console.error('µBlock> messaging > unknown request: %o', request);
};
};
var onDisconnect = function(port) {
port.onDisconnect.removeListener(onDisconnect);
port.onMessage.removeListener(onMessage);
/******************************************************************************/
vAPI.messaging.onDisconnect = function(port) {
port.onDisconnect.removeListener(vAPI.messaging.onDisconnect);
port.onMessage.removeListener(vAPI.messaging.onPortMessage);
delete vAPI.messaging.ports[port.name]; delete vAPI.messaging.ports[port.name];
};
};
/******************************************************************************/
port.onDisconnect.addListener(onDisconnect);
port.onMessage.addListener(onMessage);
vAPI.messaging.onConnect = function(port) {
port.onDisconnect.addListener(vAPI.messaging.onDisconnect);
port.onMessage.addListener(vAPI.messaging.onPortMessage);
vAPI.messaging.ports[port.name] = port; vAPI.messaging.ports[port.name] = port;
}; };
@ -286,7 +288,7 @@ vAPI.messaging.setup = function(defaultHandler) {
if ( typeof defaultHandler !== 'function' ) { if ( typeof defaultHandler !== 'function' ) {
defaultHandler = function(){ return null; }; defaultHandler = function(){ return null; };
};
}
this.defaultHandler = defaultHandler; this.defaultHandler = defaultHandler;
chrome.runtime.onConnect.addListener(this.onConnect); chrome.runtime.onConnect.addListener(this.onConnect);

Loading…
Cancel
Save