From: Johan Hedberg <johan.hedberg@gmail.com>
To: Slawomir Bochenski <lkslawek@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH v2 4/4] Add detection of MAP function in OBEX requests
Date: Fri, 11 Mar 2011 16:48:55 +0200 [thread overview]
Message-ID: <20110311144855.GA23826@jh-x301> (raw)
In-Reply-To: <AANLkTikJaxmK3pjyptv0xSfb10ivFSu49GdGRTJrXdhP@mail.gmail.com>
Hi Slawek,
On Fri, Mar 11, 2011, Slawomir Bochenski wrote:
> >> +enum messages_function_id {
> >> + MFID_INVALID = 0,
> >> + MFID_SET_NOTIFICATION_REGISTRATION,
> >> + MFID_GET_FOLDER_LISTING,
> >> + MFID_GET_MESSAGES_LISTING,
> >> + MFID_GET_MESSAGE,
> >> + MFID_SET_MESSAGE_STATUS,
> >> + MFID_PUSH_MESSAGE,
> >> + MFID_UPDATE_INBOX,
> >> +};
> >
> > Since "function" here doesn't seem to be referring to a C function but
> > to the type of request, could you call it e.g. request_type instead? Is
> > there a reason you you want to have this enum instead of e.g. storing
> > the original value of the type header?
>
> Function here refers to function as used in MAP specification (see
> chapter 5: Message Access Profile Functions). Functions in MAP are an
> abstraction above OBEX requests and types. There is one case where one
> type is used for two functions (the difference is whether it is GET or
> PUT request).
>
> In 3 (of 9 total) cases type is used solely for selecting function, as
> there is no real object transmitted (well, to be exact the body in
> this cases consist of single filler byte).
>
> And those MAP functions also accept input parameters and return output
> ones, so the name "function" is quite appropriate.
>
> As checking for this MAP function called is needed in more places it
> is convenient to store it as a number instead of doing expensive
> string comparison each time.
Ok, this makes sense (this was a good chance for me to catch up on the
MAP spec ;). However only as far as the MAP core is concerned. On the
MAP back-end side the only relevant purpose of the id seems to be to
pick the right internal function to call. Therefore, I think it'd make
more sense to have these request specific functions exported by the
back-end and have the MAP core call them directly.
This would be similar to how we handle the telephony driver in BlueZ and
how the PBAP phonebook back-end is handled in obexd. I'm not saying this
as justification for the approach but just as a place to look for
examples. The main justification is to remove one unnecessary
abstraction layer (the numeric function id) and to remove the need to
fit each MAP request into the same C function signature (messages_open).
Trying to fit everything into the same mold forces you to create very
generic structs like mas_request which then end up needing a
private_data pointer (for request specific data) and all this layering
just increases the overall complexity of the code.
Johan
next prev parent reply other threads:[~2011-03-11 14:48 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-11 7:46 [PATCH v2 0/4] Message Access Profile plugin Slawomir Bochenski
2011-03-11 7:46 ` [PATCH v2 2/4] Add actual service for Message Access Profile Slawomir Bochenski
2011-03-11 7:46 ` [PATCH v2 3/4] Add MIME driver to MAP plugin Slawomir Bochenski
2011-03-11 7:46 ` [PATCH v2 4/4] Add detection of MAP function in OBEX requests Slawomir Bochenski
2011-03-11 11:13 ` Johan Hedberg
2011-03-11 11:40 ` Slawomir Bochenski
2011-03-11 14:48 ` Johan Hedberg [this message]
2011-03-11 21:27 ` Johan Hedberg
2011-03-14 14:27 ` Slawomir Bochenski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110311144855.GA23826@jh-x301 \
--to=johan.hedberg@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
--cc=lkslawek@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox