package com.breakersoft.plow.dispatcher; import com.breakersoft.plow.dispatcher.domain.DispatchJob; import com.breakersoft.plow.dispatcher.domain.DispatchProject; import com.breakersoft.plow.dispatcher.domain.DispatchResult; import com.breakersoft.plow.dispatcher.domain.DispatchTask; public interface Dispatcher<T> { DispatchResult dispatch(T resource); void dispatch(DispatchResult result, T resource); void dispatch(DispatchResult result, T resource, DispatchProject project); void dispatch(DispatchResult result, T resource, DispatchJob job); public void dispatch(DispatchResult result, T resource, DispatchTask task); }