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



The reason I set in attribute uu object, not sptk CDatabase& db, b/c I was
told that the only place we should have sptk is in includes(if I
understood it correctly). Perhaps I should save uudb.handle, not uudb
though.
Nothing against sptk in general, but we don't want it to have too much
influence on our application.


> 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