git-svn-id: svn://db.shs.com.ru/pip@402 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
21
main.cpp
21
main.cpp
@@ -1,4 +1,4 @@
|
|||||||
#include "piobject.h"
|
#include "pip.h"
|
||||||
/*
|
/*
|
||||||
struct __S__ {
|
struct __S__ {
|
||||||
PIString text;
|
PIString text;
|
||||||
@@ -31,7 +31,26 @@ const char pult_config[] =
|
|||||||
connectionmodel = AAAM2Xja7VXLTttAFD12QpsikKjUSixYlLbKEpIUtVIlVEfqhk2FWuiGRRolUYtoHgrmpYiv6IItf8AveMMH9E/YsG6Ph3sde5hGoQoblLGuPHfunTPjc49nADxDA110+LTYC7FrPCAPeAO+vZu+aX7c/8PGd45WCJC0OGcfT6FDnmfSTPtwhZFt3HjgDs/Qtu5jPbZHtI/x50XfIzMQbdwEolbg9INP4ku++myPaUtCHYRaT2j1ldIh3VP60/Qff8vSfXLu9BP6JX9K/0TVH6jqVe22P1X/fao/oddWu/paDs1vBf9Jv/EZ91clbyHqv7BL6sscDOd4v4WTqs6jzaHGJ8QJerxlpJSpdZ7IWFJvDW7I2JxZqIM62k6A57RZmMQGmlyrxdV+WGBnmR01mXPI267hBKwp4FeBeo9VPtssxyb7rzHg1B7T9nCMU45U8BZlWuVWtIcD/CRGOqtsbW09851tXsHN0UTlLIAdASjSXnLyLn+H7L2+xbGYvC63Ezqg543egkLmn8qnRF6USbM4Qp9godkhzI777Ne5bCIt/5UtGz2o/yGby0nKpjqmbOa1ynkjmyzIrzvIZUeBPjvlUmbh32EFJbGyJZhR8YcvlS+3TpjhqeWSyvUkpbI9plSWtcKLcsK05beOJVEnhaEFfHEH+RwpeMcpn1JKGqWMNOL+G6wZyahlpdVOtufKfbDS+guLke9O\n\
|
connectionmodel = AAAM2Xja7VXLTttAFD12QpsikKjUSixYlLbKEpIUtVIlVEfqhk2FWuiGRRolUYtoHgrmpYiv6IItf8AveMMH9E/YsG6Ph3sde5hGoQoblLGuPHfunTPjc49nADxDA110+LTYC7FrPCAPeAO+vZu+aX7c/8PGd45WCJC0OGcfT6FDnmfSTPtwhZFt3HjgDs/Qtu5jPbZHtI/x50XfIzMQbdwEolbg9INP4ku++myPaUtCHYRaT2j1ldIh3VP60/Qff8vSfXLu9BP6JX9K/0TVH6jqVe22P1X/fao/oddWu/paDs1vBf9Jv/EZ91clbyHqv7BL6sscDOd4v4WTqs6jzaHGJ8QJerxlpJSpdZ7IWFJvDW7I2JxZqIM62k6A57RZmMQGmlyrxdV+WGBnmR01mXPI267hBKwp4FeBeo9VPtssxyb7rzHg1B7T9nCMU45U8BZlWuVWtIcD/CRGOqtsbW09851tXsHN0UTlLIAdASjSXnLyLn+H7L2+xbGYvC63Ezqg543egkLmn8qnRF6USbM4Qp9godkhzI777Ne5bCIt/5UtGz2o/yGby0nKpjqmbOa1ynkjmyzIrzvIZUeBPjvlUmbh32EFJbGyJZhR8YcvlS+3TpjhqeWSyvUkpbI9plSWtcKLcsK05beOJVEnhaEFfHEH+RwpeMcpn1JKGqWMNOL+G6wZyahlpdVOtufKfbDS+guLke9O\n\
|
||||||
";
|
";
|
||||||
*/
|
*/
|
||||||
|
int asize(ssize_t s, size_t pid_rsize) {
|
||||||
|
if (s <= 0) return 0;
|
||||||
|
if (pid_rsize + pid_rsize >= size_t(s) && pid_rsize < size_t(s))
|
||||||
|
return pid_rsize + pid_rsize;
|
||||||
|
ssize_t t = 0, s_ = ssize_t(s) - 1;
|
||||||
|
while (s_ >> t) ++t;
|
||||||
|
return (1 << t);
|
||||||
|
}
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
PIDiagnostics d;
|
||||||
|
piCout << d.receiveBytesPerSec();
|
||||||
|
piSleep(3);
|
||||||
|
piCout << d.receiveBytesPerSec();
|
||||||
|
// PIVector<float> in;
|
||||||
|
// for (int i = 0; i < 50; ++i)
|
||||||
|
// in << i%10;
|
||||||
|
// PIFFTWf fft;
|
||||||
|
// fft.preparePlan(50, PIFFTWf::foReal);
|
||||||
|
// PIVector<complexf> out = fft.calcFFT(in);
|
||||||
|
// piCout << out;
|
||||||
/*for (int i = 0; i < 16; ++i) {
|
/*for (int i = 0; i < 16; ++i) {
|
||||||
piCout << asize(i, 100);
|
piCout << asize(i, 100);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,6 +78,7 @@ const int PIString::fromBaseN[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -
|
|||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
|
||||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
|
||||||
|
|
||||||
|
|
||||||
#ifndef CC_VC
|
#ifndef CC_VC
|
||||||
# define pisprintf(f, v) char ch[256]; memset(ch, 0, 256); sprintf(ch, f, v);
|
# define pisprintf(f, v) char ch[256]; memset(ch, 0, 256); sprintf(ch, f, v);
|
||||||
#else
|
#else
|
||||||
@@ -86,7 +87,6 @@ const int PIString::fromBaseN[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -
|
|||||||
#ifdef ANDROID
|
#ifdef ANDROID
|
||||||
int wctomb(char * c, wchar_t w) {*c = ((char * )&w)[0]; return 1;}
|
int wctomb(char * c, wchar_t w) {*c = ((char * )&w)[0]; return 1;}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
PIString PIString::itos(const int num) {pisprintf("%d", num); return PIString(ch);}
|
PIString PIString::itos(const int num) {pisprintf("%d", num); return PIString(ch);}
|
||||||
PIString PIString::ltos(const long num) {pisprintf("%ld", num); return PIString(ch);}
|
PIString PIString::ltos(const long num) {pisprintf("%ld", num); return PIString(ch);}
|
||||||
PIString PIString::lltos(const llong num) {pisprintf("%lld", num); return PIString(ch);}
|
PIString PIString::lltos(const llong num) {pisprintf("%lld", num); return PIString(ch);}
|
||||||
@@ -95,10 +95,88 @@ PIString PIString::ultos(const ulong num) {pisprintf("%lu", num); return PIStrin
|
|||||||
PIString PIString::ulltos(const ullong num) {pisprintf("%llu", num); return PIString(ch);}
|
PIString PIString::ulltos(const ullong num) {pisprintf("%llu", num); return PIString(ch);}
|
||||||
PIString PIString::ftos(const float num) {pisprintf("%.8f", num); return PIString(ch);}
|
PIString PIString::ftos(const float num) {pisprintf("%.8f", num); return PIString(ch);}
|
||||||
PIString PIString::dtos(const double num) {pisprintf("%.8f", num); return PIString(ch);}
|
PIString PIString::dtos(const double num) {pisprintf("%.8f", num); return PIString(ch);}
|
||||||
|
|
||||||
#undef pisprintf
|
#undef pisprintf
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PIString PIString::fromNumberBaseS(const llong value, int base, bool * ok) {
|
||||||
|
if (value == 0LL) return PIString("0");
|
||||||
|
if (base < 2 || base > 40) {if (ok != 0) *ok = false; return PIString();}
|
||||||
|
if (ok != 0) *ok = true;
|
||||||
|
if (base == 10) return lltos(value);
|
||||||
|
PIString ret;
|
||||||
|
llong v = value < 0 ? -value : value, cn;
|
||||||
|
int b = base;
|
||||||
|
while (v >= llong(base)) {
|
||||||
|
cn = v % b;
|
||||||
|
v /= b;
|
||||||
|
//cout << int(cn) << ", " << int(v) << endl;
|
||||||
|
ret.push_front(PIChar(toBaseN[cn]));
|
||||||
|
}
|
||||||
|
if (v > 0) ret.push_front(PIChar(toBaseN[v]));
|
||||||
|
if (value < 0) ret.push_front('-');
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PIString PIString::fromNumberBaseU(const ullong value, int base, bool * ok) {
|
||||||
|
if (value == 0ULL) return PIString("0");
|
||||||
|
if (base < 2 || base > 40) {if (ok != 0) *ok = false; return PIString();}
|
||||||
|
if (ok != 0) *ok = true;
|
||||||
|
if (base == 10) return ulltos(value);
|
||||||
|
PIString ret;
|
||||||
|
ullong v = value, cn;
|
||||||
|
int b = base;
|
||||||
|
while (v >= ullong(base)) {
|
||||||
|
cn = v % b;
|
||||||
|
v /= b;
|
||||||
|
//cout << int(cn) << ", " << int(v) << endl;
|
||||||
|
ret.push_front(PIChar(toBaseN[cn]));
|
||||||
|
}
|
||||||
|
if (v > 0) ret.push_front(PIChar(toBaseN[v]));
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
llong PIString::toNumberBase(const PIString & value, int base, bool * ok) {
|
||||||
|
PIString v = value.trimmed();
|
||||||
|
if (base < 0) {
|
||||||
|
int ind = v.find("0x");
|
||||||
|
if (ind == 0 || ind == 1) {v.remove(ind, 2); base = 16;}
|
||||||
|
else base = 10;
|
||||||
|
} else
|
||||||
|
if (base < 2 || base > 40) {if (ok != 0) *ok = false; return 0;}
|
||||||
|
//v.reverse();
|
||||||
|
if (ok) *ok = true;
|
||||||
|
PIVector<int> digits;
|
||||||
|
llong ret = 0, m = 1;
|
||||||
|
bool neg = false;
|
||||||
|
int cs;
|
||||||
|
for (int i = 0; i < v.size_s(); ++i) {
|
||||||
|
if (v[i] == PIChar('-')) {neg = !neg; continue;}
|
||||||
|
cs = fromBaseN[int(v[i].toAscii())];
|
||||||
|
if (cs < 0 || cs >= base) {
|
||||||
|
if (ok) *ok = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
digits << cs;
|
||||||
|
}
|
||||||
|
for (int i = digits.size_s() - 1; i >= 0; --i) {
|
||||||
|
ret += digits[i] * m;
|
||||||
|
m *= base;
|
||||||
|
}
|
||||||
|
if (neg) ret = -ret;
|
||||||
|
/*piForeachC (PIChar & i, v) {
|
||||||
|
if (i == PIChar('-')) {ret = -ret; continue;}
|
||||||
|
cs = fromBaseN[int(i.toAscii())];
|
||||||
|
cout << i << " = " << cs << endl;
|
||||||
|
if (cs < 0 || cs >= base) return ret;
|
||||||
|
ret += cs * m;
|
||||||
|
m *= base;
|
||||||
|
}*/
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void PIString::appendFromChars(const char * c, int s, const char * cp) {
|
void PIString::appendFromChars(const char * c, int s, const char * cp) {
|
||||||
if (s <= 0) return;
|
if (s <= 0) return;
|
||||||
#ifdef PIP_ICU
|
#ifdef PIP_ICU
|
||||||
@@ -208,6 +286,13 @@ PIString PIString::fromCodepage(const char * s, const char * c) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
PIString PIString::readableSize(llong bytes) {
|
||||||
|
PIString s;
|
||||||
|
s.setReadableSize(bytes);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void PIString::buildData(const char * cp) const {
|
void PIString::buildData(const char * cp) const {
|
||||||
data_.clear();
|
data_.clear();
|
||||||
#ifdef PIP_ICU
|
#ifdef PIP_ICU
|
||||||
|
|||||||
@@ -683,7 +683,7 @@ public:
|
|||||||
|
|
||||||
//! \brief Return string contains human readable size in B/kB/MB/GB/TB
|
//! \brief Return string contains human readable size in B/kB/MB/GB/TB
|
||||||
//! \details Example: \snippet pistring.cpp PIString::readableSize
|
//! \details Example: \snippet pistring.cpp PIString::readableSize
|
||||||
static PIString readableSize(llong bytes) {PIString s; s.setReadableSize(bytes); return s;}
|
static PIString readableSize(llong bytes);
|
||||||
|
|
||||||
PIString & removeAll(char v) {replaceAll(v, ""); return *this;}
|
PIString & removeAll(char v) {replaceAll(v, ""); return *this;}
|
||||||
PIString & removeAll(const PIString & v) {replaceAll(v, ""); return *this;}
|
PIString & removeAll(const PIString & v) {replaceAll(v, ""); return *this;}
|
||||||
@@ -700,79 +700,9 @@ private:
|
|||||||
static PIString ulltos(const ullong num);
|
static PIString ulltos(const ullong num);
|
||||||
static PIString ftos(const float num);
|
static PIString ftos(const float num);
|
||||||
static PIString dtos(const double num);
|
static PIString dtos(const double num);
|
||||||
static PIString fromNumberBaseS(const llong value, int base = 10, bool * ok = 0) {
|
static PIString fromNumberBaseS(const llong value, int base = 10, bool * ok = 0);
|
||||||
if (value == 0) return PIString("0");
|
static PIString fromNumberBaseU(const ullong value, int base = 10, bool * ok = 0);
|
||||||
if (base < 2 || base > 40) {if (ok != 0) *ok = false; return PIString();}
|
static llong toNumberBase(const PIString & value, int base = -1, bool * ok = 0);
|
||||||
if (ok != 0) *ok = true;
|
|
||||||
if (base == 10) return lltos(value);
|
|
||||||
PIString ret;
|
|
||||||
llong v = value < 0 ? -value : value, cn;
|
|
||||||
int b = base;
|
|
||||||
while (v >= llong(base)) {
|
|
||||||
cn = v % b;
|
|
||||||
v /= b;
|
|
||||||
//cout << int(cn) << ", " << int(v) << endl;
|
|
||||||
ret.push_front(PIChar(toBaseN[cn]));
|
|
||||||
}
|
|
||||||
if (v > 0) ret.push_front(PIChar(toBaseN[v]));
|
|
||||||
if (value < 0) ret.push_front('-');
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
static PIString fromNumberBaseU(const ullong value, int base = 10, bool * ok = 0) {
|
|
||||||
if (value == 0) return PIString("0");
|
|
||||||
if (base < 2 || base > 40) {if (ok != 0) *ok = false; return PIString();}
|
|
||||||
if (ok != 0) *ok = true;
|
|
||||||
if (base == 10) return ulltos(value);
|
|
||||||
PIString ret;
|
|
||||||
ullong v = value, cn;
|
|
||||||
int b = base;
|
|
||||||
while (v >= ullong(base)) {
|
|
||||||
cn = v % b;
|
|
||||||
v /= b;
|
|
||||||
//cout << int(cn) << ", " << int(v) << endl;
|
|
||||||
ret.push_front(PIChar(toBaseN[cn]));
|
|
||||||
}
|
|
||||||
if (v > 0) ret.push_front(PIChar(toBaseN[v]));
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
static llong toNumberBase(const PIString & value, int base = -1, bool * ok = 0) {
|
|
||||||
PIString v = value.trimmed();
|
|
||||||
if (base < 0) {
|
|
||||||
int ind = v.find("0x");
|
|
||||||
if (ind == 0 || ind == 1) {v.remove(ind, 2); base = 16;}
|
|
||||||
else base = 10;
|
|
||||||
} else
|
|
||||||
if (base < 2 || base > 40) {if (ok != 0) *ok = false; return 0;}
|
|
||||||
//v.reverse();
|
|
||||||
if (ok) *ok = true;
|
|
||||||
PIVector<int> digits;
|
|
||||||
llong ret = 0, m = 1;
|
|
||||||
bool neg = false;
|
|
||||||
int cs;
|
|
||||||
for (int i = 0; i < v.size_s(); ++i) {
|
|
||||||
if (v[i] == PIChar('-')) {neg = !neg; continue;}
|
|
||||||
cs = fromBaseN[int(v[i].toAscii())];
|
|
||||||
if (cs < 0 || cs >= base) {
|
|
||||||
if (ok) *ok = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
digits << cs;
|
|
||||||
}
|
|
||||||
for (int i = digits.size_s() - 1; i >= 0; --i) {
|
|
||||||
ret += digits[i] * m;
|
|
||||||
m *= base;
|
|
||||||
}
|
|
||||||
if (neg) ret = -ret;
|
|
||||||
/*piForeachC (PIChar & i, v) {
|
|
||||||
if (i == PIChar('-')) {ret = -ret; continue;}
|
|
||||||
cs = fromBaseN[int(i.toAscii())];
|
|
||||||
cout << i << " = " << cs << endl;
|
|
||||||
if (cs < 0 || cs >= base) return ret;
|
|
||||||
ret += cs * m;
|
|
||||||
m *= base;
|
|
||||||
}*/
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
void appendFromChars(const char * c, int s, const char * cp = 0);
|
void appendFromChars(const char * c, int s, const char * cp = 0);
|
||||||
void buildData(const char * cp = 0) const;
|
void buildData(const char * cp = 0) const;
|
||||||
void trimsubstr(int &st, int &fn) const;
|
void trimsubstr(int &st, int &fn) const;
|
||||||
|
|||||||
@@ -105,14 +105,21 @@ void PIDiagnostics::tick(void * , int ) {
|
|||||||
float itr = disconn_ * (float(tcnt_recv) / history_rec.size());
|
float itr = disconn_ * (float(tcnt_recv) / history_rec.size());
|
||||||
float its = disconn_ * (float(tcnt_send) / history_send.size());
|
float its = disconn_ * (float(tcnt_send) / history_send.size());
|
||||||
float hz = interval() / 1000.f;
|
float hz = interval() / 1000.f;
|
||||||
if (tcnt_recv == 0) integral_freq = 0;
|
if (tcnt_recv == 0) {
|
||||||
// piCoutObj << itr << tcnt_recv << history_rec.size();
|
integral_freq = immediate_freq = 0;
|
||||||
else integral_freq = recv.cnt_ok / itr;
|
packets_recv_sec = bytes_recv_sec = 0;
|
||||||
|
} else {
|
||||||
|
integral_freq = recv.cnt_ok / itr;
|
||||||
packets_recv_sec = ullong(float(recv.cnt_ok) / itr);
|
packets_recv_sec = ullong(float(recv.cnt_ok) / itr);
|
||||||
packets_send_sec = ullong(float(send.cnt_ok) / its);
|
|
||||||
bytes_recv_sec = ullong(double(recv.bytes_ok) / itr);
|
bytes_recv_sec = ullong(double(recv.bytes_ok) / itr);
|
||||||
bytes_send_sec = ullong(double(send.bytes_ok) / its);
|
|
||||||
immediate_freq = double(history_rec.front().cnt_ok) / hz;
|
immediate_freq = double(history_rec.front().cnt_ok) / hz;
|
||||||
|
}
|
||||||
|
if (tcnt_send == 0) {
|
||||||
|
packets_send_sec = bytes_send_sec = 0;
|
||||||
|
} else {
|
||||||
|
packets_send_sec = ullong(float(send.cnt_ok) / its);
|
||||||
|
bytes_send_sec = ullong(double(send.bytes_ok) / its);
|
||||||
|
}
|
||||||
// piCoutObj << "tick" << recv.cnt_ok << send.cnt_ok;
|
// piCoutObj << "tick" << recv.cnt_ok << send.cnt_ok;
|
||||||
// speedRecv = PIString::readableSize(ullong(double(history_rec.front().bytes_ok) / hz)) + "/s";
|
// speedRecv = PIString::readableSize(ullong(double(history_rec.front().bytes_ok) / hz)) + "/s";
|
||||||
// speedSend = PIString::readableSize(ullong(double(history_send.front().bytes_ok) / hz)) + "/s";
|
// speedSend = PIString::readableSize(ullong(double(history_send.front().bytes_ok) / hz)) + "/s";
|
||||||
@@ -174,7 +181,7 @@ void PIDiagnostics::changeDisconnectTimeout(float disct) {
|
|||||||
lock();
|
lock();
|
||||||
disconn_ = piMaxf(disct, interval() / 1000.f);
|
disconn_ = piMaxf(disct, interval() / 1000.f);
|
||||||
if (interval() > 0) {
|
if (interval() > 0) {
|
||||||
int hist_size = piMaxi(int(disconn_ * 1000. / interval()), 1);
|
int hist_size = piClampi(int(disconn_ * 1000.f / float(interval())), 1, 65536);
|
||||||
//piCoutObj << hist_size << interval();
|
//piCoutObj << hist_size << interval();
|
||||||
history_rec.resize(hist_size);
|
history_rec.resize(hist_size);
|
||||||
history_send.resize(hist_size);
|
history_send.resize(hist_size);
|
||||||
|
|||||||
@@ -34,7 +34,6 @@
|
|||||||
# define S_IFCHR 0x10
|
# define S_IFCHR 0x10
|
||||||
# define S_IFSOCK 0x20
|
# define S_IFSOCK 0x20
|
||||||
#else
|
#else
|
||||||
# include <stdio.h>
|
|
||||||
# include <sys/stat.h>
|
# include <sys/stat.h>
|
||||||
# include <sys/time.h>
|
# include <sys/time.h>
|
||||||
# include <fcntl.h>
|
# include <fcntl.h>
|
||||||
|
|||||||
@@ -5,6 +5,6 @@
|
|||||||
#define PIP_VERSION_MAJOR 1
|
#define PIP_VERSION_MAJOR 1
|
||||||
#define PIP_VERSION_MINOR 0
|
#define PIP_VERSION_MINOR 0
|
||||||
#define PIP_VERSION_REVISION 0
|
#define PIP_VERSION_REVISION 0
|
||||||
#define PIP_VERSION_SUFFIX "_prealpha"
|
#define PIP_VERSION_SUFFIX "_alpha"
|
||||||
|
|
||||||
#endif // PIVERSION_H
|
#endif // PIVERSION_H
|
||||||
|
|||||||
Reference in New Issue
Block a user