root/headers/os/add-ons/mail_daemon/MailFilter.h
/*
 * Copyright 2011-2013, Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _MAIL_FILTER_H
#define _MAIL_FILTER_H


#include "MailProtocol.h"
#include "MailSettings.h"


class BMailProtocol;
class BMailSettingsView;


class BMailFilter {
public:
                                                                BMailFilter(BMailProtocol& protocol,
                                                                        const BMailAddOnSettings* settings);
        virtual                                         ~BMailFilter();

        // Message hooks if filter is installed to an inbound protocol
        virtual BMailFilterAction       HeaderFetched(entry_ref& ref, BFile& file,
                                                                        BMessage& attributes);
        virtual void                            BodyFetched(const entry_ref& ref, BFile& file,
                                                                        BMessage& attributes);
        virtual void                            MailboxSynchronized(status_t status);

        // Message hooks if filter is installed to an outbound protocol
        virtual void                            MessageReadyToSend(const entry_ref& ref,
                                                                        BFile& file);
        virtual void                            MessageSent(const entry_ref& ref, BFile& file);

protected:
                        BMailProtocol&          fMailProtocol;
                        const BMailAddOnSettings* fSettings;
};


// Your filter needs to export these hooks in order to be picked up
extern "C" BMailSettingsView* instantiate_filter_settings_view(
        const BMailAccountSettings& accountSettings,
        const BMailAddOnSettings& settings);
extern "C" BString filter_name(const BMailAccountSettings& accountSettings,
        const BMailAddOnSettings* settings);
extern "C" BMailFilter* instantiate_filter(BMailProtocol& protocol,
        const BMailAddOnSettings& settings);


#endif  // _MAIL_FILTER_H