package uk.ac.cam.echo.server.resources; import org.glassfish.jersey.media.sse.EventOutput; import org.glassfish.jersey.media.sse.OutboundEvent; import org.glassfish.jersey.media.sse.SseBroadcaster; import uk.ac.cam.echo.data.async.Handler; import uk.ac.cam.echo.data.async.Subscription; import uk.ac.cam.echo.data.async.SubscriptionResource; import javax.ws.rs.core.MediaType; public class SubscriptionResourceImpl<T> implements SubscriptionResource<T>{ private SseBroadcaster broadcaster; public SubscriptionResourceImpl() { broadcaster = new SseBroadcaster(); } @Override public EventOutput subscribe() { final EventOutput event = new EventOutput(); broadcaster.add(event); return event; } public Subscription subscribe(Handler<T> observer) { throw new UnsupportedOperationException(); } public void broadcast(T data) { OutboundEvent.Builder eventBuilder = new OutboundEvent.Builder(); OutboundEvent event = eventBuilder.mediaType(MediaType.APPLICATION_JSON_TYPE) .data(data) .build(); broadcaster.broadcast(event); } }