[
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
>