상속: GearmanProtocol
예제 #1
0
        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");
        }
예제 #2
0
        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));
        }