package io.cattle.platform.agent;
import io.cattle.platform.eventing.EventCallOptions;
import io.cattle.platform.eventing.model.Event;
import com.google.common.util.concurrent.ListenableFuture;
public interface RemoteAgent {
long getAgentId();
void publish(Event event);
Event callSync(Event event);
Event callSync(Event event, EventCallOptions options);
Event callSync(Event event, long timeoutMillis);
ListenableFuture<? extends Event> call(Event event);
ListenableFuture<? extends Event> call(Event event, EventCallOptions options);
ListenableFuture<? extends Event> call(Event event, long timeoutMillis);
<T extends Event> T callSync(Event event, Class<T> reply);
<T extends Event> T callSync(Event event, Class<T> reply, EventCallOptions options);
<T extends Event> T callSync(Event event, Class<T> reply, long timeoutMillis);
<T extends Event> ListenableFuture<T> call(Event event, Class<T> reply);
<T extends Event> ListenableFuture<T> call(Event event, Class<T> reply, EventCallOptions options);
<T extends Event> ListenableFuture<T> call(Event event, Class<T> reply, long timeoutMillis);
}