📄 monitor.h
字号:
/* * Copyright (c) 1996 The Regents of the University of California. * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement * is hereby granted, provided that the above copyright notice and the * following two paragraphs appear in all copies of this software. * * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING * OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE * UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. * * * $Id: monitor.h,v 1.7 1996/10/23 04:30:56 aswan Exp $ */#ifndef monitor_h#define monitor_h#include "net.h"#include "iohandler.h"#include "timer.h"class Monitor;class UpdateTimer : public Timer { public: inline UpdateTimer(Monitor& m); void timeout(); protected: Monitor& m_; float bw_; int inactive_;};class Member;class Sender;class Monitor : public TclObject , public IOHandler { public: Monitor(); virtual ~Monitor(); virtual int command(int argc, const char*const* argv); virtual void dispatch(int mask); inline Network* net() const { return (net_); } inline void net(Network* net) { unlink(); link(net->rchannel(), TK_READABLE); net_ = net; } inline int recv(u_char* bp, int len, u_int32_t& addr) { return (net_->recv(bp, len, addr)); }#define SORT_MAX -1#define SORT_AVG -2#define SORT_ADDR -3 void sort(); inline void sort(int type) { sorttype_ = type; sort(); } int CheckActive(double interval); void median(); protected: Member* lookup(u_int32_t ssrc, u_int32_t addr); int slookup(u_int32_t srcid, int& pos); int getpos(); void freepos(int pos); void parse_sr(rtcphdr* rh, int flags, u_char* ep, Member *m, u_int32_t addr); void parse_rr(rtcphdr* rh, int flags, u_char* ep, Member *l, u_int32_t addr); void parse_rr_records(u_int32_t ssrc, rtcp_rr* rr, int cnt, u_char* ep, Member *m, u_int32_t addr); void parse_sdes(rtcphdr* rh, int flags, u_char* ep, Member *m, u_int32_t ssrc, u_int32_t addr); int sdesbody(u_int32_t* p, u_char* ep, Member* m, u_int32_t addr); void parse_bye(rtcphdr* rh, int flags, u_char* ep, Member *m); Member* dosort(Member* l); Member* mselect(Member* m, int i, int low, int high, int n); Network* net_; u_char* pktbuf_; int nrunt_; int badversion_; int badpt_;#define HASH_SIZE 1024 int nmembers_; Member* members_; Member* senders_; Member* last_; Member* hashtab_[HASH_SIZE]; Member* median_; int avgpktsize_; u_int32_t bits_; /* XXX limits to 32 senders */ int sorttype_; int stat_; u_int32_t thresh_; UpdateTimer ut_;};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -