本文整理汇总了C++中sinsp_exception函数的典型用法代码示例。如果您正苦于以下问题:C++ sinsp_exception函数的具体用法?C++ sinsp_exception怎么用?C++ sinsp_exception使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了sinsp_exception函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: next
ppm_cmp_operator sinsp_filter::next_comparison_operator()
{
int32_t start;
//
// Skip spaces
//
if(isblank(m_fltstr[m_scanpos]))
{
next();
}
//
// Mark the beginning of the word
//
start = m_scanpos;
if(compare_no_consume("="))
{
m_scanpos += 1;
return CO_EQ;
}
else if(compare_no_consume("!="))
{
m_scanpos += 2;
return CO_NE;
}
else if(compare_no_consume("<="))
{
m_scanpos += 2;
return CO_LE;
}
else if(compare_no_consume("<"))
{
m_scanpos += 1;
return CO_LT;
}
else if(compare_no_consume(">="))
{
m_scanpos += 2;
return CO_GE;
}
else if(compare_no_consume(">"))
{
m_scanpos += 1;
return CO_GT;
}
else if(compare_no_consume("contains"))
{
m_scanpos += 8;
return CO_CONTAINS;
}
else
{
throw sinsp_exception("filter error: unrecognized comparison operator after " + m_fltstr.substr(0, start));
}
}
示例2: do_inspect
captureinfo do_inspect(sinsp* inspector,
uint64_t cnt,
sinsp_cursesui* ui)
{
captureinfo retval;
int32_t res;
sinsp_evt* ev;
//
// Loop through the events
//
while(1)
{
if(retval.m_nevts == cnt || g_terminate)
{
//
// End of capture, either because the user stopped it, or because
// we reached the event count specified with -n.
//
break;
}
res = inspector->next(&ev);
if(res == SCAP_TIMEOUT)
{
continue;
}
else if(res != SCAP_EOF && res != SCAP_SUCCESS)
{
//
// Event read error.
// Notify the chisels that we're exiting, and then die with an error.
//
if(inspector->is_live())
{
throw sinsp_exception(inspector->getlasterr());
}
else
{
ui->set_truncated_input(true);
res = SCAP_EOF;
continue;
}
}
if(ui->process_event(ev, res) == true)
{
return retval;
}
retval.m_nevts++;
}
return retval;
}
示例3: lua_getglobal
void sinsp_chisel::do_end_of_sample()
{
#ifdef HAS_LUA_CHISELS
lua_getglobal(m_ls, "on_end_of_sample");
if(lua_pcall(m_ls, 0, 1, 0) != 0)
{
throw sinsp_exception(m_filename + " chisel error: calling on_end_of_sample() failed:" + lua_tostring(m_ls, -1));
}
int oeres = lua_toboolean(m_ls, -1);
lua_pop(m_ls, 1);
if(oeres == false)
{
throw sinsp_exception("execution terminated by the " + m_filename + " chisel");
}
#endif // HAS_LUA_CHISELS
}
示例4: luaL_checkstring
int lua_parser_cbacks::bool_op(lua_State *ls)
{
lua_parser* parser = (lua_parser*)lua_topointer(ls, -2);
try {
const char* opstr = luaL_checkstring(ls, -1);
boolop op = string_to_boolop(opstr);
if (!parser->m_have_rel_expr)
{
if (op == BO_NOT) {
op = (boolop)((uint32_t)parser->m_last_boolop | op);
}
else
{
string err = "filter.bool_op() called without having called rel_expr() ";
throw sinsp_exception(err);
}
}
if (parser->m_last_boolop != BO_NONE)
{
if (op == BO_NOT) {
op = (boolop)((uint32_t)parser->m_last_boolop | op);
}
else
{
string err = "filter.bool_op() called twice in a row";
throw sinsp_exception(err);
}
}
parser->m_last_boolop = op;
}
catch (exception &e)
{
lua_pushstring(ls, e.what());
lua_error(ls);
}
return 0;
}
示例5: sinsp_exception
void sinsp_tracerparser::set_storage_size(uint32_t newsize)
{
m_storage = (char*)realloc(m_storage, newsize);
if(m_storage == NULL)
{
throw sinsp_exception("memory allocation error in sinsp_tracerparser::process_event_data.");
}
m_storage_size = newsize;
}
示例6: sinsp_exception
mesos_framework::task_map& mesos_state_t::get_tasks(const std::string& framework_uid)
{
for(auto& framework : m_frameworks)
{
if(framework.get_uid() == framework_uid)
{
return framework.get_tasks();
}
}
throw sinsp_exception("Framework not found: " + framework_uid);
}
示例7: lua_getglobal
int lua_cbacks::set_output_format(lua_State *ls)
{
lua_getglobal(ls, "sichisel");
sinsp_chisel* ch = (sinsp_chisel*)lua_touserdata(ls, -1);
lua_pop(ls, 1);
ASSERT(ch);
ASSERT(ch->m_lua_cinfo);
if(ch->m_inspector->get_buffer_format() != sinsp_evt::PF_NORMAL)
{
//
// This means that the user has forced the format on the command line.
// We give that priority and we do nothing.
//
return 0;
}
const char* fmt = lua_tostring(ls, 1);
if(string(fmt) == "normal")
{
ch->m_inspector->set_buffer_format(sinsp_evt::PF_NORMAL);
}
else if(string(fmt) == "json")
{
ch->m_inspector->set_buffer_format(sinsp_evt::PF_JSON);
}
else if(string(fmt) == "simple")
{
ch->m_inspector->set_buffer_format(sinsp_evt::PF_SIMPLE);
}
else if(string(fmt) == "hex")
{
ch->m_inspector->set_buffer_format(sinsp_evt::PF_HEX);
}
else if(string(fmt) == "hexascii")
{
ch->m_inspector->set_buffer_format(sinsp_evt::PF_HEXASCII);
}
else if(string(fmt) == "ascii")
{
ch->m_inspector->set_buffer_format(sinsp_evt::PF_EOLS);
}
else
{
string err = "invalid set_output_format value in chisel " + ch->m_filename;
fprintf(stderr, "%s\n", err.c_str());
throw sinsp_exception("chisel error");
}
return 0;
}
示例8: ASSERT
void sinsp_chisel::do_timeout(sinsp_evt* evt)
{
if(m_lua_cinfo->m_callback_interval != 0)
{
uint64_t ts = evt->get_ts();
uint64_t sample_time = ts - ts % m_lua_cinfo->m_callback_interval;
if(sample_time != m_lua_last_interval_sample_time)
{
int64_t delta = 0;
if(m_lua_last_interval_ts != 0)
{
delta = ts - m_lua_last_interval_ts;
ASSERT(delta > 0);
}
lua_getglobal(m_ls, "on_interval");
lua_pushnumber(m_ls, (double)(ts / 1000000000));
lua_pushnumber(m_ls, (double)(ts % 1000000000));
lua_pushnumber(m_ls, (double)delta);
if(lua_pcall(m_ls, 3, 1, 0) != 0)
{
throw sinsp_exception(m_filename + " chisel error: calling on_interval() failed:" + lua_tostring(m_ls, -1));
}
int oeres = lua_toboolean(m_ls, -1);
lua_pop(m_ls, 1);
if(oeres == false)
{
throw sinsp_exception("execution terminated by the " + m_filename + " chisel");
}
m_lua_last_interval_sample_time = sample_time;
m_lua_last_interval_ts = ts;
}
}
}
示例9: sinsp_exception
void sinsp_dumper::open(const string& filename, bool compress)
{
if(m_inspector->m_h == NULL)
{
throw sinsp_exception("can't start event dump, inspector not opened yet");
}
if(compress)
{
m_dumper = scap_dump_open(m_inspector->m_h, filename.c_str(), SCAP_COMPRESSION_GZIP);
}
else
{
m_dumper = scap_dump_open(m_inspector->m_h, filename.c_str(), SCAP_COMPRESSION_NONE);
}
if(m_dumper == NULL)
{
throw sinsp_exception(scap_getlasterr(m_inspector->m_h));
}
}
示例10: sinsp_exception
void sinsp::autodump_start(const string& dump_filename, bool compress)
{
if(NULL == m_h)
{
throw sinsp_exception("inspector not opened yet");
}
if(compress)
{
m_dumper = scap_dump_open(m_h, dump_filename.c_str(), SCAP_COMPRESSION_GZIP);
}
else
{
m_dumper = scap_dump_open(m_h, dump_filename.c_str(), SCAP_COMPRESSION_NONE);
}
if(NULL == m_dumper)
{
throw sinsp_exception(scap_getlasterr(m_h));
}
}
示例11: open
void sinsp::open(string filename)
{
char error[SCAP_LASTERR_SIZE];
m_islive = false;
if(filename == "")
{
open();
return;
}
m_input_filename = filename;
g_logger.log("starting offline capture");
//
// Reset the thread manager
//
m_thread_manager->clear();
//
// Start the capture
//
scap_open_args oargs;
oargs.fname = filename.c_str();
oargs.proc_callback = NULL;
oargs.proc_callback_context = NULL;
oargs.import_users = m_import_users;
m_h = scap_open(oargs, error);
if(m_h == NULL)
{
throw sinsp_exception(error);
}
//
// gianluca: This might need to be replaced with
// a portable stat(), since I'm afraid that on S3
// (that we'll use in the backend) the seek will
// read the entire file anyway
//
FILE* fp = fopen(filename.c_str(), "rb");
if(fp)
{
fseek(fp, 0L, SEEK_END);
m_filesize = ftell(fp);
fclose(fp);
}
init();
}
示例12: sinsp_exception
std::string marathon_component::get_name(type t)
{
component_map::const_iterator it = list.find(t);
if(it != list.end())
{
return it->second;
}
std::ostringstream os;
os << "Unknown component type " << static_cast<int>(t);
throw sinsp_exception(os.str().c_str());
}
示例13: flt_compare_buffer
bool flt_compare_buffer(cmpop op, char* operand1, char* operand2, uint32_t op1_len, uint32_t op2_len)
{
switch(op)
{
case CO_EQ:
return op1_len == op2_len && (memcmp(operand1, operand2, op1_len) == 0);
case CO_NE:
return op1_len != op2_len || (memcmp(operand1, operand2, op1_len) != 0);
case CO_CONTAINS:
return (memmem(operand1, op1_len, operand2, op2_len) != NULL);
case CO_ICONTAINS:
throw sinsp_exception("'icontains' not supported for buffer filters");
case CO_LT:
throw sinsp_exception("'<' not supported for buffer filters");
case CO_LE:
throw sinsp_exception("'<=' not supported for buffer filters");
case CO_GT:
throw sinsp_exception("'>' not supported for buffer filters");
case CO_GE:
throw sinsp_exception("'>=' not supported for buffer filters");
default:
ASSERT(false);
throw sinsp_exception("invalid filter operator " + std::to_string((long long) op));
return false;
}
}
示例14: sinsp_exception
int32_t sinsp_filter_check_event::extract_arg(string fldname, string val, OUT const struct ppm_param_info** parinfo)
{
uint32_t parsed_len = 0;
//
// 'arg' and 'resarg' are handled in a custom way
//
if(val[fldname.size()] == '[')
{
if(parinfo != NULL)
{
throw sinsp_exception("evt.arg fields must be expressed explicitly");
}
parsed_len = val.find(']');
string numstr = val.substr(fldname.size() + 1, parsed_len - fldname.size() - 1);
m_argid = sinsp_numparser::parsed32(numstr);
parsed_len++;
}
else if(val[fldname.size()] == '.')
{
const struct ppm_param_info* pi =
sinsp_utils::find_longest_matching_evt_param(val.substr(fldname.size() + 1));
m_argname = pi->name;
parsed_len = fldname.size() + strlen(pi->name) + 1;
m_argid = -1;
if(parinfo != NULL)
{
*parinfo = pi;
}
}
else
{
throw sinsp_exception("filter syntax error: " + val);
}
return parsed_len;
}
示例15: handle_groups
bool mesos_state_t::parse_groups(const std::string& json)
{
Json::Value root;
Json::Reader reader;
if(reader.parse(json, root, false))
{
return handle_groups(root, add_group(root, 0));
}
else
{
throw sinsp_exception("Invalid JSON (Marathon groups parsing failed).");
}
}