/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2008 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
private:
BSOCK *m_next; /* next BSOCK if duped */
JCR *m_jcr; /* jcr or NULL for error msgs */
+ pthread_mutex_t m_mutex; /* for locking if use_locking set */
char *m_who; /* Name of daemon to which we are talking */
char *m_host; /* Host name/IP */
int m_port; /* desired port */
btimer_t *m_tid; /* timer id */
+ volatile bool m_timed_out: 1; /* timed out in read/write */
+ volatile bool m_terminated: 1; /* set when BNET_TERMINATE arrives */
+ bool m_duped: 1; /* set if duped BSOCK */
+ bool m_spool: 1; /* set for spooling */
+ bool m_use_locking: 1; /* set to use locking */
void fin_init(JCR * jcr, int sockfd, const char *who, const char *host, int port,
struct sockaddr *lclient_addr);
int m_blocking; /* blocking state (0 = nonblocking, 1 = blocking) */
volatile int errors; /* incremented for each error on socket */
volatile bool m_suppress_error_msgs: 1; /* set to suppress error messages */
- volatile bool m_timed_out: 1; /* timed out in read/write */
- volatile bool m_terminated: 1; /* set when BNET_TERMINATE arrives */
- bool m_duped: 1; /* set if duped BSOCK */
- bool m_spool: 1; /* set for spooling */
volatile time_t timer_start; /* time started read/write */
volatile time_t timeout; /* timeout BSOCK after this interval */
POOLMEM *msg; /* message pool buffer */
/* methods -- in bsock.c */
void init();
void free_bsock();
+ void free_tls();
bool connect(JCR * jcr, int retry_interval, utime_t max_retry_time,
utime_t heart_beat, const char *name, char *host,
char *service, int port, int verbose);
int set_nonblocking();
int set_blocking();
void restore_blocking(int flags);
- int wait_data(int sec);
- int wait_data_intr(int sec);
+ int wait_data(int sec, int usec=0);
+ int wait_data_intr(int sec, int usec=0);
bool authenticate_director(const char *name, const char *password,
TLS_CONTEXT *tls_ctx, char *msg, int msglen);
+ bool set_locking(); /* in bsock.c */
+ void clear_locking(); /* in bsock.c */
/* Inline functions */
void set_jcr(JCR *jcr) { m_jcr = jcr; };
int port() { return m_port; };
JCR *jcr() { return m_jcr; };
JCR *get_jcr() { return m_jcr; };
+ bool is_spooling() { return m_spool; };
+ bool is_duped() { return m_duped; };
bool is_terminated() { return m_terminated; };
bool is_timed_out() { return m_timed_out; };
+ bool is_stop() { return errors || is_terminated(); }
+ bool is_error() { errno = b_errno; return errors; }
+ void set_spooling() { m_spool = true; };
+ void clear_spooling() { m_spool = false; };
+ void set_duped() { m_duped = true; };
+ void set_timed_out() { m_timed_out = true; };
+ void clear_timed_out() { m_timed_out = false; };
void set_terminated() { m_terminated = true; };
void start_timer(int sec) { m_tid = start_bsock_timer(this, sec); };
void stop_timer() { stop_bsock_timer(m_tid); };
BNET_WARNING_MSG = -20, /* Warning message */
BNET_ERROR_MSG = -21, /* Error message -- command failed */
BNET_INFO_MSG = -22, /* Info message -- status line */
- BNET_RUN_CMD = -23 /* Run command follows */
+ BNET_RUN_CMD = -23, /* Run command follows */
+ BNET_YESNO = -24, /* Request yes no response */
+ BNET_START_RTREE = -25, /* Start restore tree mode */
+ BNET_END_RTREE = -26 /* End restore tree mode */
};
#define BNET_SETBUF_READ 1 /* Arg for bnet_set_buffer_size */