org.wicketstuff.chat.channel.TimerChannelService Maven / Gradle / Ivy
The newest version!
package org.wicketstuff.chat.channel;
import java.io.Serializable;
import java.util.Map;
import org.apache.wicket.Component;
import org.apache.wicket.util.time.Duration;
import org.wicketstuff.chat.channel.api.ChannelEvent;
import org.wicketstuff.chat.channel.api.EventStoreListener;
import org.wicketstuff.chat.channel.api.IChannelListener;
import org.wicketstuff.chat.channel.api.IChannelPublisher;
import org.wicketstuff.chat.channel.api.IChannelService;
import org.wicketstuff.chat.channel.api.IPushTarget;
public class TimerChannelService implements IChannelService, Serializable
{
private static final long serialVersionUID = 1L;
private final Duration duration;
private final IChannelPublisher publisher = new TimerChannelPublisher();
public TimerChannelService(final Duration duration)
{
this.duration = duration;
}
@Override
public void addChannelListener(final Component component, final String listenerChannel,
final IChannelListener listener)
{
final TimerChannelBehavior timerChannelBehavior = new TimerChannelBehavior(duration);
final IPushTarget pushTarget = timerChannelBehavior.newPushTarget();
component.add(timerChannelBehavior);
EventStore.get().addEventStoreListener(new EventStoreListener()
{
@Override
public void eventTriggered(final String eventChannel, final Map data)
{
if (eventChannel != null && !eventChannel.isEmpty() && listenerChannel != null
&& listenerChannel.equals(eventChannel))
{
listener.onEvent(listenerChannel, data, pushTarget);
pushTarget.trigger();
}
}
});
}
@Override
public void publish(final ChannelEvent event)
{
publisher.publish(event);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy