⚠️ *UNMAINTAINED* C# Gearman API
C#
Latest commit 1db9bde Jun 7, 2012 @osks osks Implemented IDisposable for GearmanConnectionManager.
Extracted an interface from GearmanClient to IGearmanClient.
Updated version number to 0.3.3.0

README.txt

GearmanSharp is a C# API for Gearman (http://www.gearman.org).


Description
===========
GearmanSharp is a C# API for Gearman. Currently it only provides the basic
parts of the protocol, but there is enough to build a basic client and worker.
In the future, we hope it will provide a more complete implementation of the
protocol. It requires .NET 3.5.


License
=======
Copyright 2010 Twingly AB. GearmanSharp is provided under the three-clause
BSD License. See the included LICENSE.txt file for specifics.


Source code
===========
The source code is located on GitHub at:
http://github.com/twingly/GearmanSharp/


Examples
========
For more examples, check:
http://github.com/twingly/GearmanSharp/blob/master/GearmanSharp/Examples/Example.cs


* Client examples

    // Create a simple client and add "localhost" as server
    using (var client = new GearmanClient())
    {
        client.AddServer("localhost");

        // You can submit a simple background job
        client.SubmitBackgroundJob("reverse",
            Encoding.ASCII.GetBytes("helloworld"));

        // And you can submit a more advanced job
        var oembeds = client.SubmitJob<IList<string>, IList<OEmbed>>(
            "GetOEmbeds",
            new List<string> { "http://www.youtube.com/watch?v=abc123456" },
            Serializers.JsonSerialize<IList<string>>,
            Serializers.JsonDeserialize<IList<OEmbed>>);
    }



* Worker examples

    // Create a simple worker and register a function that handles "reverse"
    var worker = new GearmanWorker();
    worker.AddServer("localhost");
    worker.RegisterFunction("reverse", ReverseFunction);

    // Perform one unit of work
    worker.Work();
    
    // You can also register more advanced functions
    worker.RegisterFunction<IList<string>, IList<OEmbed>>("GetOEmbeds",
        GetOembedsFunction,
        Serializers.JsonDeserialize<IList<string>>,
        Serializers.JsonSerialize<IList<OEmbed>>);
    
    // The function definition and GearmanJob:
    public void GetOEmbeds(IGearmanJob<IList<string>, IList<OEmbed>> job)
    {
        // The FunctionArgument of the job will be an IList<string>
        IList<string> urls = job.FunctionArgument;
        // ...
        
        // and the Complete(..) function takes an IList<OEmbed>
        job.Complete(new List<OEmbed>());
    }
        
    // You can also start a worker in a separate thread
    var worker = new GearmanThreadedWorker();
    
    // Start the worker thread
    worker.StartWorkLoop();
    // ... do other stuff ...
    worker.StopWorkLoop();