示例#1
0
	void utp_socket_manager::get_status(utp_status& s) const
	{
		s.num_idle = 0;
		s.num_syn_sent = 0;
		s.num_connected = 0;
		s.num_fin_sent = 0;
		s.num_close_wait = 0;

		for (socket_map_t::const_iterator i = m_utp_sockets.begin()
			, end(m_utp_sockets.end()); i != end; ++i)
		{
			int state = utp_socket_state(i->second);
			switch (state)
			{
				case 0: ++s.num_idle; break;
				case 1: ++s.num_syn_sent; break;
				case 2: ++s.num_connected; break;
				case 3: ++s.num_fin_sent; break;
				case 4: ++s.num_close_wait; break;
				case 5: ++s.num_close_wait; break;
			}
		}
	}
	void utp_socket_manager::get_status(utp_status& s) const
	{
		s.num_idle = 0;
		s.num_syn_sent = 0;
		s.num_connected = 0;
		s.num_fin_sent = 0;
		s.num_close_wait = 0;

		s.packet_loss = m_counters[packet_loss];
		s.timeout = m_counters[timeout];
		s.packets_in = m_counters[packets_in];
		s.packets_out = m_counters[packets_out];
		s.fast_retransmit = m_counters[fast_retransmit];
		s.packet_resend = m_counters[packet_resend];
		s.samples_above_target = m_counters[samples_above_target];
		s.samples_below_target = m_counters[samples_below_target];
		s.payload_pkts_in = m_counters[payload_pkts_in];
		s.payload_pkts_out = m_counters[payload_pkts_out];
		s.invalid_pkts_in = m_counters[invalid_pkts_in];
		s.redundant_pkts_in = m_counters[redundant_pkts_in];

		for (socket_map_t::const_iterator i = m_utp_sockets.begin()
			, end(m_utp_sockets.end()); i != end; ++i)
		{
			int state = utp_socket_state(i->second);
			switch (state)
			{
				case 0: ++s.num_idle; break;
				case 1: ++s.num_syn_sent; break;
				case 2: ++s.num_connected; break;
				case 3: ++s.num_fin_sent; break;
				case 4: ++s.num_close_wait; break;
				case 5: ++s.num_close_wait; break;
			}
		}
	}