You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
166 lines
4.8 KiB
166 lines
4.8 KiB
/* /////////////////////////////////////////////////////////////////////////
|
|
* File: test/scratch/test.scratch.be.N.with.custom.fe/test.scratch.be.N.with.custom.fe.cpp
|
|
*
|
|
* Purpose: Implementation file for the test.scratch.be.N.with.custom.fe project.
|
|
*
|
|
* Created: 23rd December 2010
|
|
* Updated: 6th August 2012
|
|
*
|
|
* Thanks: To wassime, for submitting the original program definition.
|
|
*
|
|
* Status: Wizard-generated
|
|
*
|
|
* License: (Licensed under the Synesis Software Open License)
|
|
*
|
|
* Copyright (c) 2010-2012, Synesis Software Pty Ltd.
|
|
* All rights reserved.
|
|
*
|
|
* www: http://www.synesis.com.au/software
|
|
*
|
|
* ////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
#define PANTHEIOS_NO_INCLUDE_OS_AND_3PTYLIB_STRING_ACCESS
|
|
|
|
/* Pantheios Header Files */
|
|
#include <pantheios/pan.hpp>
|
|
#include <pantheios/backends/be.N.h>
|
|
#include <pantheios/backends/bec.file.h>
|
|
#include <pantheios/backends/bec.console.h>
|
|
#include <pantheios/frontend.h>
|
|
|
|
/* STLSoft Header Files */
|
|
#include <stlsoft/stlsoft.h>
|
|
#include <platformstl/platformstl.hpp>
|
|
|
|
/* Standard C++ Header Files */
|
|
#include <exception>
|
|
#include <iostream>
|
|
|
|
/* Standard C Header Files */
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Macros and definitions
|
|
*/
|
|
|
|
#define WG_LOG_FILE_ID 1
|
|
#define WG_LOG_CONSOLE_ID 2
|
|
#define WG_LOG_FILE_ERROR_ID 3
|
|
|
|
namespace
|
|
{
|
|
static int iCeilingConsole = PANTHEIOS_SEV_DEBUG;
|
|
static int iCeilingMain = PANTHEIOS_SEV_NOTICE;
|
|
static int iCeilingError = PANTHEIOS_SEV_ERROR;
|
|
} /* anonymous namespace */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Globals
|
|
*/
|
|
|
|
PANTHEIOS_EXTERN_C PAN_CHAR_T const PANTHEIOS_FE_PROCESS_IDENTITY[] = PANTHEIOS_LITERAL_STRING("test.scratch.be.N.with.custom.fe");
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* main()
|
|
*/
|
|
|
|
static int main_(int /* argc */, char** /*argv*/)
|
|
{
|
|
pantheios_be_file_setFilePath("normal.log", 0, 0, WG_LOG_FILE_ID);
|
|
pantheios_be_file_setFilePath("error.log", 0, 0, WG_LOG_FILE_ERROR_ID);
|
|
|
|
pantheios::log_WARNING("hello there all of you");
|
|
pantheios::log_NOTICE("hello there console and main log");
|
|
pantheios::log_DEBUG("hello there console");
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
try
|
|
{
|
|
return main_(argc, argv);
|
|
}
|
|
catch(std::exception& x)
|
|
{
|
|
pantheios::log_ALERT("Unexpected general error: ", x, ". Application terminating");
|
|
}
|
|
catch(...)
|
|
{
|
|
pantheios::logputs(pantheios::emergency, "Unhandled unknown error");
|
|
}
|
|
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Back-end configuration
|
|
*/
|
|
|
|
pan_be_N_t PAN_BE_N_BACKEND_LIST[] =
|
|
{
|
|
PANTHEIOS_BE_N_STDFORM_ENTRY(WG_LOG_CONSOLE_ID, pantheios_be_console, 0),
|
|
PANTHEIOS_BE_N_STDFORM_ENTRY(WG_LOG_FILE_ID, pantheios_be_file, 0),
|
|
PANTHEIOS_BE_N_STDFORM_ENTRY(WG_LOG_FILE_ERROR_ID, pantheios_be_file, 0),
|
|
|
|
PANTHEIOS_BE_N_TERMINATOR_ENTRY
|
|
};
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Custom front-end
|
|
*/
|
|
|
|
PANTHEIOS_CALL(int) pantheios_fe_init( void*,void** ptoken)
|
|
{
|
|
*ptoken = NULL;
|
|
|
|
return 0;
|
|
}
|
|
|
|
PANTHEIOS_CALL(void) pantheios_fe_uninit(void*)
|
|
{}
|
|
|
|
PANTHEIOS_CALL(PAN_CHAR_T const*) pantheios_fe_getProcessIdentity(void*)
|
|
{
|
|
return "BE.N.Experimenting";
|
|
}
|
|
|
|
PANTHEIOS_CALL(int) pantheios_fe_isSeverityLogged(void*, int severity, int beid)
|
|
{
|
|
switch(beid)
|
|
{
|
|
// Must handle PANTHEIOS_BEID_ALL, as that's the Application Layer's
|
|
// (initial) enquiry as to whether anything should be logged at all
|
|
case PANTHEIOS_BEID_ALL:
|
|
#if 0
|
|
// The inefficient way to do this is to just 'return true'
|
|
return true;
|
|
#else /* ? 0 */
|
|
// The efficient (but complicated) way to do this is to see if
|
|
// *any* back-end wants output, in which case we say yes
|
|
return severity <= iCeilingMain ||
|
|
severity <= iCeilingConsole ||
|
|
severity <= iCeilingError;
|
|
#endif /* 0 */
|
|
|
|
// Now handle each specified back-end, which will come from be.N
|
|
// multiplexing the output(s)
|
|
|
|
case WG_LOG_FILE_ID:
|
|
return severity <= iCeilingMain;
|
|
case WG_LOG_CONSOLE_ID:
|
|
return severity <= iCeilingConsole;
|
|
case WG_LOG_FILE_ERROR_ID:
|
|
return severity <= iCeilingError;
|
|
|
|
// Don't know about anything else
|
|
default:
|
|
PANTHEIOS_CONTRACT_ENFORCE_UNEXPECTED_CONDITION_API("unexpected back-end identifier");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/* ///////////////////////////// end of file //////////////////////////// */
|