Java源码示例:io.atomix.cluster.ClusterMembershipEventListener
示例1
@GET
@Path("/events")
@Produces(MediaType.APPLICATION_JSON)
public void getEvent(@Context ClusterMembershipService clusterMembershipService, @Context EventManager events, @Suspended AsyncResponse response) {
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.getOrCreateEventLog(ClusterResource.class, "", l -> e -> l.addEvent(e));
if (eventLog.open()) {
clusterMembershipService.addListener(eventLog.listener());
}
eventLog.nextEvent().whenComplete((result, error) -> {
if (error == null) {
response.resume(Response.ok(new NodeEvent(result.subject().id(), result.type())));
} else {
LOGGER.warn("{}", error);
response.resume(Response.serverError().build());
}
});
}
示例2
@GET
@Path("/events/{id}")
@Produces(MediaType.APPLICATION_JSON)
public void getEvent(@PathParam("id") String listenerId, @Context ClusterMembershipService clusterMembershipService, @Context EventManager events, @Suspended AsyncResponse response) {
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.getEventLog(ClusterResource.class, listenerId);
if (eventLog == null) {
response.resume(Response.status(Status.NOT_FOUND).build());
return;
}
eventLog.nextEvent().whenComplete((result, error) -> {
if (error == null) {
response.resume(Response.ok(new NodeEvent(result.subject().id(), result.type())));
} else {
LOGGER.warn("{}", error);
response.resume(Response.serverError().build());
}
});
}
示例3
@GET
@Path("/nodes/{node}/events")
@Produces(MediaType.APPLICATION_JSON)
public void getNodeEvent(@PathParam("node") String memberId, @Context ClusterMembershipService clusterMembershipService, @Context EventManager events, @Suspended AsyncResponse response) {
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.getOrCreateEventLog(ClusterResource.class, memberId, l -> e -> {
if (e.subject().id().id().equals(memberId)) {
l.addEvent(e);
}
});
if (eventLog.open()) {
clusterMembershipService.addListener(eventLog.listener());
}
eventLog.nextEvent().whenComplete((result, error) -> {
if (error == null) {
response.resume(Response.ok(new NodeEvent(result.subject().id(), result.type())));
} else {
LOGGER.warn("{}", error);
response.resume(Response.serverError().build());
}
});
}
示例4
@GET
@Path("/nodes/{node}/events/{id}")
@Produces(MediaType.APPLICATION_JSON)
public void getNodeEvent(@PathParam("node") String memberId, @PathParam("id") String listenerId, @Context ClusterMembershipService clusterMembershipService, @Context EventManager events, @Suspended AsyncResponse response) {
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.getEventLog(ClusterResource.class, getNodeListener(memberId, listenerId));
if (eventLog == null) {
response.resume(Response.status(Status.NOT_FOUND).build());
return;
}
eventLog.nextEvent().whenComplete((result, error) -> {
if (error == null) {
response.resume(Response.ok(new NodeEvent(result.subject().id(), result.type())));
} else {
LOGGER.warn("{}", error);
response.resume(Response.serverError().build());
}
});
}
示例5
@POST
@Path("/events")
@Produces(MediaType.APPLICATION_JSON)
public Response addListener(@Context ClusterMembershipService clusterMembershipService, @Context EventManager events) {
String listenerId = UUID.randomUUID().toString();
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.getOrCreateEventLog(ClusterResource.class, listenerId, l -> e -> l.addEvent(e));
if (eventLog.open()) {
clusterMembershipService.addListener(eventLog.listener());
}
return Response.ok(listenerId).build();
}
示例6
@DELETE
@Path("/events/{id}")
public void removeListener(@PathParam("id") String listenerId, @Context ClusterMembershipService clusterMembershipService, @Context EventManager events) {
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.removeEventLog(ClusterResource.class, listenerId);
if (eventLog != null && eventLog.close()) {
clusterMembershipService.removeListener(eventLog.listener());
}
}
示例7
@POST
@Path("/nodes/{node}/events")
@Produces(MediaType.APPLICATION_JSON)
public Response addNodeListener(@PathParam("node") String memberId, @Context ClusterMembershipService clusterMembershipService, @Context EventManager events) {
String id = UUID.randomUUID().toString();
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.getOrCreateEventLog(ClusterResource.class, getNodeListener(memberId, id), l -> e -> {
if (e.subject().id().id().equals(memberId)) {
l.addEvent(e);
}
});
if (eventLog.open()) {
clusterMembershipService.addListener(eventLog.listener());
}
return Response.ok(id).build();
}
示例8
@DELETE
@Path("/nodes/{node}/events/{id}")
public void removeNodeListener(@PathParam("node") String memberId, @PathParam("id") String listenerId, @Context ClusterMembershipService clusterMembershipService, @Context EventManager events) {
EventLog<ClusterMembershipEventListener, ClusterMembershipEvent> eventLog = events.removeEventLog(ClusterResource.class, getNodeListener(memberId, listenerId));
if (eventLog != null && eventLog.close()) {
clusterMembershipService.removeListener(eventLog.listener());
}
}