Hi Harshan,

This is with reference to the two merging options that you have mentioned
in your previous reply to the thread.

As I understood, with the 1st Option:

You suggest to

[1] convert platform-independent-payload to platform-specific-payload, save
it and when another request comes in,
[2] convert the platform-specific-payload back into its
platform-independent-form and merge it with the
platform-independent-payload for the new request and
[3] convert that back to a platform-specific-payload. (Please correct me if
I am wrong)

So with this option, you suggest not to save a platform-independent-payload
for the pending requests and deal with it only at run-time.

As I understood, with the 2nd Option:

You suggest to

[1] Keep the platform-independent-payload saved along with its
platform-specific-payload and when ever another request comes in,
[2] Get the existing platform-independent-payload and merge it with new
platform-independent-payload of the incoming request, save it and
[3] Convert that to a new platform-specific-payload and overwrite the
existing platform-specific-payload with the new one. (Please correct me if
I am wrong)

Thanks.







*Dilan U. Ariyaratne*
Software Engineer
WSO2 Inc. <http://wso2.com/>
Mobile: +94775149066
lean . enterprise . middleware

On Mon, Nov 17, 2014 at 8:16 AM, Harshan Liyanage <[email protected]> wrote:

> Hi,
>
> *Platform-specific payload *is the actual payload which will be delivered
> to the device when the device contacts the server for pending-operations. 
> *Platform-independent
> *form is used to construct the *Platform-specific payload *& communicate
> device operations internally within CDM. For example when an user sends a
> device operation using CDM web-console, *platform-independent *message
> will be sent from the console -> CDM API -> CDM Core -> Device-platform
> bundle. Then the *device-platform bundle *will use it to construct the 
> *platform-specific
> payload.*
> But there might be situation where some device operation payloads might
> not delivered to the device when another operation for that device comes-in.
>  IMO in such cases its not good to have many pending *platform-specific
> payloads *for a single device. If we are to deliver multiple payloads
> that might introduce an additional overhead in network. In such situations
> what I suggest is to merge the new payload with the existing payload. To do
> that we have two options.
>
> 1. Use the existing *platform-specific payload *& merge it with the new
> operation request
> 2. Use the *platform-independent *form & merge it with new operation
> request (platform-independent form) & construct a new payload
>
> Going through the 1st approach will be harder because then the
> device-platform bundle will have to have the all the conversion logic need
> to convert payloads ( *platform-independent -> platform-specific *& 
> *platform-specific
> -> platform-independent). *In some platforms converting back the 
> *platform-specific
> payload* might not be possible because the device-platform bundle might
> use a 3rd party library to do the conversion. So we had to opt out 1st
> approach.
> If we follow the 2nd approach, CDM server itself can do the merging of the
> operation requests because it does not need any platform-specific knowledge
> to do so. Then the merged *platform-independent payload *can be send to
> the device-platform bundle to get the corresponding *platform-specific
> payload.* For do that we need to save the *platform-independent payload *along
> with the *platform-specific payload.*
> This approach will reduce the workload of device-platform implementer,
> which will make easier integration of new platforms.
>
> Regards,
>
> Lakshitha Harshan
> Software Engineer
> Mobile: *+94724423048*
> Email: [email protected]
> Blog : http://harshanliyanage.blogspot.com/
> *WSO2, Inc. :** wso2.com <http://wso2.com/>*
> lean.enterprise.middleware.
>
> On Mon, Nov 17, 2014 at 5:59 AM, Dilan Udara Ariyaratne <[email protected]>
> wrote:
>
>> Hi All,
>>
>> This is just to clarify things.
>>
>> With reference to defining pending-operations-per-device, why do we need
>> to have a
>> *platform-specific payload *and its *platform-independent* *form*?
>>
>> What is the expected use-case of this?
>>
>> Regards,
>>
>> Dilan.
>>
>>
>>
>>
>> *Dilan U. Ariyaratne*
>> Software Engineer
>> WSO2 Inc. <http://wso2.com/>
>> Mobile: +94775149066
>> lean . enterprise . middleware
>>
>> On Mon, Nov 3, 2014 at 5:36 PM, Harshan Liyanage <[email protected]>
>> wrote:
>>
>>> Hi InoshP,
>>>
>>> Before explaining the above scenario I'll explain the process of payload
>>> generation when a request for new operation comes to the CDM core.
>>>
>>> 1. CDM Core bundle will detect its device platform using the operation
>>> code
>>> 2. Validate the operation against the supported device operations
>>> 3. Send the operation request to the device-platform bundle for
>>> converting it to a *device-specific payload*
>>> 4. Put the converted payload into the *OUT* queue
>>>
>>> We have two options when it comes to your scenario.
>>> 1. Create a new payload including the previous operation & new operation
>>> 2. Create another payload. So that 2 payloads will be stored in the *OUT
>>> *queue.
>>>
>>> IMO the best option would be 1, since the second option will consume
>>> more memory in the queue & more bandwidth of the device because it has to
>>> take 2 payloads.
>>> For supporting the option 1, we have the following options.
>>>
>>> 1. Device platform bundle will take the platform-specific payload in the
>>> queue & merge it with the new operation
>>> In this case, the overhead of the device platform bundle will be much
>>> higher because it must know how to convert back the *platform-specific
>>> payload* to the *platform-independent* form. This will make writing a
>>> new device-platform bundle a tedious task because of the complexity of
>>> payload transformation logic. So I'm -1 on this option.
>>>
>>> 2. We'll use a platform-independent format for saving the payload into
>>> the queue which can be easily merged with new operations. This
>>> platform-independent payload will be converted when the device contacts the
>>> CDM server for pending operations.
>>> This is much more easier method than the first option. But this will
>>> affect the number of concurrent devices CDM can support due to the
>>> on-demand conversion of payloads. On the other-hand this method will reduce
>>> the resource consumption & avoid unnecessary payload transformations.
>>> Further-more this will reduce the complexity of CDM core because there is
>>> no need to get the payload corresponding to the operation from the
>>> device-platform bundle & put it into the OUT queue.
>>>
>>> 3. Save the platform-independent payload format along with the
>>> platform-specific payload in the queue.
>>> This method will increase the resource consumption because we need more
>>> memory to keep the platform-independent payload & platform-dependent
>>> payload in the OUT queue. But this will increase the number of concurrent
>>> devices CDM can support because the payload is readily available when the
>>> device contacts the server.
>>>
>>> I'm +1 for both 2nd and 3rd options. WDYT?
>>>
>>> Thanks,
>>>
>>> Best Regards,
>>>
>>> Lakshitha Harshan
>>> Software Engineer
>>> Mobile: *+94724423048*
>>> Email: [email protected]
>>> Blog : http://harshanliyanage.blogspot.com/
>>> *WSO2, Inc. :** wso2.com <http://wso2.com/>*
>>> lean.enterprise.middleware.
>>>
>>> On Mon, Nov 3, 2014 at 3:47 PM, Inosh Perera <[email protected]> wrote:
>>>
>>>> Hi Harshan,
>>>> If for example, a message to a device is already in the queue and when
>>>> monitoring happen, a similar payload is generated. How is it handled when
>>>> it comes to communication between out queue and device platform bundle?
>>>>
>>>> Regards,
>>>> Inosh
>>>>
>>>> On Mon, Nov 3, 2014 at 3:20 PM, Harshan Liyanage <[email protected]>
>>>> wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> Please find the attached proposed device operations flow of CDM. Your
>>>>> suggestions & feedback is highly appreciated.
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Best Regards,
>>>>>
>>>>> Lakshitha Harshan
>>>>> Software Engineer
>>>>> Mobile: *+94724423048*
>>>>> Email: [email protected]
>>>>> Blog : http://harshanliyanage.blogspot.com/
>>>>> *WSO2, Inc. :** wso2.com <http://wso2.com/>*
>>>>> lean.enterprise.middleware.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Inosh Perera
>>>> Software Engineer, WSO2 Inc.
>>>> Tel: 0785293686
>>>>
>>>
>>>
>>
>
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to