Merge lp:~brianaker/gearmand/1063648 into lp:gearmand

Proposed by Brian Aker
Status: Merged
Merged at revision: 860
Proposed branch: lp:~brianaker/gearmand/1063648
Merge into: lp:gearmand
Diff against target: 139 lines (+48/-1)
3 files modified
libgearman/interface/worker.hpp (+13/-1)
libgearman/worker.cc (+15/-0)
tests/libgearman-1.0/worker_test.cc (+20/-0)
To merge this branch: bzr merge lp:~brianaker/gearmand/1063648
Reviewer Review Type Date Requested Status
Tangent Trunk Pending
Review via email: mp+180497@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'libgearman/interface/worker.hpp'
--- libgearman/interface/worker.hpp 2013-07-13 22:59:44 +0000
+++ libgearman/interface/worker.hpp 2013-08-16 08:33:09 +0000
@@ -49,6 +49,7 @@
49 bool grab_uniq;49 bool grab_uniq;
50 bool grab_all;50 bool grab_all;
51 bool timeout_return;51 bool timeout_return;
52 bool _in_work;
5253
53 Options() :54 Options() :
54 non_blocking(false),55 non_blocking(false),
@@ -56,7 +57,8 @@
56 change(false),57 change(false),
57 grab_uniq(true),58 grab_uniq(true),
58 grab_all(true),59 grab_all(true),
59 timeout_return(false)60 timeout_return(false),
61 _in_work(false)
60 { }62 { }
61 } options;63 } options;
62 enum gearman_worker_state_t state;64 enum gearman_worker_state_t state;
@@ -142,6 +144,16 @@
142 universal.options._ssl= ssl_;144 universal.options._ssl= ssl_;
143 }145 }
144146
147 bool in_work() const
148 {
149 return options._in_work;
150 }
151
152 void in_work(bool in_work_)
153 {
154 options._in_work= in_work_;
155 }
156
145 bool has_identifier() const157 bool has_identifier() const
146 {158 {
147 return universal.has_identifier();159 return universal.has_identifier();
148160
=== modified file 'libgearman/worker.cc'
--- libgearman/worker.cc 2013-08-05 22:43:13 +0000
+++ libgearman/worker.cc 2013-08-16 08:33:09 +0000
@@ -656,6 +656,7 @@
656 Worker* worker= worker_shell->impl();656 Worker* worker= worker_shell->impl();
657 struct _worker_function_st *function;657 struct _worker_function_st *function;
658 uint32_t active;658 uint32_t active;
659 bool no_job= false;
659660
660 gearman_return_t unused;661 gearman_return_t unused;
661 if (not ret_ptr)662 if (not ret_ptr)
@@ -842,6 +843,7 @@
842 if (worker->job()->impl()->assigned.command == GEARMAN_COMMAND_NO_JOB or843 if (worker->job()->impl()->assigned.command == GEARMAN_COMMAND_NO_JOB or
843 worker->job()->impl()->assigned.command == GEARMAN_COMMAND_OPTION_RES)844 worker->job()->impl()->assigned.command == GEARMAN_COMMAND_OPTION_RES)
844 {845 {
846 no_job= true;
845 gearman_packet_free(&(worker->job()->impl()->assigned));847 gearman_packet_free(&(worker->job()->impl()->assigned));
846 break;848 break;
847 }849 }
@@ -861,6 +863,12 @@
861 }863 }
862 }864 }
863865
866 if (worker->in_work() == false and no_job)
867 {
868 *ret_ptr= GEARMAN_NO_JOBS;
869 break;
870 }
871
864 case GEARMAN_WORKER_STATE_PRE_SLEEP:872 case GEARMAN_WORKER_STATE_PRE_SLEEP:
865 for (worker->con= (&worker->universal)->con_list; worker->con;873 for (worker->con= (&worker->universal)->con_list; worker->con;
866 worker->con= worker->con->next_connection())874 worker->con= worker->con->next_connection())
@@ -937,6 +945,11 @@
937945
938 break;946 break;
939 }947 }
948
949 if (*ret_ptr == GEARMAN_NO_JOBS)
950 {
951 break;
952 }
940 }953 }
941 }954 }
942955
@@ -1038,8 +1051,10 @@
1038 {1051 {
1039 case GEARMAN_WORKER_WORK_UNIVERSAL_GRAB_JOB:1052 case GEARMAN_WORKER_WORK_UNIVERSAL_GRAB_JOB:
1040 {1053 {
1054 worker->in_work(true);
1041 gearman_return_t ret;1055 gearman_return_t ret;
1042 worker->work_job(gearman_worker_grab_job(worker->shell(), NULL, &ret));1056 worker->work_job(gearman_worker_grab_job(worker->shell(), NULL, &ret));
1057 worker->in_work(false);
10431058
1044 if (gearman_failed(ret))1059 if (gearman_failed(ret))
1045 {1060 {
10461061
=== modified file 'tests/libgearman-1.0/worker_test.cc'
--- tests/libgearman-1.0/worker_test.cc 2013-08-11 05:40:05 +0000
+++ tests/libgearman-1.0/worker_test.cc 2013-08-16 08:33:09 +0000
@@ -148,6 +148,20 @@
148 return TEST_SUCCESS;148 return TEST_SUCCESS;
149}149}
150150
151static test_return_t gearman_worker_grab_job_TEST(void *)
152{
153 libgearman::Worker worker(libtest::default_port());
154
155 ASSERT_EQ(gearman_worker_register(&worker, __func__, 0), GEARMAN_SUCCESS);
156
157 gearman_return_t ret;
158 gearman_job_st* job= gearman_worker_grab_job(&worker, NULL, &ret);
159 ASSERT_NULL(job);
160 ASSERT_EQ(GEARMAN_NO_JOBS, ret);
161
162 return TEST_SUCCESS;
163}
164
151static test_return_t gearman_worker_free_TEST(void *)165static test_return_t gearman_worker_free_TEST(void *)
152{166{
153 gearman_worker_free(NULL);167 gearman_worker_free(NULL);
@@ -1599,6 +1613,11 @@
1599 {0, 0, 0}1613 {0, 0, 0}
1600};1614};
16011615
1616test_st gearman_worker_grab_job_TESTS[] ={
1617 {"gearman_worker_grab_job(NO_JOBS)", 0, gearman_worker_grab_job_TEST },
1618 {0, 0, 0}
1619};
1620
1602test_st gearman_worker_st_NULL_invocation_TESTS[] ={1621test_st gearman_worker_st_NULL_invocation_TESTS[] ={
1603 {"gearman_worker_free()", 0, gearman_worker_free_TEST },1622 {"gearman_worker_free()", 0, gearman_worker_free_TEST },
1604 {"gearman_worker_error()", 0, gearman_worker_error_TEST },1623 {"gearman_worker_error()", 0, gearman_worker_error_TEST },
@@ -1619,6 +1638,7 @@
1619 {"worker", 0, 0, worker_TESTS},1638 {"worker", 0, 0, worker_TESTS},
1620 {"worker defaults", 0, 0, worker_defaults},1639 {"worker defaults", 0, 0, worker_defaults},
1621 {"null gearman_worker_st invocation", 0, 0, gearman_worker_st_NULL_invocation_TESTS },1640 {"null gearman_worker_st invocation", 0, 0, gearman_worker_st_NULL_invocation_TESTS },
1641 {"gearman_worker_grab_job()", 0, 0, gearman_worker_grab_job_TESTS },
1622 {"gearman_worker_set_identifier()", 0, 0, gearman_worker_set_identifier_TESTS},1642 {"gearman_worker_set_identifier()", 0, 0, gearman_worker_set_identifier_TESTS},
1623 {0, 0, 0, 0}1643 {0, 0, 0, 0}
1624};1644};

Subscribers

People subscribed via source and target branches

to all changes: