/*
* Zed Attack Proxy (ZAP) and its related class files.
*
* ZAP is an HTTP/HTTPS proxy for assessing web application security.
*
* Copyright The ZAP development team
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.zaproxy.zap.eventBus;
/**
* Interface for the event bus used to publish events in ZAP
* @author simon
*
*/
public interface EventBus {
/**
* Register a publisher - only registered publishers can publish events
* @param publisher the publisher
* @param eventTypes the full set of event types the publisher can publish
*/
void registerPublisher(EventPublisher publisher, String[] eventTypes);
/**
* Unregister the publisher
* @param publisher the publisher
*/
void unregisterPublisher(EventPublisher publisher);
/**
* Register the consumer for the specified publisher - this consumer will receive all events from the publisher
* @param consumer the consumer of events
* @param publisherName the name of the publisher
*/
void registerConsumer (EventConsumer consumer, String publisherName);
/**
* Register the consumer for the specified publisher - this consumer will only receive the
* specified events from the publisher
* @param consumer the consumer of events
* @param publisherName the name of the publisher
* @param eventTypes the event types
*/
void registerConsumer (EventConsumer consumer, String publisherName, String[] eventTypes);
/**
* Unregister the consumer
* @param consumer the consumer of events
* @param publisherName the name of the publisher
*/
void unregisterConsumer(EventConsumer consumer, String publisherName);
/**
* Publish the specified event synchronously
* @param publisher the publisher
* @param event the event
*/
void publishSyncEvent(EventPublisher publisher, Event event);
}