Drizzled Public API Documentation

gman_servers_set.cc
1 /* Copyright (C) 2009 Sun Microsystems, Inc.
2 
3  This program is free software; you can redistribute it and/or modify
4  it under the terms of the GNU General Public License as published by
5  the Free Software Foundation; version 2 of the License.
6 
7  This program is distributed in the hope that it will be useful,
8  but WITHOUT ANY WARRANTY; without even the implied warranty of
9  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  GNU General Public License for more details.
11 
12  You should have received a copy of the GNU General Public License
13  along with this program; if not, write to the Free Software
14  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
15 
16 #include <config.h>
17 #include "plugin/gearman_udf/gman_servers_set.h"
18 #include "plugin/gearman_udf/function_map.h"
19 
20 using namespace std;
21 using namespace drizzled;
22 
24 {
25  String *servers;
26  String *function;
27 
28  if (arg_count < 1 || arg_count > 2 || !(servers= args[0]->val_str(str)))
29  {
30  null_value= 1;
31  return NULL;
32  }
33 
34  function= (arg_count == 2) ? args[1]->val_str(str) : NULL;
35 
36  if (!GetFunctionMap().add(string(function == NULL ? "" : function->ptr()),
37  string(servers->ptr())))
38  {
39  null_value= 1;
40  return NULL;
41  }
42 
43  null_value= 0;
44 
45  buffer.realloc(servers->length());
46  strcpy(buffer.ptr(), servers->ptr());
47  buffer.length(servers->length());
48  return &buffer;
49 }