we can create links (hard links, symbolic links) now

added winix functions: ln

winix function 'default' can be used without redirecting now

added new tickets types: TypeProgress, TypeString, TypeMultistring, TypeImages, TypeFiles
now tickets are combined with files
added winix functions: showtickets

fixed mountpoints:
when the default root mount was created its parameter table was empty
and it caused accessing to a non-existing objects

fixed logger:
modifiers (log1, log2, log3) were incorrectly treated
added modifier: log4 (debug info)

now we are moving threads to a new plugin 'thread'
created directory: plugins/thread
(not finished yet)




git-svn-id: svn://ttmath.org/publicrep/winix/trunk@704 e52654a7-88a9-db11-a3e9-0013d4bc506e
This commit is contained in:
2011-01-05 21:24:11 +00:00
parent bb83aed20d
commit 8154c403d8
113 changed files with 5840 additions and 2972 deletions

View File

@@ -16,8 +16,34 @@ namespace Ticket
{
bool TDb::IsTicket(long file_id)
{
PGresult * r = 0;
bool is = false;
try
{
query.Clear();
query << R("select count(*) from plugins.ticket "
"where ticket.file_id=") << file_id << R(";");
r = AssertQuery(query);
AssertResult(r, PGRES_TUPLES_OK);
Error TDb::GetTicket(long dir_id, Ticket & ticket)
if( Rows(r)==1 && Cols(r)==1 )
is = AssertValueInt(r, 0, 0) != 0;
}
catch(const Error &)
{
}
ClearResult(r);
return is;
}
Error TDb::GetTicket(long file_id, Ticket & ticket)
{
PGresult * r = 0;
Error status = WINIX_ERR_OK;
@@ -26,8 +52,8 @@ Error TDb::GetTicket(long dir_id, Ticket & ticket)
try
{
query.Clear();
query << R("select dir_id, param, value from plugins.ticket "
"where ticket.dir_id=") << dir_id << R(";");
query << R("select file_id, param, int_value, str_value from plugins.ticket "
"where ticket.file_id=") << file_id << R(";");
r = AssertQuery(query);
AssertResult(r, PGRES_TUPLES_OK);
@@ -38,15 +64,18 @@ Error TDb::GetTicket(long dir_id, Ticket & ticket)
throw Error(WINIX_ERR_NO_TICKET);
Ticket::TicketParam par;
ticket.dir_id = dir_id;
ticket.file_id = file_id;
int cparam = AssertColumn(r, "param");
int cvalue = AssertColumn(r, "value");
int cparam = AssertColumn(r, "param");
int cintvalue = AssertColumn(r, "int_value");
int cstrvalue = AssertColumn(r, "str_value");
for(int i=0 ; i<rows ; ++i)
{
par.param = AssertValueInt(r, i, cparam);
par.value = AssertValueInt(r, i, cvalue);
par.param = AssertValueInt(r, i, cparam);
par.int_value = AssertValueLong(r, i, cintvalue);
AssertValueWide(r, i, cstrvalue, par.str_value);
ticket.par_tab.push_back(par);
}
}
@@ -65,21 +94,21 @@ return status;
Error TDb::GetTickets(const std::vector<long> & dir_id_tab, std::vector<Ticket> & ticket_tab)
Error TDb::GetTickets(const std::vector<long> & file_id_tab, std::vector<Ticket> & ticket_tab)
{
PGresult * r = 0;
Error status = WINIX_ERR_OK;
ticket_tab.clear();
if( dir_id_tab.empty() )
if( file_id_tab.empty() )
return status;
try
{
query.Clear();
CreateIdList(dir_id_tab, dir_list);
query << R("select dir_id, param, value from plugins.ticket "
"where ticket.dir_id in ") << R(dir_list) << R(" order by dir_id;");
CreateIdList(file_id_tab, file_list);
query << R("select file_id, param, int_value, str_value from plugins.ticket "
"where ticket.file_id in ") << R(file_list) << R(" order by file_id;");
// !! moze dodac operator <<(std::vector(long)) do query?
@@ -89,24 +118,27 @@ Error TDb::GetTickets(const std::vector<long> & dir_id_tab, std::vector<Ticket>
int rows = Rows(r);
Ticket::TicketParam par;
int cdir_id = AssertColumn(r, "dir_id");
int cparam = AssertColumn(r, "param");
int cvalue = AssertColumn(r, "value");
long last_dir_id = -1;
int cfile_id = AssertColumn(r, "file_id");
int cparam = AssertColumn(r, "param");
int cintvalue = AssertColumn(r, "int_value");
int cstrvalue = AssertColumn(r, "str_value");
long last_file_id = -1;
for(int i=0 ; i<rows ; ++i)
{
long dir_id = AssertValueLong(r, i, cdir_id);
long file_id = AssertValueLong(r, i, cfile_id);
if( i==0 || last_dir_id != dir_id )
if( i==0 || last_file_id != file_id )
{
ticket_tab.push_back(Ticket());
ticket_tab.back().dir_id = dir_id;
last_dir_id = dir_id;
ticket_tab.back().file_id = file_id;
last_file_id = file_id;
}
par.param = AssertValueInt(r, i, cparam);
par.value = AssertValueInt(r, i, cvalue);
par.int_value = AssertValueLong(r, i, cintvalue);
AssertValueWide(r, i, cstrvalue, par.str_value);
ticket_tab.back().par_tab.push_back(par);
}
}
@@ -116,7 +148,7 @@ Error TDb::GetTickets(const std::vector<long> & dir_id_tab, std::vector<Ticket>
}
ClearResult(r);
dir_list.clear();
file_list.clear();
return status;
}
@@ -134,10 +166,11 @@ Error TDb::AddTicket(const Ticket & ticket)
for(size_t i=0 ; i<ticket.par_tab.size() ; ++i)
{
query.Clear();
query << R("insert into plugins.ticket (dir_id, param, value) values (")
<< ticket.dir_id
query << R("insert into plugins.ticket (file_id, param, int_value, str_value) values (")
<< ticket.file_id
<< ticket.par_tab[i].param
<< ticket.par_tab[i].value
<< ticket.par_tab[i].int_value
<< ticket.par_tab[i].str_value
<< R(");");
r = AssertQuery(query);
@@ -164,7 +197,7 @@ Error TDb::RemoveAddTicket(const Ticket & ticket)
if( status != WINIX_ERR_OK )
return status;
status = RemoveTicket(ticket.dir_id);
status = RemoveTicket(ticket.file_id);
if( status == WINIX_ERR_OK )
status = AddTicket(ticket);
@@ -181,7 +214,7 @@ return status;
Error TDb::RemoveTicket(long dir_id)
Error TDb::RemoveTicket(long file_id)
{
PGresult * r = 0;
Error status = WINIX_ERR_OK;
@@ -189,7 +222,7 @@ Error TDb::RemoveTicket(long dir_id)
try
{
query.Clear();
query << R("delete from plugins.ticket where dir_id=") << dir_id << R(";");
query << R("delete from plugins.ticket where file_id=") << file_id << R(";");
r = AssertQuery(query);
AssertResult(r, PGRES_COMMAND_OK);