Hi Erich,

I think your suggestion seems satisfies my needs.
Here is the code snippet the I've wrote based on suggestion
& please do correct me if I'm wrong..


// Hosting Module..

OCResource cur_res;
std::map<string, OCRepresentation> HostingRes;


foundResource(std::shared_ptr<OCResource> resource)
{
    // check whether found resource is host-able resource...
    // if then...
    resource->get(QueryParam(), &onGet);
    cur_res = resource;
}

onGet(..., const OCRepresentation rep, ...)
{
    // store resource representation internally...
    HostingRes[rep.getUri(), rep];

    // start observing on this resource.
    cur_res->observe(..,...,&onObserve);

    // then register resource as a virtual resource & discoverable
    // so that the other resource clients can discover & request on this
resource..
    OCPlatform.registerResource(~~~~~~);

}

Let me do the test with your suggestion whether it's enough for us. :)

Thank you.
Jay.

2015-01-03 20:02 GMT+09:00 Keane, Erich <erich.keane at intel.com>:

>   Hi Jay-
> I thought about this more today, and believe that the existing
> OCRepresentation object ought to satisfy this condition, doesn?t it?  The
> response object will allow you to set the OCRepresentation object, which
> contains all of the mapped items.
>
> In the first bolded line, you would just wish to copy the OCRepresentation
> object for yourself.  In the second bolded line, you would just do
> pResponse->setRepresentation with your copy (or another modified copy).
>
> Given that as the middle-object, the only thing I see missing from your
> example is the string-indexer (to support rep[uri] = Blah).  This is
> something that I can do as well I suspect, there will be a bit of
> templating that I have to figure out, but I think I can get that too.
>
> Would that satisfy this need?
> Thanks!
> Erich
>
> *From:* iotivity-dev-bounces at lists.iotivity.org [mailto:
> iotivity-dev-bounces at lists.iotivity.org] *On Behalf Of *Keane, Erich
> *Sent:* Friday, January 02, 2015 11:14 AM
> *To:* junghyun.oh at samsung.com; iotivity-dev at lists.iotivity.org
> *Cc:* ???; ???; ???; ???
> *Subject:* Re: [dev] [Question] Is there any alternative data model for
> the "AttributeMap" (Which is removed now..)
>
>
>
> I can definitely see the use case here.  My concern is definitely with the
> additional size but mostly exposing a boost::variant (and all the trouble
> that comes with that).   In this case, the AttributeSet object would need
> to be able to properly hold a int, float, bool, vector, etc.
>
> I?ll think this through a bit more, perhaps I can come up with a structure
> to do this in a clean/wrapped way.
>
> Thanks,
> Erich
>
> *From:* ??? [mailto:junghyun.oh at samsung.com]
> *Sent:* Thursday, January 01, 2015 6:44 PM
> *To:* Keane, Erich; iotivity-dev at lists.iotivity.org
> *Cc:* ???; ???; ???; ???
> *Subject:* Re: RE: [dev] [Question] Is there any alternative data model
> for the "AttributeMap" (Which is removed now..)
>
>
>
> Hi Erich,
>
>
>
> Thanks for you reply. I really do appreciate it.
>
> The "Key Collection" you mentioned down below seems like the one that we
> needed for
>
> implementing the "Remote Resource Hosting" feature.
>
> To host a remte resource, the hosting module(?) should be able to keep the
> recent
>
> attribute key-value data recieved from the original resource server &
> distribute them
>
> to the resource clients if they requests them(GET/PUT/POST/..OBSERVE,
> DELETE? not sure).
>
> However, it would be more nice if we could have "Instance of something
> that have all the
>
> attributes information(Key-Value pairs)" not the "Instance of each
> attributes".
>
> For example..
>
>
>
> // Remote resource Hosting
>
> private:
>
>     std::map<std::string, AttributeSet > mRemoteResAttrs;
>
>
>
> void onFoundResource(const OCRepresentation rep)
>
> {
>
>        AttributeSet set = rep.*getSetofAttributes*();
>
>        mRemoteResAttrs[ rep.getUri() ] = set;  // this is just a code
> snippet..
>
> }
>
>
>
> // Distributing the attributes value of remote resource which is being
> hosted..
>
> void entityHandler(OCResourceRequest request)
>
> {
>
>     auto pResponse = std::make_shared<OC::ResourceResponse>();
>
>     pResponse->setRequestHandle(...);
>
>     ....
>
>     if( mRemoteResAttr.find(request.getResourceURI()  )
>
>         pResponse->*setAttributeSet*(mRemoteResAttr[
> request.getResourceURI() ]  );
>
> }
>
>
>
> I coded my idea & needs with code snippet described above( Method with
> bold )
>
> When hosting the remote resource, basically the hoster doesn't need to
> know the
>
> all the keys of the resource attributes.(If it knows them it could do more
> things but
>
> no need for now)
>
> Of course, we need to consider the size & affect of the base lib. that
> this change will bring,
>
> but I will be appreciated if you consider my need.
>
>
>
> Your thought?
>
>
>
> Thank you.
>
> Jay.
>
>
>
>
>
> ------- *Original Message* -------
>
> *Sender* : Keane, Erich<erich.keane at intel.com>
>
> *Date* : 2015-01-01 05:04 (GMT+09:00)
>
> *Title* : RE: [dev] [Question] Is there any alternative data model for
> the "AttributeMap" (Which is removed now..)
>
>
>
> Hi Jay-
>
> I wrote the new OCRepresentation, so I?m somewhat privy to the
> implementation decisions.  The AttributeMap (based on
> in-line-documentation) was meant to be an internal representation from the
> start, and I believe exposing it was a way of unblocking people along the
> way.  During the OCRepresentation re-write, the AttributeMap stopped making
> sense, since our internal storage mechanism became much different.  Rather
> than being a string/string map, the data is now stored using a
> boost::variant, which we are tentative to expose due to its fluid nature
> and potential for replacement.
>
> Before I left for vacation, I was planning a way of exposing the
> OCRepresentation keys as a collection, which could then expose the values
> appropriately.  However, I haven?t done so yet.  I was going to propose
> something at the beginning of next week to allow this feature, as it has
> been requested by a few others before.
>
> My thought was to expose a ?Keys? collection object that would contain a
> list of the following, so that people could correctly unpack and use them
> in a orthogonal way:
> Key name (String)
> Key Type (Enum class)
> Key Value (exposed via a getValue method, or a getValueAsString(useful for
> when it isn?t a string!).
>
> The idea would result in code that looks something like this (I?m typing
> this directly in outlook, so please pardon my formatting/pseudo-code-ness):
> void IterateValues(const OCRepresentation& rep)
> {
>     for(auto& attribute : rep) // Having OCRepresentation expose a begin()
> and end() mechanism would allow this to be used in a standard STL compliant
> manner
>     {
>         //convert Enum to String Value may be left as an exercise to the
> reader if I cannot come up with a great to_string mechanism
>         cout<<?Attribute name: ?<<attribute.name()<<? is of type
> ?<<ConvertEnumToStringValue(attribute.type())<<? with value of
> ?<<attribute.valueAsString()<<endl;
>         cout<<?Actual Value: ?;
>         switch(attribute.type())
>         {
>               case AttributeType::Int: cout <<
> attribute.getValue<int>();break;
>               case AttributeType::Boolean: cout
> <<attribute.getValue<bool>();break;
>               // and so on.  This becomes difficult in the array-versions
> for obvious reasons, but I will still consider nicer ways to do this.
>     }
> }
>
> As this is still being mulled over, I?d love to hear any feedback you have
> on this use case!
>
> Thanks!
> -Erich
>
> *From:* iotivity-dev-bounces at lists.iotivity.org [mailto:
> iotivity-dev-bounces at lists.iotivity.org] *On Behalf Of *???
> *Sent:* Tuesday, December 30, 2014 8:45 PM
> *To:* iotivity-dev at lists.iotivity.org
> *Cc:* ???; ???; ???; ???
> *Subject:* [dev] [Question] Is there any alternative data model for the
> "AttributeMap" (Which is removed now..)
>
>
>
> Hi Vijay & Pat. :)
>
>
>
> First of all, congratulations on the Public open of IoTivity.org  & thank
> you all for
>
> your hard work. :)
>
>
>
> I have a question to ask about the "Data model" used in the IoTivity Base
> api.
>
> Previously, there was an api in the "OCRepresentation" which returns the
> instance of
>
> "AttributeMap" data model which has key-value information of a resource
>
> so that the application can get the resource data from it(AttributeMap)
>
> However, this api (which returns the instance of "attributeMap") has
> removed & the only
>
> way to get the attribute value is to use
> "OCPresentaion::getValue("key") by inserting
>
> "key"name.
>
> Is there any way or plan to open an api to get the instance of
> "AttributeMap" from the Application side?
>
> NotificationManager which features is to host remote-resources (on HW
> constrained device)
>
> was not able to host any resources because of this situation.
>
>
>
> Of course this is not a urgent request, however, I will be appreciated if
> you let us the
>
> plan or a way to get the "instance of AttributeMap of found resource"
> from the IoTivity base. :)
>
>
>
> Thank you.
>
> Jay.
>
> *Jung-hyun Oh.  *
>
> IoT Solution Lab.  | *SW R&D Center *| SAMSUNG ELECTRONICS CO.,LTD
>
> *Mobile +82-10-9890-6731 *| Beyond your imagination, Always
>
>
>
>
>
>
>
>
>
> *Jung-hyun Oh.  *
>
> IoT Solution Lab.  | *SW R&D Center *| SAMSUNG ELECTRONICS CO.,LTD
>
> *Mobile +82-10-9890-6731 *| Beyond your imagination, Always
>
>
>
>
>
>
> _______________________________________________
> iotivity-dev mailing list
> iotivity-dev at lists.iotivity.org
> https://lists.iotivity.org/mailman/listinfo/iotivity-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150104/b229118a/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.gif
Type: image/gif
Size: 13168 bytes
Desc: not available
URL: 
<http://lists.iotivity.org/pipermail/iotivity-dev/attachments/20150104/b229118a/attachment.gif>

Reply via email to