UniverseUniversity


Home Projects Jobs Clientele Contact

uu


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: My little comments to CPP code



That's more like it :) I'm still not sure if it makes any sense, but at the very least it now has a chance.

2007/3/22, sergey@total-knowledge.com <sergey@total-knowledge.com>:
> I wonder, what do you actually store as the attribute in the following
> code:
>
>
> ctx.setAttribute<uudb>("handle", *db);

I was trying to save a pointer to uudb in context attribute "handle".
Perhaps this looks better:

  uudb* db = new uudb();
  ctx.setAttribute<uudb*>("handle", db);


>
> other than that, I'd suggest you add 'm_' prefix to any member variable in
> any class. That makes it easier to distinguish class members from anything
> else.

I will keep it in mind, thanks.

>
> 2007/3/21, sergey@total-knowledge.com <sergey@total-knowledge.com>:
>>
>> Ok, finally I have my version of DB pool working. However, since the
>> pool
>> should somehow take care of the login credentials, I have a question
>> regarding passing login/password to it.
>> I'm not going to send diffs since the code is far from decent even imho.
>> Here is the pool(I still use CODBCDatabase, but I remember that it
>> should
>> be replaced with CDatabase):
>>
>> -----------------------
>>
>> uudb::uudb() : handle("DSN=PostgreSQL;UID=sergey;PWD=;DATABASE=uu")
>> {
>>   handle.open();
>>   string login = "sergey";
>>   string password = "password12";
>>   int server = 1;
>>   string sessionid = "test";
>>   connect(login, password, server, sessionid);
>> }
>>
>> uudb::~uudb()
>> {
>>   disconnect();
>>   handle.close();
>> }
>>
>> void uudb::connect(string login, string password, int server, string
>> sessionid)
>> {
>>
>>   try {
>>     CQuery loginQuery(&handle,"select login(:login,:password,:server)");
>>     loginQuery.param("login") = login;
>>     loginQuery.param("password") = password;
>>     loginQuery.param("server") = server;
>>     loginQuery.exec();
>>   }
>>   catch (exception& e) {
>>     cout<<"\nError: " <<e.what();
>>   }
>>
>> }
>>
>> void uudb::disconnect()
>> {
>>
>>   try {
>>     CQuery logoutQuery(&handle,"select logout()");
>>     logoutQuery.exec();
>>   }
>>   catch (exception& e) {
>>     cout<<"\nError: " <<e.what();
>>   }
>>
>> }
>> ----------------------------
>>
>> The question is how do I pass those login, password, server parameters
>> to
>> connect()? Where do I get them, from request context? But since it's
>> first
>> called in init() we don't have those params yet.
>>
>> Here is how handle saved in context:
>>
>> ---------------
>>
>> void InitServlet::init()
>> {
>>
>>   ServletContext& ctx = getServletConfig().getServletContext();
>>   uudb* db = new uudb();
>>   ctx.setAttribute<uudb>("handle", *db);
>>
>> }
>>
>> -----------------
>>
>> Here is how I retrieve handle(or better say uudb object) from context in
>> UUServlet:
>>
>> ------------------
>>
>> UUServlet::handle_t UUServlet::getHandle() const
>> {
>>   ServletContext& ctx = getServletConfig().getServletContext();
>>   handle_t handle;
>>   handle = ctx.getAttribute<uudb>("handle");
>>   return handle;
>> }
>> -------------------
>>
>> This handle passed to User model class:
>>
>> --------------------
>>
>> User::User(uudb& pool) : m_pool(pool)
>> {}
>>
>> CQuery qrySelect(&(m_pool.handle),"select pl_id from person_list where
>> pl_login=:login and pl_password=:password");
>> ---------------
>>
>>
>> The application does the job except handling login credentials in
>> uudb().
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
>
> --
> Alexey Parshin,
> http://www.sptk.net
>





--
Alexey Parshin,
http://www.sptk.net

Authoright © Total Knowledge: 2001-2008