~clint-fewbar/ubuntu/precise/gearmand/drop-unneeded-patches

« back to all changes in this revision

Viewing changes to libgearman/function/partition.cc

  • Committer: Bazaar Package Importer
  • Author(s): Monty Taylor
  • Date: 2009-08-11 10:06:22 UTC
  • mto: (1.2.3 upstream) (6.1.1 sid)
  • mto: This revision was merged to the branch mainline in revision 3.
  • Revision ID: james.westby@ubuntu.com-20090811100622-6ig4iknanc73olum
ImportĀ upstreamĀ versionĀ 0.9

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
2
 
 * 
3
 
 *  Gearmand client and server library.
4
 
 *
5
 
 *  Copyright (C) 2011 Data Differential, http://datadifferential.com/
6
 
 *  All rights reserved.
7
 
 *
8
 
 *  Redistribution and use in source and binary forms, with or without
9
 
 *  modification, are permitted provided that the following conditions are
10
 
 *  met:
11
 
 *
12
 
 *      * Redistributions of source code must retain the above copyright
13
 
 *  notice, this list of conditions and the following disclaimer.
14
 
 *
15
 
 *      * Redistributions in binary form must reproduce the above
16
 
 *  copyright notice, this list of conditions and the following disclaimer
17
 
 *  in the documentation and/or other materials provided with the
18
 
 *  distribution.
19
 
 *
20
 
 *      * The names of its contributors may not be used to endorse or
21
 
 *  promote products derived from this software without specific prior
22
 
 *  written permission.
23
 
 *
24
 
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25
 
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26
 
 *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27
 
 *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28
 
 *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29
 
 *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30
 
 *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31
 
 *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32
 
 *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33
 
 *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34
 
 *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35
 
 *
36
 
 */
37
 
 
38
 
#include <libgearman/common.h>
39
 
 
40
 
#include <libgearman/packet.hpp>
41
 
#include <libgearman/function/base.hpp>
42
 
#include <libgearman/function/partition.hpp>
43
 
 
44
 
/*
45
 
  Partition function
46
 
*/
47
 
gearman_function_error_t Partition::callback(gearman_job_st* job, void *context_arg)
48
 
{
49
 
  if (gearman_job_is_map(job))
50
 
  {
51
 
    gearman_job_build_reducer(job, aggregator_fn);
52
 
  }
53
 
 
54
 
  gearman_return_t error= _partition_fn(job, context_arg);
55
 
  switch (error)
56
 
  {
57
 
  case GEARMAN_FATAL:
58
 
    job->error_code= GEARMAN_FATAL;
59
 
    return GEARMAN_FUNCTION_FATAL;
60
 
 
61
 
  case GEARMAN_SHUTDOWN:
62
 
    job->error_code= GEARMAN_SUCCESS;
63
 
    return GEARMAN_FUNCTION_SHUTDOWN;
64
 
 
65
 
  case GEARMAN_ERROR:
66
 
    job->error_code= GEARMAN_ERROR;
67
 
    return GEARMAN_FUNCTION_ERROR;
68
 
 
69
 
  case GEARMAN_SUCCESS:
70
 
    job->error_code= GEARMAN_SUCCESS;
71
 
    return GEARMAN_FUNCTION_SUCCESS;
72
 
 
73
 
  case GEARMAN_IO_WAIT:
74
 
  case GEARMAN_SHUTDOWN_GRACEFUL:
75
 
  case GEARMAN_ERRNO:
76
 
  case GEARMAN_EVENT:
77
 
  case GEARMAN_TOO_MANY_ARGS:
78
 
  case GEARMAN_NO_ACTIVE_FDS:
79
 
  case GEARMAN_INVALID_MAGIC:
80
 
  case GEARMAN_INVALID_COMMAND:
81
 
  case GEARMAN_INVALID_PACKET:
82
 
  case GEARMAN_UNEXPECTED_PACKET:
83
 
  case GEARMAN_GETADDRINFO:
84
 
  case GEARMAN_NO_SERVERS:
85
 
  case GEARMAN_LOST_CONNECTION:
86
 
  case GEARMAN_MEMORY_ALLOCATION_FAILURE:
87
 
  case GEARMAN_JOB_EXISTS:
88
 
  case GEARMAN_JOB_QUEUE_FULL:
89
 
  case GEARMAN_SERVER_ERROR:
90
 
  case GEARMAN_WORK_DATA:
91
 
  case GEARMAN_WORK_WARNING:
92
 
  case GEARMAN_WORK_STATUS:
93
 
  case GEARMAN_WORK_EXCEPTION:
94
 
  case GEARMAN_NOT_CONNECTED:
95
 
  case GEARMAN_COULD_NOT_CONNECT:
96
 
  case GEARMAN_SEND_IN_PROGRESS:
97
 
  case GEARMAN_RECV_IN_PROGRESS:
98
 
  case GEARMAN_NOT_FLUSHING:
99
 
  case GEARMAN_DATA_TOO_LARGE:
100
 
  case GEARMAN_INVALID_FUNCTION_NAME:
101
 
  case GEARMAN_INVALID_WORKER_FUNCTION:
102
 
  case GEARMAN_NO_REGISTERED_FUNCTION:
103
 
  case GEARMAN_NO_REGISTERED_FUNCTIONS:
104
 
  case GEARMAN_NO_JOBS:
105
 
  case GEARMAN_ECHO_DATA_CORRUPTION:
106
 
  case GEARMAN_NEED_WORKLOAD_FN:
107
 
  case GEARMAN_PAUSE:
108
 
  case GEARMAN_UNKNOWN_STATE:
109
 
  case GEARMAN_PTHREAD:
110
 
  case GEARMAN_PIPE_EOF:
111
 
  case GEARMAN_QUEUE_ERROR:
112
 
  case GEARMAN_FLUSH_DATA:
113
 
  case GEARMAN_SEND_BUFFER_TOO_SMALL:
114
 
  case GEARMAN_IGNORE_PACKET:
115
 
  case GEARMAN_UNKNOWN_OPTION:
116
 
  case GEARMAN_TIMEOUT:
117
 
  case GEARMAN_ARGUMENT_TOO_LARGE:
118
 
  case GEARMAN_INVALID_ARGUMENT:
119
 
  case GEARMAN_IN_PROGRESS:
120
 
  case GEARMAN_MAX_RETURN:
121
 
    break;
122
 
  }
123
 
 
124
 
  return GEARMAN_FUNCTION_INVALID_ARGUMENT;
125
 
}