/************************************************/
/*                                              */
/* File        : spy_extended.h                 */
/* Description : Extended spy library header    */
/*                                              */
/* Author: Sfiligoi Igor                        */
/*                                              */
/* Created      : 16.12.1998                    */
/* Last modified: 16.12.1998                    */
/*                                              */
/************************************************/

#ifndef SPY_EXTENDED_H
#define SPY_EXTENDED_H

#ifdef __cplusplus
extern "C" {
#endif

/* The error constants are common to spy.h and spy_extended.h */
#ifndef SPY_ERROR_OK
# define SPY_ERROR_OK           0
# define SPY_ERROR_UNKNOWN      1
# define SPY_ERROR_EMPTY       10
#endif

#define SPY_TYPE_CB      0
#define SPY_TYPE_INET    1
#define SPY_TYPE_YBOS    2

typedef struct SPY_ext_id_
        {
	  int cid;
	  int last_event_nr;

	  int spy_type;
        } SPY_ext_id_base;

typedef SPY_ext_id_base *SPY_ext_id;

int spy_open_CB(char   *keyname,      /* IN : keyname of the Circular buffer */
		SPY_ext_id *sid);     /* OUT: SPY_id */

int spy_open_inet(char   *raddr,         /* IN : address of the farm (can be a.b.c.d or 1.2.3.4) */
		  int     rport,         /* IN : port of the farm */
		  SPY_ext_id *sid);      /* OUT: SPY_id */

int spy_open_ybos(char   *filename,      /* IN : filename of the YBOS file */
		  SPY_ext_id *sid);      /* OUT: SPY_id */

int spy_get_ext(SPY_ext_id sid,/* IN : SPY_id returned by spy_open_... */
		char **buf,    /* OUT: pointer to the data */
		               /* Should be disposed by the caller */
		int *bufsize); /* OUT: buffer size */

int spy_close_ext(SPY_ext_id sid);

#ifdef __cplusplus
}
#endif


#endif /* SPY_EXTENDED_H */