Removed stdout specific functions in skygw_utils and moved the logic to log_manager instead.

This commit is contained in:
Markus Makela
2015-04-30 04:26:48 +03:00
parent 47e5b12eb8
commit 7c988c4fd5
3 changed files with 36 additions and 69 deletions

View File

@ -2161,9 +2161,9 @@ static bool logfile_open_file(
if(use_stdout) if(use_stdout)
{ {
fw->fwr_file[lf->lf_id] = skygw_file_init_stdout ( fw->fwr_file[lf->lf_id] = skygw_file_alloc (
lf->lf_full_file_name, lf->lf_full_file_name);
lf->lf_full_link_name); fw->fwr_file[lf->lf_id]->sf_file = stdout;
} }
else if (lf->lf_store_shmem) else if (lf->lf_store_shmem)
{ {
@ -2742,7 +2742,7 @@ static void filewriter_done(
{ {
id = (logfile_id_t)i; id = (logfile_id_t)i;
if(use_stdout) if(use_stdout)
skygw_file_close_stdout(fw->fwr_file[id], true); skygw_file_free(fw->fwr_file[id]);
else else
skygw_file_close(fw->fwr_file[id], true); skygw_file_close(fw->fwr_file[id], true);
} }
@ -2876,6 +2876,9 @@ static void* thr_filewriter_fun(
} }
else if ((succp = logfile_open_file(fwr, lf))) else if ((succp = logfile_open_file(fwr, lf)))
{ {
if(use_stdout)
skygw_file_free (file);
else
skygw_file_close(file, false); /*< close old file */ skygw_file_close(file, false); /*< close old file */
} }

View File

@ -1882,9 +1882,8 @@ return_rc:
return rc; return rc;
} }
skygw_file_t* skygw_file_init( skygw_file_t* skygw_file_alloc(
char* fname, char* fname)
char* symlinkname)
{ {
skygw_file_t* file; skygw_file_t* file;
@ -1894,12 +1893,26 @@ skygw_file_t* skygw_file_init(
"* Error : Memory allocation for file %s failed.\n", "* Error : Memory allocation for file %s failed.\n",
fname); fname);
perror("SkyGW file allocation\n"); perror("SkyGW file allocation\n");
goto return_file; return NULL;
} }
ss_dassert(file != NULL); ss_dassert(file != NULL);
file->sf_chk_top = CHK_NUM_FILE; file->sf_chk_top = CHK_NUM_FILE;
file->sf_chk_tail = CHK_NUM_FILE; file->sf_chk_tail = CHK_NUM_FILE;
file->sf_fname = strdup(fname); file->sf_fname = strdup(fname);
return file;
}
skygw_file_t* skygw_file_init(
char* fname,
char* symlinkname)
{
skygw_file_t* file;
if ((file = skygw_file_alloc (fname)) == NULL)
{
/** Error was reported in skygw_file_alloc */
goto return_file;
}
if ((file->sf_file = fopen(file->sf_fname, "a")) == NULL) if ((file->sf_file = fopen(file->sf_fname, "a")) == NULL)
{ {
@ -1963,58 +1976,10 @@ return_file:
return file; return file;
} }
void skygw_file_free(skygw_file_t* file)
skygw_file_t* skygw_file_init_stdout(
char* fname,
char* symlinkname)
{ {
skygw_file_t* file;
if ((file = (skygw_file_t *)calloc(1, sizeof(skygw_file_t))) == NULL)
{
fprintf(stderr,
"* Error : Memory allocation for file %s failed.\n",
fname);
perror("SkyGW file allocation\n");
goto return_file;
}
ss_dassert(file != NULL);
file->sf_chk_top = CHK_NUM_FILE;
file->sf_chk_tail = CHK_NUM_FILE;
file->sf_fname = strdup(fname);
file->sf_file = stdout;
CHK_FILE(file);
return_file:
return file;
}
void skygw_file_close_stdout(
skygw_file_t* file,
bool shutdown)
{
int fd;
int err;
if (file != NULL)
{
CHK_FILE(file);
if (!file_write_footer(file, shutdown))
{
fprintf(stderr,
"* Writing footer to log file %s failed.\n",
file->sf_fname);
perror("Write fike footer\n");
}
fd = fileno(file->sf_file);
fsync(fd);
ss_dfprintf(stderr, "Closed %s\n", file->sf_fname);
free(file->sf_fname); free(file->sf_fname);
free(file); free(file);
}
} }
void skygw_file_close( void skygw_file_close(
@ -2049,8 +2014,7 @@ void skygw_file_close(
else else
{ {
ss_dfprintf(stderr, "Closed %s\n", file->sf_fname); ss_dfprintf(stderr, "Closed %s\n", file->sf_fname);
free(file->sf_fname); skygw_file_free (file);
free(file);
} }
} }
} }

View File

@ -216,10 +216,10 @@ EXTERN_C_BLOCK_END
/** Skygw thread routines */ /** Skygw thread routines */
/** Skygw file routines */ /** Skygw file routines */
skygw_file_t* skygw_file_alloc(char* fname);
void skygw_file_free(skygw_file_t* file);
skygw_file_t* skygw_file_init(char* fname, char* symlinkname); skygw_file_t* skygw_file_init(char* fname, char* symlinkname);
skygw_file_t* skygw_file_init_stdout(char* fname, char* symlinkname);
void skygw_file_close(skygw_file_t* file, bool shutdown); void skygw_file_close(skygw_file_t* file, bool shutdown);
void skygw_file_close_stdout(skygw_file_t*, bool);
int skygw_file_write( int skygw_file_write(
skygw_file_t* file, skygw_file_t* file,
void* data, void* data,