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

« back to all changes in this revision

Viewing changes to libgearman/function/make.cc

  • Committer: Package Import Robot
  • Author(s): Stig Sandbeck Mathisen, Michael Fladischer, Stig Sandbeck Mathisen
  • Date: 2012-01-23 11:31:08 UTC
  • mfrom: (6.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20120123113108-wl1yhiba13q9jusb
Tags: 0.27-1
[Michael Fladischer]
* Patch: fix spelling
* Patch: remove dependency on googleanalytics
* Patch: fix tests
* Use non-authenticating URL for Vcs-Git.
* Add "status" action to init script.

[Stig Sandbeck Mathisen]
* New upstream release (Closes: #621486) (LP: #682680)
* Remove build dependency on drizzle
  (until it reaches testing again)
* Build with support for tokyocabinet
* Remove backported ipv6 patch
* Patch: disable hostile build tests, they take hours...
* Patch: workaround duplicate address issue for tests
* Do not build API documentation, the sources are not shipped in
  upstream tarball
* Update debian/copyright

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
 
 
43
#include <libgearman/function/make.hpp>
 
44
#include <libgearman/function/function_v1.hpp>
 
45
#include <libgearman/function/function_v2.hpp>
 
46
#include <libgearman/function/partition.hpp>
 
47
#include <libgearman/function/null.hpp>
 
48
 
 
49
_worker_function_st *make(gearman_vector_st* namespace_arg,
 
50
                          const char *name, size_t name_length, 
 
51
                          const gearman_function_t &function_arg, 
 
52
                          void *context_arg)
 
53
{
 
54
  _worker_function_st *function= NULL;
 
55
 
 
56
  switch (function_arg.kind)
 
57
  {
 
58
    case GEARMAN_WORKER_FUNCTION_V1:
 
59
      function= new (std::nothrow) FunctionV1(function_arg.callback.function_v1.func, context_arg);
 
60
      break;
 
61
 
 
62
    case GEARMAN_WORKER_FUNCTION_V2:
 
63
      function= new (std::nothrow) FunctionV2(function_arg.callback.function_v2.func, context_arg);
 
64
      break;
 
65
 
 
66
    case GEARMAN_WORKER_FUNCTION_PARTITION:
 
67
      function= new (std::nothrow) Partition(function_arg.callback.partitioner.func, 
 
68
                                             function_arg.callback.partitioner.aggregator,
 
69
                                             context_arg);
 
70
      break;
 
71
 
 
72
    case GEARMAN_WORKER_FUNCTION_NULL:
 
73
      function= new (std::nothrow) Null(context_arg);
 
74
      break;
 
75
  }
 
76
 
 
77
  if (function and function->init(namespace_arg, name, name_length) == false)
 
78
  {
 
79
    delete function;
 
80
    return NULL;
 
81
  }
 
82
 
 
83
  return function;
 
84
}