blob: 42bb9cc9d7623b104be2c48894841b8e8f85ce7d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.qpid.qmf2.common;
/**
* Implementation of QmfEventListener that wraps a Notifier instance. This class populates the WorkItem
* queue then invokes the Notifier's indication() method to notify clients of available data.
* <p>
* This approach allows us to support two separate asynchronous notification APIs without too much effort.
*
* @author Fraser Adams
*/
public final class NotifierWrapper implements QmfEventListener
{
private final Notifier _notifier;
private final WorkQueue _workQueue;
/**
* Wraps a Notifier and WorkQueue so that they me be triggered by a QmfEventListener onEvent() call.
* @param notifier the Notifier instance that will be triggered when NotifierWrapper receives a WorkItem.
* @param workQueue the WorkQueue instance that the WorkItem will be placed on.
*/
public NotifierWrapper(final Notifier notifier, final WorkQueue workQueue)
{
_notifier = notifier;
_workQueue = workQueue;
}
/**
* This method adds the WorkItem to the WorkQueue then notifies any clients through the Notifier.indication().
*
* @param item the WorkItem to add to the queue
*/
public void onEvent(final WorkItem item)
{
_workQueue.addWorkItem(item);
_notifier.indication();
}
}
|