# 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