Re: [RFC] API for MAP client in obex-client

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Bartosz,

On Mon, Nov 7, 2011 at 5:10 PM, Bartosz Szatkowski <bulislaw@xxxxxxxxx> wrote:
> On Mon, Nov 7, 2011 at 2:20 PM, Luiz Augusto von Dentz
> <luiz.dentz@xxxxxxxxx> wrote:
>> Hi Bartosz,
>>
>> On Mon, Nov 7, 2011 at 2:42 PM, Bartosz Szatkowski <bulislaw@xxxxxxxxx> wrote:
>>> On Mon, Nov 7, 2011 at 11:37 AM, Luiz Augusto von Dentz
>>> <luiz.dentz@xxxxxxxxx> wrote:
>>>> Hi Bartosz,
>>>>
>>>> On Mon, Nov 7, 2011 at 11:46 AM, Bartosz Szatkowski <bulislaw@xxxxxxxxx> wrote:
>>>>> On Fri, Nov 4, 2011 at 1:00 PM, Luiz Augusto von Dentz
>>>>> <luiz.dentz@xxxxxxxxx> wrote:
>>>>>> Hi Bartosz,
>>>>>>
>>>>>> On Thu, Nov 3, 2011 at 9:01 PM, Bartosz Szatkowski <bulislaw@xxxxxxxxx> wrote:
>>>>>>>
>>>>>>> Generally you may be right, but i'm not sure whether actually tangling
>>>>>>> agent (client of the client?) is a good idea -- I'll check it
>>>>>>> tomorrow, but AFAIR it's  an additional reversed connection? And
>>>>>>> situation with this big message probably is not so often to cause such
>>>>>>> a confusion. I would really like to use such API in simplest possible
>>>>>>> way, by calling some method and receiving answer and its exactly what
>>>>>>> is accomplished with fd.
>>>>>>
>>>>>> I haven't seen the implementation but I have a feeling it won't be
>>>>>> that simple, if you use the pipe/unix socket to stream the data them
>>>>>> you end up copying data and the stream still need to be handled  in
>>>>>> client side which will very likely copy/convert the data again. We
>>>>>> have tried such a thing before with A2DP and it was consider
>>>>>> inefficient, so what we do nowadays is passing the bluetooth socket
>>>>>> itself to PulseAudio but note that here it would not be a good idea
>>>>>> since the client would have to deal with OBEX protocol directly.
>>>>>>
>>>>>> You could return the transfer object on GetMessage, actually is is
>>>>>> probably a good idea to do this also for GetFile/PutFile, so that the
>>>>>> caller application have direct control on the transfers it has started
>>>>>> and we can probable have a property e.g. Status (Transferring, Error,
>>>>>> Complete) to indicate the transfer status, that would remove the need
>>>>>> to have an agent in the application although the system may still have
>>>>>> one to track the progress and keep history of the transfers.
>>>>>>
>>>>>> --
>>>>>> Luiz Augusto von Dentz
>>>>>>
>>>>>
>>>>> As far as i can tell adding transfer would be good idea and it's not
>>>>> necessary to actually track it. But there is still question how to
>>>>> transfer data? I'm still convinced that passing fd is good idea, maybe
>>>>> even more flexible would be to pass it from user to obex-client in
>>>>> DBus call, so user may decide whether it would be more convenience to
>>>>> use file, pipe or whatever.
>>>>>
>>>>> So method may look something like this:
>>>>>
>>>>> string GetMessage(unix_fd msgfd, string handle, dict(uint8 tag, variant value))
>>>>>
>>>>> Returning path to the newly created transfer.
>>>>
>>>> As I told you passing a fd to pass data is not very efficient because
>>>> you are just adding an intermediate buffer since obexd will have to
>>>> copy from the socket to the fd where the client read (btw buffering
>>>> the whole message in the client is probably a bad idea), in the other
>>>> hand the fd could be of a file that would probably work better but it
>>>> is no much different than passing a path which was my initial
>>>> suggestion and is probably simpler to implement because we have been
>>>> doing this already. This way when the transfer is completed it just a
>>>> matter of reading the file.
>>>>
>>>> --
>>>> Luiz Augusto von Dentz
>>>>
>>>
>>> Generally GetMessage (x-bt/message) is set to be buffered in
>>> obc_transfer_get - so there is (AFAICT) no real difference what we
>>> would do with this buffer. And if we would like to modify it to use
>>> file buffering, we can use usr provided fd rather then file name and
>>> let client decide where to store it. In sake of user app simplicity,
>>> as you say earlier.
>>
>> That is nothing that couldn't be changed, also whether it is a path or
>> not the user is still deciding where it should be stored but I guess a
>> path is actually less troublesome to the client to deal with since not
>> every binding supports fd passing which can be a problem to end user
>> application which I suppose this API should be targeting, also using
>> paths is consistent with other parts of the code GetFile/PutFile.
>>
>> --
>> Luiz Augusto von Dentz
>>
>
> OK, so maybe this fd passing would be confusing and may be problematic
> if somebody would use java or something.
>
> string GetMessage(string file_name, string handle, dict(uint8 tag,
> variant value))
>
> i think that this is as good as we can settle in this discussion, if
> there is no serious issues in this model maybe i would start coding
> it? (I'll resend full api sometime soon)

Sounds good to me.

-- 
Luiz Augusto von Dentz
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux