mirror of
https://github.com/stefanocasazza/ULib.git
synced 2025-10-05 19:18:01 +08:00
sync
This commit is contained in:
parent
2e5c5f3fc0
commit
b24a4c9b48
|
@ -332,8 +332,8 @@ public:
|
||||||
|
|
||||||
int r = *(const unsigned char*)str - *(const unsigned char*)s;
|
int r = *(const unsigned char*)str - *(const unsigned char*)s;
|
||||||
|
|
||||||
if (r == 0)
|
if (r) U_RETURN(r);
|
||||||
{
|
|
||||||
uint32_t len = U_min(_length, n);
|
uint32_t len = U_min(_length, n);
|
||||||
|
|
||||||
if (len > 1)
|
if (len > 1)
|
||||||
|
@ -344,7 +344,6 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
r = _length < n ? -1 : _length > n; // _length - n;
|
r = _length < n ? -1 : _length > n; // _length - n;
|
||||||
}
|
|
||||||
|
|
||||||
U_RETURN(r);
|
U_RETURN(r);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,27 @@ TechEmpower Web Framework Benchmarks
|
||||||
<!--#declaration
|
<!--#declaration
|
||||||
#include "world.h"
|
#include "world.h"
|
||||||
|
|
||||||
static void usp_fork_db() { World::handlerForkSql(); }
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
static UOrmDriver* pdrv;
|
||||||
|
static USqlStatement* pstmt;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void usp_fork_db()
|
||||||
|
{
|
||||||
|
U_TRACE_NO_PARAM(5, "::usp_fork_db()")
|
||||||
|
|
||||||
|
World::handlerForkSql();
|
||||||
|
|
||||||
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
if (UOrmDriver::isPGSQL())
|
||||||
|
{
|
||||||
|
pdrv = World::psql_query->getDriver();
|
||||||
|
pstmt = World::pstmt_query->getStatement();
|
||||||
|
|
||||||
|
(void) ((UPgSqlStatement*)pstmt)->setBindParam(pdrv);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
static void usp_end_db() { World::handlerEndSql(); }
|
static void usp_end_db() { World::handlerEndSql(); }
|
||||||
|
@ -15,13 +35,33 @@ static void usp_end_db() { World::handlerEndSql(); }
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
-->
|
-->
|
||||||
<!--#code
|
<!--#code
|
||||||
World::pworld_query->id = World::rnumber[0];
|
|
||||||
|
|
||||||
(void) World::pstmt_query->execute();
|
|
||||||
|
|
||||||
World::pwbuffer = UClientImage_Base::wbuffer->pend();
|
World::pwbuffer = UClientImage_Base::wbuffer->pend();
|
||||||
|
|
||||||
World::handlerOneResult(World::rnumber[0], World::pworld_query->randomNumber);
|
World::pworld_query->id = World::rnumber[u_now->tv_usec % 500];
|
||||||
|
|
||||||
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
if (pdrv)
|
||||||
|
{
|
||||||
|
((UPgSqlStatement*)pstmt)->setBindParam();
|
||||||
|
|
||||||
|
PGresult* res = ((UOrmDriverPgSql*)pdrv)->execPrepared(pstmt);
|
||||||
|
|
||||||
|
U_INTERNAL_ASSERT_EQUALS(PQnfields(res), 1)
|
||||||
|
U_INTERNAL_ASSERT_EQUALS(PQntuples(res), 1)
|
||||||
|
|
||||||
|
char* randomNumber = U_SYSCALL(PQgetvalue, "%p,%d,%d", res, 0, 0);
|
||||||
|
|
||||||
|
World::handlerOneResult(World::pworld_query->id, ntohl(*(uint32_t*)randomNumber));
|
||||||
|
|
||||||
|
U_SYSCALL_VOID(PQclear, "%p", res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
(void) World::pstmt_query->execute();
|
||||||
|
|
||||||
|
World::handlerOneResult(World::pworld_query->id, World::pworld_query->randomNumber);
|
||||||
|
}
|
||||||
|
|
||||||
World::endOneResult();
|
World::endOneResult();
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -121,7 +121,7 @@ public:
|
||||||
|
|
||||||
U_INTERNAL_ASSERT_POINTER(pvfortune)
|
U_INTERNAL_ASSERT_POINTER(pvfortune)
|
||||||
|
|
||||||
Fortune* elem = pvfortune->at(1+i);
|
Fortune* elem = pvfortune->at(i);
|
||||||
|
|
||||||
elem->id = _id;
|
elem->id = _id;
|
||||||
|
|
||||||
|
@ -141,16 +141,30 @@ public:
|
||||||
|
|
||||||
char* pwbuffer = UClientImage_Base::wbuffer->pend();
|
char* pwbuffer = UClientImage_Base::wbuffer->pend();
|
||||||
|
|
||||||
(void) memcpy(pwbuffer, U_CONSTANT_TO_PARAM("<!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>"));
|
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','!','d','o','c','t','y','p'));
|
||||||
|
u_put_unalignedp64(pwbuffer+8, U_MULTICHAR_CONSTANT64('e',' ','h','t','m','l','>','<'));
|
||||||
|
u_put_unalignedp64(pwbuffer+16, U_MULTICHAR_CONSTANT64('h','t','m','l','>','<','h','e'));
|
||||||
|
u_put_unalignedp64(pwbuffer+24, U_MULTICHAR_CONSTANT64('a','d','>','<','t','i','t','l'));
|
||||||
|
u_put_unalignedp64(pwbuffer+32, U_MULTICHAR_CONSTANT64('e','>','F','o','r','t','u','n'));
|
||||||
|
u_put_unalignedp64(pwbuffer+40, U_MULTICHAR_CONSTANT64('e','s','<','/','t','i','t','l'));
|
||||||
|
u_put_unalignedp64(pwbuffer+48, U_MULTICHAR_CONSTANT64('e','>','<','/','h','e','a','d'));
|
||||||
|
u_put_unalignedp64(pwbuffer+56, U_MULTICHAR_CONSTANT64('>','<','b','o','d','y','>','<'));
|
||||||
|
u_put_unalignedp64(pwbuffer+64, U_MULTICHAR_CONSTANT64('t','a','b','l','e','>','<','t'));
|
||||||
|
u_put_unalignedp64(pwbuffer+72, U_MULTICHAR_CONSTANT64('r','>','<','t','h','>','i','d'));
|
||||||
|
u_put_unalignedp64(pwbuffer+80, U_MULTICHAR_CONSTANT64('<','/','t','h','>','<','t','h'));
|
||||||
|
u_put_unalignedp64(pwbuffer+88, U_MULTICHAR_CONSTANT64('>','m','e','s','s','a','g','e'));
|
||||||
|
u_put_unalignedp64(pwbuffer+96, U_MULTICHAR_CONSTANT64('<','/','t','h','>','<','/','t'));
|
||||||
|
u_put_unalignedp16(pwbuffer+104, U_MULTICHAR_CONSTANT16('r','>'));
|
||||||
|
|
||||||
pwbuffer += U_CONSTANT_SIZE("<!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
|
pwbuffer += U_CONSTANT_SIZE("<!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
|
||||||
|
|
||||||
Fortune* elem = pvfortune->at(0);
|
handlerQuery();
|
||||||
|
|
||||||
|
Fortune* elem = pvfortune->last();
|
||||||
|
|
||||||
elem->id = 0;
|
elem->id = 0;
|
||||||
elem->message.rep->replace(U_CONSTANT_TO_PARAM("Additional fortune added at request time."));
|
elem->message.rep->replace(U_CONSTANT_TO_PARAM("Additional fortune added at request time."));
|
||||||
|
|
||||||
handlerQuery();
|
|
||||||
|
|
||||||
pvfortune->sort(Fortune::cmp_obj);
|
pvfortune->sort(Fortune::cmp_obj);
|
||||||
|
|
||||||
for (uint32_t sz, i = 0, n = pvfortune->size(); i < n; ++i)
|
for (uint32_t sz, i = 0, n = pvfortune->size(); i < n; ++i)
|
||||||
|
@ -171,10 +185,12 @@ public:
|
||||||
|
|
||||||
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','/','t','d','>','<','/','t'));
|
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','/','t','d','>','<','/','t'));
|
||||||
u_put_unalignedp16(pwbuffer+8, U_MULTICHAR_CONSTANT16('r','>'));
|
u_put_unalignedp16(pwbuffer+8, U_MULTICHAR_CONSTANT16('r','>'));
|
||||||
pwbuffer += 10;
|
pwbuffer += 8+2;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) memcpy(pwbuffer, U_CONSTANT_TO_PARAM("</table></body></html>"));
|
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','/','t','a','b','l','e','>'));
|
||||||
|
u_put_unalignedp64(pwbuffer+8, U_MULTICHAR_CONSTANT64('<','/','b','o','d','y','>','<'));
|
||||||
|
u_put_unalignedp64(pwbuffer+16, U_MULTICHAR_CONSTANT64('/','h','t','m','l','>','\0','\0'));
|
||||||
|
|
||||||
UClientImage_Base::wbuffer->size_adjust(pwbuffer + U_CONSTANT_SIZE("</table></body></html>"));
|
UClientImage_Base::wbuffer->size_adjust(pwbuffer + U_CONSTANT_SIZE("</table></body></html>"));
|
||||||
|
|
||||||
|
@ -193,7 +209,7 @@ public:
|
||||||
|
|
||||||
for (uint32_t i = 0; i < 13; ++i)
|
for (uint32_t i = 0; i < 13; ++i)
|
||||||
{
|
{
|
||||||
U_NEW(Fortune, elem, Fortune(i));
|
U_NEW(Fortune, elem, Fortune(i+1));
|
||||||
|
|
||||||
pvfortune->push(elem);
|
pvfortune->push(elem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,10 @@
|
||||||
#include <ulib/orm/orm_driver.h>
|
#include <ulib/orm/orm_driver.h>
|
||||||
#include <ulib/net/server/client_image.h>
|
#include <ulib/net/server/client_image.h>
|
||||||
|
|
||||||
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
# include <ulib/orm/driver/orm_driver_pgsql.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
class World {
|
class World {
|
||||||
public:
|
public:
|
||||||
// Check for memory error
|
// Check for memory error
|
||||||
|
|
|
@ -379,7 +379,7 @@ bool UPgSqlStatement::setBindParam(UOrmDriver* pdrv)
|
||||||
|
|
||||||
num_bind_result = U_SYSCALL(PQnfields, "%p", res);
|
num_bind_result = U_SYSCALL(PQnfields, "%p", res);
|
||||||
|
|
||||||
# ifdef DEBUG
|
# ifdef DEBUG
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
Oid paramtype;
|
Oid paramtype;
|
||||||
|
|
||||||
|
@ -400,7 +400,7 @@ bool UPgSqlStatement::setBindParam(UOrmDriver* pdrv)
|
||||||
|
|
||||||
U_INTERNAL_DUMP("result[%u] (%s): size = %d type = %d format = %d", i, fname, fsize, paramtype, fformat)
|
U_INTERNAL_DUMP("result[%u] (%s): size = %d type = %d format = %d", i, fname, fsize, paramtype, fformat)
|
||||||
}
|
}
|
||||||
# endif
|
# endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num_bind_param)
|
if (num_bind_param)
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
0173
|
017A
|
||||||
|
|
|
@ -83,7 +83,7 @@ ADD ./ /ulib
|
||||||
WORKDIR /ulib
|
WORKDIR /ulib
|
||||||
|
|
||||||
ENV MONGODB_HOST=tfb-database
|
ENV MONGODB_HOST=tfb-database
|
||||||
ENV UMEMPOOL="96,0,0,47,16401,-14,-20,-18,26"
|
ENV UMEMPOOL="96,0,0,97,16417,-14,-20,-18,26"
|
||||||
|
|
||||||
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
||||||
$IROOT/ULib/bin/userver_tcp -c $IROOT/ULib/benchmark.cfg
|
$IROOT/ULib/bin/userver_tcp -c $IROOT/ULib/benchmark.cfg
|
||||||
|
|
|
@ -79,7 +79,7 @@ WORKDIR /ulib
|
||||||
|
|
||||||
ENV ORM_DRIVER="mysql"
|
ENV ORM_DRIVER="mysql"
|
||||||
ENV ORM_OPTION="host=tfb-database user=benchmarkdbuser password=benchmarkdbpass character-set=utf8 dbname=hello_world"
|
ENV ORM_OPTION="host=tfb-database user=benchmarkdbuser password=benchmarkdbpass character-set=utf8 dbname=hello_world"
|
||||||
ENV UMEMPOOL="581,0,0,59,16409,-7,-20,-23,31"
|
ENV UMEMPOOL="96,0,0,97,16417,-14,-20,-18,26"
|
||||||
|
|
||||||
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
||||||
$IROOT/ULib/bin/userver_tcp -c $IROOT/ULib/benchmark.cfg
|
$IROOT/ULib/bin/userver_tcp -c $IROOT/ULib/benchmark.cfg
|
||||||
|
|
|
@ -78,7 +78,7 @@ ADD ./ /ulib
|
||||||
WORKDIR /ulib
|
WORKDIR /ulib
|
||||||
|
|
||||||
ENV ORM_DRIVER="pgsql"
|
ENV ORM_DRIVER="pgsql"
|
||||||
ENV UMEMPOOL="581,0,0,59,16409,-7,-20,-23,31"
|
ENV UMEMPOOL="96,0,0,97,16417,-14,-20,-18,26"
|
||||||
ENV ORM_OPTION="host=tfb-database user=benchmarkdbuser password=benchmarkdbpass dbname=hello_world client_encoding=UTF8"
|
ENV ORM_OPTION="host=tfb-database user=benchmarkdbuser password=benchmarkdbpass dbname=hello_world client_encoding=UTF8"
|
||||||
|
|
||||||
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
||||||
|
|
|
@ -78,7 +78,7 @@ ADD ./ /ulib
|
||||||
WORKDIR /ulib
|
WORKDIR /ulib
|
||||||
|
|
||||||
ENV ORM_DRIVER="pgsql"
|
ENV ORM_DRIVER="pgsql"
|
||||||
ENV UMEMPOOL="581,0,0,59,16409,-7,-20,-23,31"
|
ENV UMEMPOOL="96,0,0,97,16417,-14,-20,-18,26"
|
||||||
ENV ORM_OPTION="host=tfb-database user=benchmarkdbuser password=benchmarkdbpass dbname=hello_world client_encoding=UTF8"
|
ENV ORM_OPTION="host=tfb-database user=benchmarkdbuser password=benchmarkdbpass dbname=hello_world client_encoding=UTF8"
|
||||||
|
|
||||||
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
CMD setcap cap_sys_nice,cap_sys_resource,cap_net_bind_service,cap_net_raw+eip $IROOT/ULib/bin/userver_tcp && \
|
||||||
|
|
|
@ -5,7 +5,27 @@ TechEmpower Web Framework Benchmarks
|
||||||
<!--#declaration
|
<!--#declaration
|
||||||
#include "world.h"
|
#include "world.h"
|
||||||
|
|
||||||
static void usp_fork_db() { World::handlerForkSql(); }
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
static UOrmDriver* pdrv;
|
||||||
|
static USqlStatement* pstmt;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void usp_fork_db()
|
||||||
|
{
|
||||||
|
U_TRACE_NO_PARAM(5, "::usp_fork_db()")
|
||||||
|
|
||||||
|
World::handlerForkSql();
|
||||||
|
|
||||||
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
if (UOrmDriver::isPGSQL())
|
||||||
|
{
|
||||||
|
pdrv = World::psql_query->getDriver();
|
||||||
|
pstmt = World::pstmt_query->getStatement();
|
||||||
|
|
||||||
|
(void) ((UPgSqlStatement*)pstmt)->setBindParam(pdrv);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
static void usp_end_db() { World::handlerEndSql(); }
|
static void usp_end_db() { World::handlerEndSql(); }
|
||||||
|
@ -15,13 +35,33 @@ static void usp_end_db() { World::handlerEndSql(); }
|
||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
-->
|
-->
|
||||||
<!--#code
|
<!--#code
|
||||||
World::pworld_query->id = World::rnumber[0];
|
|
||||||
|
|
||||||
(void) World::pstmt_query->execute();
|
|
||||||
|
|
||||||
World::pwbuffer = UClientImage_Base::wbuffer->pend();
|
World::pwbuffer = UClientImage_Base::wbuffer->pend();
|
||||||
|
|
||||||
World::handlerOneResult(World::rnumber[0], World::pworld_query->randomNumber);
|
World::pworld_query->id = World::rnumber[u_now->tv_usec % 500];
|
||||||
|
|
||||||
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
if (pdrv)
|
||||||
|
{
|
||||||
|
((UPgSqlStatement*)pstmt)->setBindParam();
|
||||||
|
|
||||||
|
PGresult* res = ((UOrmDriverPgSql*)pdrv)->execPrepared(pstmt);
|
||||||
|
|
||||||
|
U_INTERNAL_ASSERT_EQUALS(PQnfields(res), 1)
|
||||||
|
U_INTERNAL_ASSERT_EQUALS(PQntuples(res), 1)
|
||||||
|
|
||||||
|
char* randomNumber = U_SYSCALL(PQgetvalue, "%p,%d,%d", res, 0, 0);
|
||||||
|
|
||||||
|
World::handlerOneResult(World::pworld_query->id, ntohl(*(uint32_t*)randomNumber));
|
||||||
|
|
||||||
|
U_SYSCALL_VOID(PQclear, "%p", res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
(void) World::pstmt_query->execute();
|
||||||
|
|
||||||
|
World::handlerOneResult(World::pworld_query->id, World::pworld_query->randomNumber);
|
||||||
|
}
|
||||||
|
|
||||||
World::endOneResult();
|
World::endOneResult();
|
||||||
-->
|
-->
|
||||||
|
|
|
@ -121,7 +121,7 @@ public:
|
||||||
|
|
||||||
U_INTERNAL_ASSERT_POINTER(pvfortune)
|
U_INTERNAL_ASSERT_POINTER(pvfortune)
|
||||||
|
|
||||||
Fortune* elem = pvfortune->at(1+i);
|
Fortune* elem = pvfortune->at(i);
|
||||||
|
|
||||||
elem->id = _id;
|
elem->id = _id;
|
||||||
|
|
||||||
|
@ -141,16 +141,30 @@ public:
|
||||||
|
|
||||||
char* pwbuffer = UClientImage_Base::wbuffer->pend();
|
char* pwbuffer = UClientImage_Base::wbuffer->pend();
|
||||||
|
|
||||||
(void) memcpy(pwbuffer, U_CONSTANT_TO_PARAM("<!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>"));
|
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','!','d','o','c','t','y','p'));
|
||||||
|
u_put_unalignedp64(pwbuffer+8, U_MULTICHAR_CONSTANT64('e',' ','h','t','m','l','>','<'));
|
||||||
|
u_put_unalignedp64(pwbuffer+16, U_MULTICHAR_CONSTANT64('h','t','m','l','>','<','h','e'));
|
||||||
|
u_put_unalignedp64(pwbuffer+24, U_MULTICHAR_CONSTANT64('a','d','>','<','t','i','t','l'));
|
||||||
|
u_put_unalignedp64(pwbuffer+32, U_MULTICHAR_CONSTANT64('e','>','F','o','r','t','u','n'));
|
||||||
|
u_put_unalignedp64(pwbuffer+40, U_MULTICHAR_CONSTANT64('e','s','<','/','t','i','t','l'));
|
||||||
|
u_put_unalignedp64(pwbuffer+48, U_MULTICHAR_CONSTANT64('e','>','<','/','h','e','a','d'));
|
||||||
|
u_put_unalignedp64(pwbuffer+56, U_MULTICHAR_CONSTANT64('>','<','b','o','d','y','>','<'));
|
||||||
|
u_put_unalignedp64(pwbuffer+64, U_MULTICHAR_CONSTANT64('t','a','b','l','e','>','<','t'));
|
||||||
|
u_put_unalignedp64(pwbuffer+72, U_MULTICHAR_CONSTANT64('r','>','<','t','h','>','i','d'));
|
||||||
|
u_put_unalignedp64(pwbuffer+80, U_MULTICHAR_CONSTANT64('<','/','t','h','>','<','t','h'));
|
||||||
|
u_put_unalignedp64(pwbuffer+88, U_MULTICHAR_CONSTANT64('>','m','e','s','s','a','g','e'));
|
||||||
|
u_put_unalignedp64(pwbuffer+96, U_MULTICHAR_CONSTANT64('<','/','t','h','>','<','/','t'));
|
||||||
|
u_put_unalignedp16(pwbuffer+104, U_MULTICHAR_CONSTANT16('r','>'));
|
||||||
|
|
||||||
pwbuffer += U_CONSTANT_SIZE("<!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
|
pwbuffer += U_CONSTANT_SIZE("<!doctype html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr>");
|
||||||
|
|
||||||
Fortune* elem = pvfortune->at(0);
|
handlerQuery();
|
||||||
|
|
||||||
|
Fortune* elem = pvfortune->last();
|
||||||
|
|
||||||
elem->id = 0;
|
elem->id = 0;
|
||||||
elem->message.rep->replace(U_CONSTANT_TO_PARAM("Additional fortune added at request time."));
|
elem->message.rep->replace(U_CONSTANT_TO_PARAM("Additional fortune added at request time."));
|
||||||
|
|
||||||
handlerQuery();
|
|
||||||
|
|
||||||
pvfortune->sort(Fortune::cmp_obj);
|
pvfortune->sort(Fortune::cmp_obj);
|
||||||
|
|
||||||
for (uint32_t sz, i = 0, n = pvfortune->size(); i < n; ++i)
|
for (uint32_t sz, i = 0, n = pvfortune->size(); i < n; ++i)
|
||||||
|
@ -171,10 +185,12 @@ public:
|
||||||
|
|
||||||
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','/','t','d','>','<','/','t'));
|
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','/','t','d','>','<','/','t'));
|
||||||
u_put_unalignedp16(pwbuffer+8, U_MULTICHAR_CONSTANT16('r','>'));
|
u_put_unalignedp16(pwbuffer+8, U_MULTICHAR_CONSTANT16('r','>'));
|
||||||
pwbuffer += 10;
|
pwbuffer += 8+2;
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) memcpy(pwbuffer, U_CONSTANT_TO_PARAM("</table></body></html>"));
|
u_put_unalignedp64(pwbuffer, U_MULTICHAR_CONSTANT64('<','/','t','a','b','l','e','>'));
|
||||||
|
u_put_unalignedp64(pwbuffer+8, U_MULTICHAR_CONSTANT64('<','/','b','o','d','y','>','<'));
|
||||||
|
u_put_unalignedp64(pwbuffer+16, U_MULTICHAR_CONSTANT64('/','h','t','m','l','>','\0','\0'));
|
||||||
|
|
||||||
UClientImage_Base::wbuffer->size_adjust(pwbuffer + U_CONSTANT_SIZE("</table></body></html>"));
|
UClientImage_Base::wbuffer->size_adjust(pwbuffer + U_CONSTANT_SIZE("</table></body></html>"));
|
||||||
|
|
||||||
|
@ -193,7 +209,7 @@ public:
|
||||||
|
|
||||||
for (uint32_t i = 0; i < 13; ++i)
|
for (uint32_t i = 0; i < 13; ++i)
|
||||||
{
|
{
|
||||||
U_NEW(Fortune, elem, Fortune(i));
|
U_NEW(Fortune, elem, Fortune(i+1));
|
||||||
|
|
||||||
pvfortune->push(elem);
|
pvfortune->push(elem);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,10 @@
|
||||||
#include <ulib/orm/orm_driver.h>
|
#include <ulib/orm/orm_driver.h>
|
||||||
#include <ulib/net/server/client_image.h>
|
#include <ulib/net/server/client_image.h>
|
||||||
|
|
||||||
|
#ifdef U_STATIC_ORM_DRIVER_PGSQL
|
||||||
|
# include <ulib/orm/driver/orm_driver_pgsql.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
class World {
|
class World {
|
||||||
public:
|
public:
|
||||||
// Check for memory error
|
// Check for memory error
|
||||||
|
|
Loading…
Reference in New Issue
Block a user