mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
94 lines
2.3 KiB
C++
94 lines
2.3 KiB
C++
#include "WebWord.h"
|
|
|
|
String FormatSize(int64 n)
|
|
{
|
|
if(n < 10000)
|
|
return Format("%d B", n);
|
|
else
|
|
if(n < 10000 * 1024)
|
|
return Format("%d.%d KB", n >> 10, (n & 1023) / 103);
|
|
else
|
|
if(n < I64(10000000) * 1024)
|
|
return Format("%d.%d MB", n >> 20, (n & 1023) / 103);
|
|
else
|
|
return Format("%d.%d GB", n >> 30, (n & 1023) / 103);
|
|
}
|
|
|
|
|
|
void WebWord::ShowInfo()
|
|
{
|
|
String s;
|
|
s << "Mem " << MemoryUsedKb() << " KB";
|
|
static int sent_prev;
|
|
#ifdef PLATFORM_TURTLE
|
|
int secs = GetSysTime() - Ctrl::stat_started;
|
|
Time tm = Time(1, 1, 1, 0, 0, 0) + secs;
|
|
s << ", uptime " << Format("%d:%0d:%02d:%02d", tm - Date(1, 1, 1), tm.hour, tm.minute, tm.second);
|
|
s << ", data sent " << FormatSize(Ctrl::stat_data_send);
|
|
if(secs)
|
|
s << ", average bandwidth " << FormatSize(Ctrl::stat_data_send / secs) << "/s";
|
|
s << ", actual bandwidth " << FormatSize(Ctrl::stat_data_send - sent_prev);
|
|
s << ", putimage " << Ctrl::stat_putimage;
|
|
s << ", putrect " << Ctrl::stat_putrect;
|
|
s << ", setimage " << Ctrl::stat_setimage << " len " << FormatSize(Ctrl::stat_setimage_len);
|
|
s << ", roundtrip " << Ctrl::stat_roundtrip_ms << " ms";
|
|
s << ", client " << Ctrl::stat_client_ms << " ms";
|
|
#ifdef PLATFORM_POSIX
|
|
s << ", cpu time " << int((double) clock() / CLOCKS_PER_SEC * 1000) << " ms";
|
|
#endif
|
|
sent_prev = Ctrl::stat_data_send;
|
|
statusbar.Set(s);
|
|
#endif
|
|
}
|
|
|
|
WebWord::WebWord()
|
|
{
|
|
AddFrame(statusbar);
|
|
Add(editor.SizePos());
|
|
Sizeable().Zoomable();
|
|
// FrameLess();
|
|
Maximize();
|
|
Title("WebWord");
|
|
Icon(CtrlImg::File());
|
|
editor.ClearModify();
|
|
ActiveFocus(editor);
|
|
SetTimeCallback(-1000, THISBACK(ShowInfo));
|
|
}
|
|
|
|
void Main()
|
|
{
|
|
WebWord w;
|
|
w.Run();
|
|
}
|
|
|
|
#ifdef flagTURTLE
|
|
CONSOLE_APP_MAIN
|
|
{
|
|
StdLogSetup(LOG_COUT|LOG_FILE);
|
|
|
|
MemoryLimitKb(100000000); // Perhaps a good idea to set a limit to prevent DDoS
|
|
Ctrl::connection_limit = 50; // Maximum number of concurrent users (preventing DDoS)
|
|
|
|
#ifdef _DEBUG
|
|
Ctrl::debugmode = true; // Only single session in debug (no forking)
|
|
#endif
|
|
|
|
// Ctrl::WhenDisconnect = callback(FinishApp); // Use this to gracefully exit (save data?)
|
|
|
|
#ifndef _DEBUG
|
|
Ctrl::host = "myserverhost.org";
|
|
#endif
|
|
|
|
if(Ctrl::StartSession()) {
|
|
Main();
|
|
Ctrl::EndSession();
|
|
}
|
|
|
|
LOG("Session Finished");
|
|
}
|
|
#else
|
|
GUI_APP_MAIN
|
|
{
|
|
Main();
|
|
}
|
|
#endif
|