[Saga-devel] Context question

Hartmut Kaiser hkaiser at cct.lsu.edu
Tue Jan 27 09:42:11 CST 2009


> Further to your email from last week one further question.  If I needed
> vector attributes on my context (which I do) how would stage 4 below
> work?  I presume that vector attributes are allowed.

Ohh well. I didn't even think about that yet. So it's currently not
supported. But I think it should be easy enough to add. What's your timeline
on this?

Regards Hartmut

> 
> Thanks,
> 
> Paul.
> 
> -----Original Message-----
> From: saga-devel-bounces at cct.lsu.edu
> [mailto:saga-devel-bounces at cct.lsu.edu] On Behalf Of Hartmut Kaiser
> Sent: 21 January 2009 13:59
> To: saga-devel at cct.lsu.edu
> Subject: RE: [Saga-devel] Context question
> 
> 
> 4) Create a proto-context of your type in the constructor of the
> adaptor
> instance (not the CPI!), see default_advert_adaptor.cpp. This has to be
> done
> only if the session is the default one (only default sessions are
> filled
> with default contexts). Use sensible defaults for all attributes:
> 
>     // create a default security context, if needed
>     if (s->is_default_session())
>     {
>         typedef std::pair<std::string, std::string> entry_type;
>         using namespace boost::assign;
>         std::vector<entry_type> entries;
> 
>         entries +=
>             entry_type(saga::attributes::context_type,
> "default_advert_db"),
>             entry_type(saga::attributes::context_userid, "SAGA"),
>             entry_type(saga::attributes::context_userpass,
> "SAGA_client")
>         ;
>         s->add_proto_context(entries);
>     }
> 
> That's it. All what's left now is in your adaptor to check for your
> context
> in the current session when you need the related information:
> 
>     std::vector<saga::context> ctxs(s.list_contexts());
>     std::vector<saga::context>::iterator end = ctxs.end();
>     for (std::vector<saga::context>::iterator it = ctxs.begin(); it !=
> end;
> ++it)
>     {
>         if ((*it).attribute_exists("saga::attributes::context_type") &&
>             "default_advert_db" ==
> (*it).get_attribute(saga::attributes::context_type))
>         {
>             ...=
> (*it).get_attribute(saga::attributes::context_userid));
>             ...=
> (*it).get_attribute(saga::attributes::context_userpass));
>             break;
>         }
>     }
> 
> Users will have to create a new context using your type, filling in
> their
> attributes, and adding this to the sessions object used to create your
> API
> object:
> 
>     saga::context ctx("default_advert_db");
>     ctx.set_attribute(saga::attributes::context_userid, "...");
>     ctx.set_attribute(saga::attributes::context_userpass, "...");
> 
>     saga::session s;
>     s.add_context(ctx);
> 
>     saga::advert::entry adv(s, ...);
> 
> HTH
> Regards Hartmut
> 
> 
> 
> _______________________________________________
> saga-devel mailing list
> saga-devel at cct.lsu.edu
> https://mail.cct.lsu.edu/mailman/listinfo/saga-devel
> --
> Scanned by iCritical.



More information about the saga-devel mailing list