GreenWall API Reference

Purpose

Initially, it was hoped that GreenWall could be extended to bridge
standard add-on messages. However, the WoW API doesn't have a function
similar to ChatFrame_MessageEventHandler that could be used
for add-on messages.

So this simple messaging API is provided for third-party add-on developers
who would like to be able to use the bridged communication on a guild
confederation.

A simple example, which demonstrates the use of the API, is GWSonar.

Safety First

Before any API functions are called, there are tests that should be
run to verify the environment.

Individual API checks

Check that GreenWall is loaded

if IsAddOnLoaded('GreenWall') then
    ...
end

Check that the API is supported

if GreenWallAPI ~= nil then
    ...
end

Check the API version


if GreenWallAPI >= 1 then
    ...
end

Unified API check

This combines all of the tests into one function.

function apiAvailable()
    function testAPI()
        -- Raises and exception of GreenWall is loaded or is pre-1.7.
        assert(IsAddOnLoaded('GreenWall'))
        return GreenWallAPI.version
    end

    -- Catch any exceptions
    local found, version = pcall(testAPI)

    return found and version >= 1
end

Sending a Message

To send a message to other instances of the add-on, use the following function.

GreenWallAPI.SendMessage(addon, message)

Arguments:

Receiving a Message

The receiving of messages is handled with callbacks.

1. Create the callback

local function handler(addon, sender, message, echo, guild)

Arguments:

2. Add the handler to the dispatch table

local id = GreenWallAPI.AddMessageHandler(handler, addon, priority)

Arguments:

Returns:

Dispatch Table

In addition to the GreenWallAPI.AddMessageHandler function to add a handler,
the following functions are available to manage the dispatch table.

Remove a handler

local found = GreenWallAPI.RemoveMessageHandler(id)

Arguments:

Clear one or more handlers

GreenWallAPI.ClearMessageHandlers(addon)

Arguments:

Note: A * value passed as add-on is not a wildcard in this context, it will only matched instances where the handler was installed with * as the add-on.