/* $Id$ */
/*
* FedStage DRMAA for PBS Pro
* Copyright (C) 2006-2009 FedStage Systems
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef __PBS_DRMAA__LOG_READER_H
#define __PBS_DRMAA__LOG_READER_H
#ifdef HAVE_CONFIG_H
# include
#endif
#include
#include
typedef struct pbsdrmaa_log_reader_s pbsdrmaa_log_reader_t;
pbsdrmaa_log_reader_t *
pbsdrmaa_log_reader_new ( fsd_drmaa_session_t * session, fsd_job_t * job );
pbsdrmaa_log_reader_t *
pbsdrmaa_log_reader_accounting_new ( fsd_drmaa_session_t * session, fsd_job_t * job );
void
pbsdrmaa_log_reader_destroy ( pbsdrmaa_log_reader_t * self );
struct pbsdrmaa_log_reader_s {
fsd_drmaa_session_t *volatile session ;
fsd_job_t *volatile job;
bool (*
read_log) ( pbsdrmaa_log_reader_t * self );
void (*
select_file) ( pbsdrmaa_log_reader_t * self );
/* line - read line, buffer - keeps read but not returned lines, idx, end_idx and line_idx values needed to be kept outside the function */
ssize_t (*
read_line) ( pbsdrmaa_log_reader_t * self, char * line, char * buffer, ssize_t size, int * idx, int * end_idx, int * line_idx );
/* specifies if function should run */
bool run_flag;
/* date of current file */
time_t t;
/* for job_on_missing - available log files */
char ** log_files;
/* for job_on_missing - number of log files */
int log_files_number;
/* log file descriptor */
int volatile fd;
/* for job_on_missing - log file size when function was ran */
off_t log_file_initial_size;
/* for job_on_missing - read lines size */
off_t log_file_read_size;
/* for wait_thread - day changed */
bool volatile date_changed;
/* for wait_thread - log file first open */
bool volatile first_open;
char * name;
};
#endif /* __PBS_DRMAA__LOG_READER_H */