00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "ink_config.h"
00025 #include "ink_file.h"
00026 #include "I_Layout.h"
00027 #include "I_Version.h"
00028 #include "P_Net.h"
00029
00030 #define PROGRAM_NAME "traffic_sac"
00031
00032 #include "LogStandalone.cc"
00033
00034 #include "LogAccess.h"
00035 #include "LogField.h"
00036 #include "LogFilter.h"
00037 #include "LogFormat.h"
00038 #include "LogFile.h"
00039 #include "LogHost.h"
00040 #include "LogObject.h"
00041 #include "LogConfig.h"
00042 #include "LogBuffer.h"
00043 #include "LogUtils.h"
00044 #include "LogSock.h"
00045 #include "Log.h"
00046 #include "DiagsConfig.h"
00047 #include "I_Machine.h"
00048
00049 #define DIAGS_LOG_FILENAME "collector.log"
00050
00051
00052
00053 static int version_flag = 0;
00054
00055
00056
00057
00058 ArgumentDescription argument_descriptions[] = {
00059
00060 {"version", 'V', "Print Version Id", "T", &version_flag, NULL, NULL},
00061 #ifdef DEBUG
00062 {"error_tags", 'T', "Colon-Separated Debug Tags", "S1023", &error_tags,
00063 NULL, NULL},
00064 {"action_tags", 'A', "Colon-Separated Debug Tags", "S1023", &action_tags,
00065 NULL, NULL},
00066 #endif
00067 {"help", 'h', "HELP!", NULL, NULL, NULL, usage},
00068 };
00069
00070
00071
00072
00073
00074 int
00075 main(int , char *argv[])
00076 {
00077
00078
00079 appVersionInfo.setup(PACKAGE_NAME,PROGRAM_NAME, PACKAGE_VERSION, __DATE__,
00080 __TIME__, BUILD_MACHINE, BUILD_PERSON, "");
00081
00082
00083 Layout::create();
00084
00085
00086 process_args(argument_descriptions, countof(argument_descriptions), argv);
00087
00088
00089
00090 if (version_flag) {
00091 fprintf(stderr, "%s\n", appVersionInfo.FullVersionInfoStr);
00092 _exit(0);
00093 }
00094
00095 diagsConfig = new DiagsConfig(DIAGS_LOG_FILENAME, error_tags, action_tags, false);
00096 diags = diagsConfig->diags;
00097 diags->prefix_str = "Collector ";
00098
00099
00100
00101 bool one_copy = true;
00102 init_log_standalone(PROGRAM_NAME, one_copy);
00103
00104
00105
00106 int config_max_iobuffer_size = DEFAULT_MAX_BUFFER_SIZE;
00107 max_iobuffer_size = buffer_size_to_index(config_max_iobuffer_size, DEFAULT_BUFFER_SIZES - 1);
00108 if (default_small_iobuffer_size > max_iobuffer_size)
00109 default_small_iobuffer_size = max_iobuffer_size;
00110 if (default_large_iobuffer_size > max_iobuffer_size)
00111 default_large_iobuffer_size = max_iobuffer_size;
00112 init_buffer_allocators();
00113
00114
00115
00116 size_t stacksize;
00117
00118 REC_ReadConfigInteger(stacksize, "proxy.config.thread.default.stacksize");
00119 eventProcessor.start(ink_number_of_processors(), stacksize);
00120 ink_net_init(makeModuleVersion(1, 0, PRIVATE_MODULE_HEADER));
00121 netProcessor.start(0, stacksize);
00122 Machine::init();
00123
00124 Log::init(Log::NO_REMOTE_MANAGEMENT | Log::STANDALONE_COLLATOR);
00125
00126
00127
00128 Note("-- SAC running --");
00129 this_thread()->execute();
00130 }