/gearman-server

Gearman C Server

Primary LanguageCOtherNOASSERTION

# Gearman server and library
# Copyright (C) 2008 Brian Aker, Eric Day
# All rights reserved.
#
# Use and distribution licensed under the BSD license.  See
# the COPYING file in this directory for full text.


*** IMPORTANT ***

Since release 0.3, the default port has been changed to the new IANA
assigned port, 4730. If you are using this package with older clients,
workers, or job servers that ran on port 7003, be sure to set port
options appropriately!

*** IMPORTANT ***


Hi!

You've most likely downloaded this package as a tar.gz distribution,
so you'll want to read Getting Started. If you are interested in
developing or submitting patches to the project, read the Contributing
and Coding Style sections.


Getting Started
---------------

To build, you can follow the normal:

./configure
make
make install

You can also run 'make test' before installing to make sure everything
checks out ok. Once you have it installed, you can start the Gearman
job server with:

gearmand -v

This will start it while printing some verbose messages. To try
running a job through it, look in the examples/ directory of this
source and run:

./reverse_worker

Once that is running, you can run your first job with:

./reverse_client "Hello, Gearman!"

If all goes well, the reverse_worker application should have output:

Job=H:lap:1 Workload=Hello, Gearman! Result=!namraeG ,olleH

While the reverse_client returned:

Result=!namraeG ,olleH

If you want to start writing your own client and workers, be sure to
check out the developer API at:

http://www.gearman.org/docs/api/

You can also find other useful resources related to the project at:

http://www.gearman.org/

Enjoy!


Contributing
------------

If you are getting this code from https://launchpad.net/gearmand
then continue reading. Otherwise these directions are not for you
(well maybe...).

To obtain code from https://launchpad.net/gearmand you will need to
issue the following command:

bzr branch lp:gearmand

Once the tree is branched you will need to build the "configure"
script. You can do this by running the script:

./config/autorun.sh

It will set up all of the files you need to build the package. At
that point it is just the typical "./configure; make; make test;
make install"

For a tarball release do a "make dist" and for an RPM type "make rpm".

For patches please create a branch on launchpad and propose it to be
merged into the trunk. You can find out more information on how to
do this at the launchpad help site:

https://help.launchpad.net/


Coding Style
------------

Variables during assignment should be like:
a= 12;

When in doubt, use (). It means I clearly know that you meant for an
operation to follow a specific order.

Cast return types void when there is a possibility of failure (don't
bother with printf, use common sense):

(void)some_function(...);

New functions should be named "object_verb_(item_to_act_on)". You
should email the list if you are extending the API.

Use spaces after while, for, do, if, else. Don't around anything else.

If/else bracket style is:
if ()
{
}
else
{
}

Make sure structs have a typedef with a _st suffix, enums have a _t
suffix, and functions have a _fn suffix. For example:

typedef struct gearman_task { ... } gearman_task_st;
typedef enum gearman_return { ... } gearman_return_t;
typedef gearman_return_t (gearman_complete_fn)(gearman_task_st *task);

Thanks and keep hacking!

Cheers,
  -Brian
  Seattle, WA.

  -Eric
  Portland, OR