/*
* pfqueue backend
*/
#ifndef PFQ_BACKEND_H
#define PFQ_BACKEND_H
#define LOGLEVEL LOG_USER | LOG_ERR
#define BECAPS_MSG_DEL 1 // Can delete messages
#define BECAPS_MSG_HOLD 2 // Can hold (freeze) messages
#define BECAPS_MSG_REQUEUE 4 // Can requeue messages
#define BECAPS_MSG_ENVELOPE 8 // Can extract from/to from envelope
#define BECAPS_MIXED_QUEUE 16 // Backend is single-queue, with status somewhere in some files
#define BECAPS_MSG_LOG 32 // Each message has its own log
#define BUF_SIZE 250
#ifndef FALSE
#define FALSE 0
#endif
#include "../pfqmessage.h"
#define PFQ_API_VERSION 3
#define PFBE_OK 0
#define PFBE_ERROR -3
#define PFBE_UNUSABLE 1
#define PFBE_MSGNOTEX -1
#define PFBE_MSGCACHED -2
#define PFBE_SERROR "*Error*"
#define PFBE_SNOTFOUND "*Not found*"
struct pfb_conf_t {
int max_char; /* char buffer max length */
char command_path[200]; /* path to executables */
char config_path[200]; /* path to config */
int msg_max; /* max num of messages */
int scan_limit; /* max secs for a single scan */
char version[200]; /* version of mta to use */
char host[200]; /* remote host (only for socket backend) */
int port; /* remote port (only for socket backend) */
};
int pfb_caps;
int pfb_using_envelope;
// Returns backend API version
int pfb_apiversion();
// Returns backend id string
const char *pfb_id();
// Returns backend version
const char *pfb_version();
// Returns conf structure
struct pfb_conf_t *pfb_getconf();
// Init backend
int pfb_init();
// Setup backend
int pfb_setup ( struct msg_t*, struct be_msg_t* );
// Closes backend
int pfb_close();
// Fill message queue (called from pthread)
int pfb_fill_queue ();
// Retreive from/to/subject fields
int pfb_retr_headers ( const char* );
// Retreive message status
int pfb_retr_status ( const char* );
// Retreive message body
int pfb_retr_body ( const char*, char*, size_t );
// Delete a message
int pfb_message_delete ( const char* );
// Hold a message
int pfb_message_hold ( const char* );
//
// Release a message
int pfb_message_release ( const char* );
// Requeue a message
int pfb_message_requeue ( const char* );
// Change current queue
int pfb_set_queue ( int );
// Set/unset use of envelope for from/to retreival
void pfb_use_envelope ( int );
// Get backend caps
int pfb_get_caps();
// Returns the queue name
char* pfb_queue_name( int );
// Returns the number of the queues
int pfb_queue_count();
// Ptr to main queue
struct be_msg_t *my_queue;
// Ptr to backend queue
struct msg_t *ext_queue;
// Sets the number of seconds the queue scanning should not exceed
int dig_limit;
// Time digging was last started
int dig_start;
// Max number of messages to handle
int msg_max;
#endif
syntax highlighted by Code2HTML, v. 0.9.1