Gestione mail
git-svn-id: svn://10.65.10.50/branches/R_10_00@23169 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
cb39cedcec
commit
32ebb6b8f7
69
ba/ba0100m.uml
Normal file
69
ba/ba0100m.uml
Normal file
@ -0,0 +1,69 @@
|
||||
PAGE "Configurazione E-Mail utente" -1 -1 63 11
|
||||
|
||||
STRING 101 260 50
|
||||
BEGIN
|
||||
PROMPT 1 0 "Server "
|
||||
FIELD Server
|
||||
END
|
||||
|
||||
STRING 102 260 50
|
||||
BEGIN
|
||||
PROMPT 1 1 "Porta "
|
||||
FIELD Port
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 11 2 "Alice: 25"
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
BEGIN
|
||||
PROMPT 25 2 "GMail: 465 -ssl -auth-plain"
|
||||
END
|
||||
|
||||
STRING 103 50
|
||||
BEGIN
|
||||
PROMPT 1 4 "Utente "
|
||||
FIELD User
|
||||
END
|
||||
|
||||
STRING 104 50
|
||||
BEGIN
|
||||
PROMPT 1 5 "Password "
|
||||
FIELD Password
|
||||
FLAGS "*"
|
||||
END
|
||||
|
||||
STRING 105 260 50
|
||||
BEGIN
|
||||
PROMPT 1 6 "Da "
|
||||
FIELD From
|
||||
END
|
||||
|
||||
LIST 106 1
|
||||
BEGIN
|
||||
PROMPT 21 7 "Tentativi di trasmissione "
|
||||
ITEM "1|1"
|
||||
ITEM "2|2"
|
||||
ITEM "3|3"
|
||||
ITEM "4|4"
|
||||
ITEM "5|5"
|
||||
FIELD Retry
|
||||
END
|
||||
|
||||
MEMO 107 60 4
|
||||
BEGIN
|
||||
PROMPT 1 7 "Saluti / Firma"
|
||||
FIELD Signature
|
||||
END
|
||||
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "Topbar" 0 0 0 2
|
||||
#include <stdbar.h>
|
||||
ENDPAGE
|
||||
|
||||
|
||||
ENDMASK
|
15
ba/ba0104.cpp
Normal file
15
ba/ba0104.cpp
Normal file
@ -0,0 +1,15 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define STRICT
|
||||
#include <shlobj.h>
|
||||
#include <errno.h>
|
||||
|
||||
int xvt_fsys_get_desktop(char* dir)
|
||||
{
|
||||
int err = EINVAL;
|
||||
if (dir)
|
||||
{
|
||||
::SHGetFolderPathA(NULL, CSIDL_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, dir);
|
||||
err = *dir ? 0 : ENOENT;
|
||||
}
|
||||
return err;
|
||||
}
|
231
ba/ba1200.cpp
231
ba/ba1200.cpp
@ -45,11 +45,12 @@ TProfiler_mask::TProfiler_mask() : TMask(TR("Test"), 1, 60, 20)
|
||||
|
||||
class TTest_application : public TSkeleton_application
|
||||
{
|
||||
TProgress_monitor* _pi;
|
||||
WINDOW _pi;
|
||||
long _total;
|
||||
clock_t _start;
|
||||
|
||||
clock_t start_timer() const;
|
||||
|
||||
clock_t start_progind(const long items, const char* prompt);
|
||||
void start_progind(long items, const char* prompt);
|
||||
bool update_progind(long item);
|
||||
clock_t stop_progind();
|
||||
|
||||
protected:
|
||||
@ -69,19 +70,19 @@ public:
|
||||
TTest_application() : _pi(NULL) { }
|
||||
};
|
||||
|
||||
clock_t TTest_application::start_timer() const
|
||||
void TTest_application::start_progind(long items, const char* msg)
|
||||
{
|
||||
CHECK(_pi == NULL_WIN, "Double progress indicator");
|
||||
_pi = xvt_dm_progress_create(NULL_WIN, TR("Performance profiler"), _total = items, TRUE);
|
||||
xvt_dm_progress_set_text(_pi, msg);
|
||||
clock_t t = clock();
|
||||
while (clock() == t);
|
||||
t = clock();
|
||||
return t;
|
||||
_start = clock();
|
||||
}
|
||||
|
||||
clock_t TTest_application::start_progind(const long items, const char* prompt)
|
||||
bool TTest_application::update_progind(long item)
|
||||
{
|
||||
CHECK(_pi == NULL, "Double progress indicator");
|
||||
_pi = new TProgress_monitor(items, prompt, true);
|
||||
return start_timer();
|
||||
return xvt_dm_progress_set_status(_pi, item, _total) != 0;
|
||||
}
|
||||
|
||||
clock_t TTest_application::stop_progind()
|
||||
@ -89,10 +90,10 @@ clock_t TTest_application::stop_progind()
|
||||
const clock_t t = clock();
|
||||
if (_pi != NULL)
|
||||
{
|
||||
delete _pi;
|
||||
_pi = NULL;
|
||||
xvt_dm_progress_destroy(_pi);
|
||||
_pi = NULL_WIN;
|
||||
}
|
||||
return t;
|
||||
return t - _start;
|
||||
}
|
||||
|
||||
|
||||
@ -105,16 +106,13 @@ bool TTest_application::test1(TLog_report& log)
|
||||
TString80 msg;
|
||||
|
||||
const int times = 10;
|
||||
const clock_t start = start_progind(times, TR("Lettura file comuni"));
|
||||
for (int i = 0; i < times; i++)
|
||||
start_progind(times, TR("Lettura file comuni"));
|
||||
for (int i = 1; i <= times; i++)
|
||||
{
|
||||
for (tab.first(); tab.good(); tab.next())
|
||||
r++;
|
||||
|
||||
msg.format(FR("%ld records %ld msec"), r, clock() - start);
|
||||
|
||||
_pi->set_text(msg);
|
||||
if (!_pi->add_status())
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
@ -122,7 +120,7 @@ bool TTest_application::test1(TLog_report& log)
|
||||
}
|
||||
}
|
||||
|
||||
const clock_t t = stop_progind() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Lettura file comuni - "
|
||||
"%ld records in %ld msec - %lg records per sec", r, t, 1000.0*r/t);
|
||||
log.log(0, msg);
|
||||
@ -139,21 +137,17 @@ bool TTest_application::test2(TLog_report& log)
|
||||
|
||||
tab.freeze();
|
||||
|
||||
clock_t start;
|
||||
TRecnotype r = 0;
|
||||
TString80 msg;
|
||||
const int times = 10;
|
||||
start_progind(times, TR("Lettura cursore comuni"));
|
||||
{
|
||||
const int times = 10;
|
||||
TProgress_monitor p(times, TR("Lettura cursore comuni"));
|
||||
start = start_timer();
|
||||
for (int i = 0; i < times; i++)
|
||||
for (int i = 1; i <= times; i++)
|
||||
{
|
||||
for (tab = 0; tab.pos() < n; ++tab)
|
||||
r++;
|
||||
|
||||
msg.format("Lettura cursore comuni\n%ld records %ld msec", r, clock() - start);
|
||||
p.set_text(msg);
|
||||
if (!p.add_status())
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
@ -161,7 +155,7 @@ bool TTest_application::test2(TLog_report& log)
|
||||
}
|
||||
}
|
||||
}
|
||||
const clock_t t = clock() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Lettura cursore comuni: %ld records in %ld msec - %lg records per sec\n",
|
||||
r, t, 1000.0*r/t);
|
||||
log.log(0, msg);
|
||||
@ -174,27 +168,23 @@ bool TTest_application::test3(TLog_report& log)
|
||||
TRelation rel(LF_COMUNI);
|
||||
TSorted_cursor tab(&rel, "CAPCOM|DENCOM");
|
||||
|
||||
clock_t istart = start_timer();
|
||||
start_progind(1, TR("Inizializzazione"));
|
||||
const TRecnotype n = tab.items();
|
||||
clock_t istop = clock() - istart;
|
||||
const clock_t istop = stop_progind();
|
||||
|
||||
tab.freeze();
|
||||
|
||||
clock_t start;
|
||||
TRecnotype r = 0;
|
||||
TString256 msg;
|
||||
const int times = 10;
|
||||
start_progind(times, TR("Lettura cursore C.A.P."));
|
||||
{
|
||||
const int times = 10;
|
||||
TProgress_monitor p(times, TR("Lettura cursore C.A.P."));
|
||||
start = start_timer();
|
||||
for (int i = 0; i < times; i++)
|
||||
for (int i = 1; i <= times; i++)
|
||||
{
|
||||
for (tab = 0; tab.pos() < n; ++tab)
|
||||
r++;
|
||||
|
||||
msg.format("Lettura cursore C.A.P.\n%ld records %ld msec", r, clock() - start);
|
||||
p.set_text(msg);
|
||||
if (!p.addstatus(1))
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
@ -202,7 +192,7 @@ bool TTest_application::test3(TLog_report& log)
|
||||
}
|
||||
}
|
||||
}
|
||||
const clock_t t = clock() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Lettura cursore ordinato %ld records in %ld msec - %lg records per sec - "
|
||||
"%ld msec for initialization",
|
||||
r, t, 1000.0*r/t, istop);
|
||||
@ -217,13 +207,11 @@ bool TTest_application::test4(TLog_report& log)
|
||||
srand(r);
|
||||
TString8 cod;
|
||||
|
||||
clock_t start;
|
||||
{
|
||||
const int times = 10;
|
||||
TProgress_monitor p(times, TR("Lettura casuale tramite cache"));
|
||||
cache().get(LF_COMUNI, cod); // Inizializzazione
|
||||
start = start_timer();
|
||||
for (int i = 0; i < times; i++)
|
||||
start_progind(times, TR("Lettura casuale tramite cache"));
|
||||
for (int i = 1; i <= times; i++)
|
||||
{
|
||||
for (long j = 0; j < 10000; j++)
|
||||
{
|
||||
@ -232,7 +220,7 @@ bool TTest_application::test4(TLog_report& log)
|
||||
cache().get(LF_COMUNI, cod);
|
||||
r++;
|
||||
}
|
||||
if (!p.add_status())
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
@ -241,7 +229,7 @@ bool TTest_application::test4(TLog_report& log)
|
||||
}
|
||||
}
|
||||
|
||||
const clock_t t = clock() - start;
|
||||
const clock_t t = stop_progind();
|
||||
TString msg;
|
||||
msg.format("Lettura cached di %ld records in %ld msec - %lg records per sec",
|
||||
r, t, 1000.0*r/t);
|
||||
@ -256,32 +244,28 @@ bool TTest_application::test5(TLog_report& log)
|
||||
srand(r);
|
||||
TString8 cod;
|
||||
|
||||
clock_t start;
|
||||
{
|
||||
const int times = 10;
|
||||
TProgress_monitor p(times, TR("Lettura casuale senza cache"));
|
||||
TLocalisamfile f(LF_COMUNI);
|
||||
start = start_timer();
|
||||
for (int i = 0; i < times; i++)
|
||||
const int times = 10;
|
||||
TLocalisamfile f(LF_COMUNI);
|
||||
start_progind(times, TR("Lettura casuale senza cache"));
|
||||
for (int i = 1; i <= times; i++)
|
||||
{
|
||||
for (long j = 0; j < 10000; j++)
|
||||
{
|
||||
for (long j = 0; j < 10000; j++)
|
||||
{
|
||||
const int rn = rand();
|
||||
cod.format("%c%03d", 'A'+(rn%2), rn % 1000);
|
||||
f.put(COM_COM, cod);
|
||||
f.read();
|
||||
r++;
|
||||
}
|
||||
if (!p.add_status())
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
const int rn = rand();
|
||||
cod.format("%c%03d", 'A'+(rn%2), rn % 1000);
|
||||
f.put(COM_COM, cod);
|
||||
f.read();
|
||||
r++;
|
||||
}
|
||||
}
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const clock_t t = clock() - start;
|
||||
const clock_t t = stop_progind();
|
||||
TString msg;
|
||||
msg.format("Lettura casuale di %ld records in %ld msec - %lg records per sec",
|
||||
r, t, 1000.0*r/t);
|
||||
@ -299,20 +283,20 @@ bool TTest_application::test6(TLog_report& log)
|
||||
{
|
||||
TTable tab("CZZ");
|
||||
msg.format("Creazione di %ld records", n);
|
||||
const clock_t start = start_progind(n, msg);
|
||||
start_progind(n, msg);
|
||||
int i;
|
||||
for (i = 0; i < n; i++)
|
||||
for (i = 1; i <= n; i++)
|
||||
{
|
||||
tab.put("CODTAB", i+1);
|
||||
tab.put("CODTAB", i);
|
||||
tab.write();
|
||||
if (!_pi->add_status())
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const clock_t t = stop_progind() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Scritti %ld records in %ld msec - %lg records per sec", i, t, 1000.0*i/t);
|
||||
log.log(0, msg);
|
||||
}
|
||||
@ -325,18 +309,18 @@ bool TTest_application::test6(TLog_report& log)
|
||||
cur.freeze();
|
||||
|
||||
msg.format("Cancellazione %ld records", n);
|
||||
const clock_t start = start_progind(n, msg);
|
||||
start_progind(n, msg);
|
||||
for (cur = 0; cur.pos() < n; ++cur)
|
||||
{
|
||||
cur.file().remove();
|
||||
if (!_pi->add_status())
|
||||
if (!update_progind(cur.pos()+1))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const clock_t t = stop_progind() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Cancellati %ld records in %ld msec - %lg records per sec", n, t, 1000.0*n/t);
|
||||
log.log(0, msg);
|
||||
}
|
||||
@ -354,21 +338,21 @@ bool TTest_application::test7(TLog_report& log)
|
||||
TSystemisamfile tab(LF_TAB);
|
||||
tab.open(_excllock);
|
||||
msg.format("Creazione di %ld records", n);
|
||||
const clock_t start = start_progind(n, msg);
|
||||
start_progind(n, msg);
|
||||
int i;
|
||||
for (i = 0; i < n; i++)
|
||||
for (i = 1; i <= n; i++)
|
||||
{
|
||||
tab.curr().put("COD", "CZZ");
|
||||
tab.curr().put("CODTAB", i+1);
|
||||
tab.curr().put("CODTAB", i);
|
||||
tab.write();
|
||||
if (!_pi->addstatus(1))
|
||||
if (!update_progind(i))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const clock_t t = stop_progind() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Scritti %ld records in %ld msec - %lg records per sec", i, t, 1000.0*i/t);
|
||||
log.log(0, msg);
|
||||
tab.close();
|
||||
@ -385,20 +369,20 @@ bool TTest_application::test7(TLog_report& log)
|
||||
cur.freeze();
|
||||
|
||||
msg.format("Cancellazione %ld records", n);
|
||||
const clock_t start = start_progind(n, msg);
|
||||
start_progind(n, msg);
|
||||
for (cur = 0; cur.pos() < n; ++cur)
|
||||
{
|
||||
tab.put("COD", cur.curr().get("COD"));
|
||||
tab.put("CODTAB", cur.curr().get("CODTAB"));
|
||||
tab.remove();
|
||||
if (!_pi->addstatus(1))
|
||||
if (!update_progind(cur.pos()+1))
|
||||
{
|
||||
log.log(1, TR("Interrotto dall'utente"));
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const clock_t t = stop_progind() - start;
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("Cancellati %ld records in %ld msec - %lg records per sec", n, t, 1000.0*n/t);
|
||||
log.log(0, msg);
|
||||
tab.close();
|
||||
@ -406,11 +390,6 @@ bool TTest_application::test7(TLog_report& log)
|
||||
return ok;
|
||||
}
|
||||
|
||||
ostream* _out = NULL;
|
||||
|
||||
static void str_serialize(const TObject& obj)
|
||||
{ *_out << obj << '\n'; }
|
||||
|
||||
static bool str_deserialize(istream& i, TString& str)
|
||||
{
|
||||
char* buff = str.get_buffer(50);
|
||||
@ -444,77 +423,59 @@ bool TTest_application::test8(TLog_report& log)
|
||||
if (first_time)
|
||||
{
|
||||
TString80 str;
|
||||
msg = TR("Lettura big.txt con TArray");
|
||||
log.log(0, msg);
|
||||
const clock_t start = start_progind(1, msg);
|
||||
|
||||
start_progind(1, TR("Lettura big.txt con TArray"));
|
||||
ifstream big("recdesc/big.txt");
|
||||
while (str_deserialize(big, str))
|
||||
{
|
||||
parole.add(str);
|
||||
_pi->add_status(0L);
|
||||
TString* s = str.len() <= 16 ? new TString16(str) : new TString(str);
|
||||
parole.add(s);
|
||||
update_progind(1);
|
||||
}
|
||||
stop_progind();
|
||||
const clock_t t = stop_progind();
|
||||
const unsigned int n = parole.items();
|
||||
msg.format("TArray %ld parole %6ld msec - %5lg wps", n, t, 1000.0*n/t);
|
||||
log.log(0, msg);
|
||||
}
|
||||
|
||||
const unsigned int n = parole.items();
|
||||
const int n = parole.items();
|
||||
bool ok = n > 0;
|
||||
|
||||
if (ok)
|
||||
{
|
||||
TAssoc_array ass;
|
||||
const clock_t start = start_progind(n, TR("Lettura big.txt con TAssoc_array"));
|
||||
FOR_EACH_ARRAY_ITEM(parole, r, o)
|
||||
THash_table ash(883);
|
||||
start_progind(1, TR("Lettura big.txt con THash_table"));
|
||||
for (int i = 1; i < n; i++)
|
||||
{
|
||||
const TString& p = *(const TString*)o;
|
||||
ass.add(p, p, false);
|
||||
if ((r % 256 == 0) && !_pi->set_status(r+1))
|
||||
const TString& p = (const TString&)parole[i];
|
||||
ash.add(p, p, false);
|
||||
if ((i % 10000 == 0) && !update_progind(1))
|
||||
{
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const clock_t t = stop_progind() - start;
|
||||
msg.format("TAssoc_array %ld(%ld) parole %6ld msec - %5lg wps", n, ass.items(), t, 1000.0*n/t);
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("THash_table %ld parole %6ld msec - %5lg wps", ash.items(), t, 1000.0*n/t);
|
||||
log.log(0, msg);
|
||||
|
||||
if (first_time)
|
||||
{
|
||||
TFilename fn; fn.tempdir(); fn.add("assoc.txt");
|
||||
_out = new ofstream(fn);
|
||||
ass.for_each(str_serialize);
|
||||
_out->flush();
|
||||
delete _out;
|
||||
_out = NULL;
|
||||
}
|
||||
}
|
||||
if (ok)
|
||||
{
|
||||
THash_table ash(1024*36);
|
||||
const clock_t start = start_progind(n, TR("Lettura big.txt con THash_table"));
|
||||
FOR_EACH_ARRAY_ITEM(parole, r, o)
|
||||
TAssoc_array ass;
|
||||
start_progind(1, TR("Lettura big.txt con TAssoc_array"));
|
||||
for (int i = 1; i < n; i++)
|
||||
{
|
||||
const TString& p = *(const TString*)o;
|
||||
ash.add(p, p, false);
|
||||
if ((r % 256 == 0) && !_pi->set_status(r+1))
|
||||
const TString& p = (const TString&)parole[i];
|
||||
ass.add(p, p, false);
|
||||
if ((i % 10000 == 0) && !update_progind(1))
|
||||
{
|
||||
ok = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
const clock_t t = stop_progind() - start;
|
||||
msg.format("THash_table %ld(%ld) parole %6ld msec - %5lg wps", n, ash.items(), t, 1000.0*n/t);
|
||||
const clock_t t = stop_progind();
|
||||
msg.format("TAssoc_array %ld parole %6ld msec - %5lg wps", ass.items(), t, 1000.0*n/t);
|
||||
log.log(0, msg);
|
||||
|
||||
if (first_time)
|
||||
{
|
||||
TFilename fn; fn.tempdir(); fn.add("hash.txt");
|
||||
_out = new ofstream(fn);
|
||||
ash.for_each(str_serialize);
|
||||
_out->flush();
|
||||
delete _out;
|
||||
_out = NULL;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!ok)
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include <odbcrset.h>
|
||||
#include <progind.h>
|
||||
#include <reputils.h>
|
||||
#include <sheet.h>
|
||||
#include <toolfld.h>
|
||||
#include <urldefid.h>
|
||||
#include <utility.h>
|
||||
|
Loading…
x
Reference in New Issue
Block a user