protected T SendClientCommand <T>(Func <GearmanClientProtocol, T> commandFunc) { foreach (var connection in GetAliveConnections()) { try { GearmanClientProtocol proto = new GearmanClientProtocol(connection); // Pass through all events proto.JobCompleted += (o, e) => onJobCompleted(e); proto.JobCreated += (o, e) => onJobCreated(e); proto.JobData += (o, e) => onJobData(e); proto.JobException += (o, e) => onJobException(e); proto.JobFailed += (o, e) => onJobFailed(e); proto.JobStatus += (o, e) => onJobStatus(e); proto.JobWarning += (o, e) => onJobWarning(e); return(commandFunc(proto)); } catch (GearmanConnectionException) { connection.MarkAsDead(); } } throw new NoServerAvailableException("Failed to send command, no job server available"); }
private static GearmanJobRequest SubmitBackgroundJob(GearmanClientProtocol protocol, string functionName, byte[] functionArgument, string uniqueId, GearmanJobPriority priority) { var jobHandle = protocol.SubmitBackgroundJob( functionName, functionArgument, uniqueId, priority); return(new GearmanJobRequest(protocol.Connection, jobHandle)); }