Does Arduino support BWT as well?  If not, we will need MAX_REQUEST_LENGTH and 
MAX_RESPONSE_LENGTH for Arduino.

--Vijay

-----Original Message-----
From: iotivity-dev-bounces at lists.iotivity.org 
[mailto:[email protected]] On Behalf Of Keane, Erich
Sent: Friday, August 07, 2015 10:33 AM
To: Lankswert, Patrick
Cc: iotivity-dev at lists.iotivity.org
Subject: Re: [dev] RI layer changes to enable blockwise-transfer

Hyuna,
I'm doing a quick GREP as well, and found some areas to that'll be a good spot 
to start.

I'd likely begin by removing the MAX_REQUEST_LENGTH and MAX_RESPONSE_LENGTH 
defines from everywhere.

First, the OCServerProtocolRequest currently has a uint8_t payload of 
MAX_REQUEST_LENGTH.  You'll need to convert this to a pointer, then inspect all 
usages of this struct to ensure it is being treated properly.

Second, oicgroup.c has 3 instances where it uses MAX_RESOPNSE_LENGTH to store 
its packages.  You can likely simplify the logic in these areas, since it 
doesn't need to worry about package size anymore.

Finally, line 522 of ocserverrequest.c has a check against MAX_RESPONSE_LENGTH 
that is no longer true, so you'd be able to remove that.

I'll note that I did most of the removal of the 'error on too long' when 
working on the CBOR stuff in anticipation of this fix, but I guess I missed a 
few places!

Let me know how this goes for you, and if I get to anything else, I'll send out 
a message at the end of my work day.

If I get time early next week, I can look into these as well (or help out with 
whatever I can!).

Thanks,
-Erich


On Fri, 2015-08-07 at 17:24 +0000, Keane, Erich wrote:
> Note:
> 
> I've contributed a patch that I'd had sitting around (needed to update
> it) here that tries #2 below:
> https://gerrit.iotivity.org/gerrit/#/c/2141/.
> 
> I haven't made the changes to tinycbor yet (I'm going to start on that 
> today/this weekend with Thiago's advise), so the result will be a 
> necessity to update that once it has been done.
> 
> This patch removes the limit in OCPayloadConvert, however you may 
> still find references to the size-limit elsewhere in the RI layer, so 
> feel free to remove those and submit a patch.
> 
> Thanks!
> -Erich
> 
> 
> On Fri, 2015-08-07 at 16:11 +0000, Keane, Erich wrote:
> > Hyuna:
> > 
> > I?ve actually been working on this on the side as well.  I have 2 
> > different solutions I?ve been working towards.
> > 
> > 1-     A bit of a re-factoring to have the allocation happen all at
> > once in a single function that calls with a growth method (so if, 
> > say,
> > 256 bytes fail, try 512 and so forth).
> > 
> > 2-     A significant refactoring plus contribution to tinycbor that
> > allows for a NULL buffer.  Run through once with the NULL buffer, 
> > get the size out of that, then allocate, and run through it again.
> > 
> > I?m definitely preferring #2, and have done a bit of work on it 
> > lately.  I still need the tinycbor contribution, but since it is 
> > something important for you guys, I can dust off my RI work and get 
> > it done, though perhaps it?ll take some help from Thiago for the 
> > tinycbor fixes.
> > 
> >  
> > 
> > -Erich
> > 
> >  
> > 
> > From: Lankswert, Patrick
> > Sent: Friday, August 07, 2015 7:09 AM
> > To: hyuna0213.jo at samsung.com; iotivity-dev at lists.iotivity.org; 
> > Keane, Erich; Macieira, Thiago
> > Subject: RE: [dev] RI layer changes to enable blockwise-transfer
> > 
> > 
> >  
> > 
> > Hyuna,
> > 
> > If you know your representation and the types, you should be able to 
> > calculate the worse-case encoding size in most cases.
> > 
> > Collections, on the other hand, are more difficult and will require 
> > calculation of worse case size at run time.
> > 
> > FYI, the problem of not knowing the size before encoding would be 
> > worse with JSON, right?
> > 
> > I am not as big a fan of Thiago?s suggestion of try and reallocate 
> > on fail. In bad cases, it will have a performance impact. In worse 
> > case, a flaw in the encoder could case cycles that result in memory 
> > exhaustion. In most cases, it would be better to calculate, try and 
> > if encoding fails, fail the operation. The compromise is the Windows 
> > API practice of running the encoding twice, the first time without a 
> > buffer to calculate the size. If the size is acceptable, allocate 
> > the memory and encode for real.
> > 
> > Pat
> > 
> >  
> > 
> > From: iotivity-dev-bounces at lists.iotivity.org
> > [mailto:iotivity-dev-bounces at lists.iotivity.org] On Behalf Of ???
> > Sent: Friday, August 07, 2015 1:33 AM
> > To: iotivity-dev at lists.iotivity.org; Keane, Erich; Macieira, Thiago
> > Subject: [dev] RI layer changes to enable blockwise-transfer
> > 
> > 
> >  
> > 
> > Hi Erich, Thiago
> > 
> >  
> > 
> > I'm working to enable blockwise-transfer in RI layer.
> > In my understanding, currently RI layer allocates memory for payload 
> > before CBOR encoding.
> >     *outPayload = (uint8_t*)OICCalloc(1, MAX_REQUEST_LENGTH);
> >     *size = MAX_REQUEST_LENGTH;
> > RI always allocate 1024 bytes memory. and re-allocate actual 
> > consumed size after encoding.
> > By using cbor_encoder_init() function, CborEncoder object manage the 
> > allocated memory address and then start CBOR encoding.
> > If encoder->ptr + len is bigger than encoder->end in the encoding 
> > process, returns the CborErrorOutOfMemory.
> > but i have a question about this.
> > if the maximum size of the payload is not 1024 bytes and there is no 
> > size restriction, We have no way of knowing the size information 
> > before encoding. so we cannot allocate memory for payload in 
> > advance.
> > accordingly, we are unable to create CborEncoder object. 
> > because we have to call cbor_encoder_init() function by using size 
> > parameter.
> > I have a problem enabling blockwise-transfer in RI layer because of 
> > this issue.
> > Can you suggest any solution for this problem?
> > I'm not totally understanding RI layer. please tell me if I 
> > misunderstood.
> > 
> > 
> > Regards,
> > Hyuna Jo
> > 
> > 
> >  
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > iotivity-dev mailing list
> > iotivity-dev at lists.iotivity.org
> > https://lists.iotivity.org/mailman/listinfo/iotivity-dev
> 
> _______________________________________________
> iotivity-dev mailing list
> iotivity-dev at lists.iotivity.org
> https://lists.iotivity.org/mailman/listinfo/iotivity-dev

_______________________________________________
iotivity-dev mailing list
iotivity-dev at lists.iotivity.org
https://lists.iotivity.org/mailman/listinfo/iotivity-dev

Reply via email to