37 lines
966 B
JavaScript
37 lines
966 B
JavaScript
|
|
function Publisher() {
|
||
|
|
var m_subscribers=new Array();
|
||
|
|
|
||
|
|
this.addSubscriber=addSubscriber;
|
||
|
|
this.removeSubscriber=removeSubscriber;
|
||
|
|
this.notifySubscribers=notifySubscribers;
|
||
|
|
|
||
|
|
function addSubscriber(subscriber,eventType){
|
||
|
|
for(var i=0;i<m_subscribers.length;i++){
|
||
|
|
if((m_subscribers[i][0]==subscriber)
|
||
|
|
&&(m_subscribers[i][1]==eventType)){
|
||
|
|
return(false);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
var entryDetails=new Array();
|
||
|
|
entryDetails[0]=subscriber;
|
||
|
|
entryDetails[1]=eventType;
|
||
|
|
m_subscribers[m_subscribers.length]=entryDetails;
|
||
|
|
return(true);
|
||
|
|
}
|
||
|
|
function removeSubscriber(subscriber,eventType){
|
||
|
|
for(var i=0;i<m_subscribers.length;i++){
|
||
|
|
if((m_subscribers[i][0]==subscriber)
|
||
|
|
&&(m_subscribers[i][1]==eventType)){
|
||
|
|
m_subscribers.splice(i,1);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
function notifySubscribers(publisher,eventType,addInfo){
|
||
|
|
for(var i=0;i<m_subscribers.length;i++){
|
||
|
|
if(m_subscribers[i][1]==eventType){
|
||
|
|
m_subscribers[i][0](publisher,eventType,addInfo);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|