//--------------------------------------------------------------------------------------- int TaskMan::OnRcvData(const void *data, int len) { SmartFrame *frame = get_smart_frame((const uint8_t*)data, len); if (!frame) return 0; if (is_remote_frame(frame) && !is_reply_frame(frame)) return len; OnTaskDone(frame, frame_len(frame)); return len; }
helper(const struct arguments &args) : recoder_stack(args), m_frame(frame_len()), m_packet_hdr(&m_frame[0]), m_payload_hdr(&m_frame[packet_hdr_len()]), m_payload_data(&m_frame[header_len()]), m_threshold(budgets::helper_threshold(args.symbols, args.e1/100.0, args.e2/100.0, args.e3/100.0)), m_budget_max(budgets::helper_budget(args.symbols, args.e1/100.0, args.e2/100.0, args.e3/100.0)), m_credits(budgets::helper_credits(args.symbols, args.e1/100.0, args.e2/100.0, args.e3/100.0)) { auto r = std::bind(&helper::recv_packet, this, std::placeholders::_1); m_sock = socket_add(args.interface, r); std::cout << "credits: " << m_credits << std::endl; std::cout << "budget: " << m_budget_max << std::endl; std::cout << "threshold: " << m_threshold << std::endl; start(); }