123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
- *
- * Gearmand client and server library.
- *
- * Copyright (C) 2011-2012 Data Differential, http://datadifferential.com/
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- *
- * * The names of its contributors may not be used to endorse or
- * promote products derived from this software without specific prior
- * written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- */
- #pragma once
- #include <bin/function.h>
- namespace gearman_client
- {
- /**
- * Data structure for arguments and state.
- */
- class Args
- {
- public:
- Args(int p_argc, char *p_argv[]);
- ~Args();
- bool usage()
- {
- return _usage;
- }
- bool prefix() const
- {
- return _prefix;
- }
- bool background() const
- {
- return _background;
- }
- bool daemon() const
- {
- return _daemon;
- }
- gearman_job_priority_t priority() const
- {
- return _priority;
- }
- int timeout() const
- {
- return _timeout;
- }
- const char *unique() const
- {
- return _unique;
- }
- bool job_per_newline() const
- {
- return _job_per_newline;
- }
- Function::vector::iterator begin()
- {
- return _functions.begin();
- }
- Function::vector::iterator end()
- {
- return _functions.end();
- }
- bool strip_newline() const
- {
- return _strip_newline;
- }
- bool worker() const
- {
- return _worker;
- }
- const std::string &pid_file() const
- {
- return _pid_file;
- }
- int error() const
- {
- return _error;
- }
- void set_error() const
- {
- _error= 1;
- }
- uint32_t &count()
- {
- return _count;
- }
- const char *host() const
- {
- return _host;
- }
- in_port_t port() const
- {
- return _port;
- }
- bool arguments() const
- {
- if (argv[0])
- return true;
- return false;
- }
- bool verbose() const
- {
- return _verbose;
- }
- bool suppress_input() const
- {
- return _suppress_input;
- }
- bool use_ssl() const
- {
- return _use_ssl;
- }
- const char *argument(size_t arg)
- {
- return argv[arg];
- }
- char **argumentv()
- {
- return argv;
- }
- void reset_arg_error()
- {
- if (_arg_error)
- {
- free(_arg_error);
- _arg_error= NULL;
- }
- }
- bool is_error()
- {
- if (_functions.empty())
- {
- reset_arg_error();
- _arg_error= strdup("No Functions were provided");
- return true;
- }
- return _is_error;
- }
- const char* arg_error() const
- {
- return _arg_error;
- }
- bool is_valid() const
- {
- return _functions.size();
- }
- private:
- Function::vector _functions;
- char *_host;
- in_port_t _port;
- uint32_t _count;
- char *_unique;
- bool _job_per_newline;
- bool _strip_newline;
- bool _worker;
- bool _suppress_input;
- bool _verbose;
- bool _prefix;
- bool _background;
- bool _daemon;
- bool _usage;
- bool _is_error;
- bool _use_ssl;
- char *_arg_error;
- gearman_job_priority_t _priority;
- int _timeout;
- char **argv;
- mutable int _error;
- std::string _pid_file;
- void init(int argc);
- void add(const char *name)
- {
- _functions.push_back(Function(name));
- }
- };
- } // namespace gearman_client
|