All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Holtmann <marcel@holtmann.org>
To: ofono@ofono.org
Subject: Re: [RFC] Add agent API to message atom
Date: Mon, 30 Aug 2010 20:06:21 -0400	[thread overview]
Message-ID: <1283213181.6841.107.camel@localhost.localdomain> (raw)
In-Reply-To: <1283183452-3897-1-git-send-email-aki.niemi@nokia.com>

[-- Attachment #1: Type: text/plain, Size: 4327 bytes --]

Hi Aki,

>  doc/message-api.txt |   97 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 97 insertions(+), 0 deletions(-)
> 
> diff --git a/doc/message-api.txt b/doc/message-api.txt
> index 693a111..ce96315 100644
> --- a/doc/message-api.txt
> +++ b/doc/message-api.txt
> @@ -26,6 +26,66 @@ Methods		dict GetProperties()
>  
>  			Send the message in text to the number in to.
>  
> +		void RegisterTextAgent(object path, string match)
> +
> +			Registers an agent to receive messages.
> +
> +			The object path defines the path of the agent that
> +			will be called when a message is ready to be
> +			dispatched.  The match parameter takes an optional
> +			matching rule in a restricted subset of regular
> +			expression syntax.
> +
> +			TODO: accepted regexp syntax.  Perhaps only allow
> +			simple match rules for the beginning and end of a
> +			message, as well as a free text token match for the
> +			entire message.
> +
> +			Possible Errors: [service].Error.InvalidArguments
> +					 [service].Error.InvalidFormat
> +					 [service].Error.InUse
> +
> +		void RegisterPushAgent(object path, string id)
> +
> +			Registers an agent to receive push messages.
> +
> +			The object path defines the path of the agent that
> +			will be called when a push message is ready to be
> +			dispatched.  The id parameter takes an optional
> +			WAP application ID that is used to match incoming
> +			push messages.
> +
> +			Possible Errors: [service].Error.InvalidArguments
> +					 [service].Error.InvalidFormat
> +					 [service].Error.InUse
> +
> +		void RegisterApplicationAgent(object path, uint dest, uint src)
> +
> +			Registers an agent to receive application messages.
> +
> +			The object path defines the path of the agent that
> +			will be called when an application message is ready
> +			to be dispatched.
> +
> +			The dest parameter is the destination application
> +			port number, and the src parameter is the optional
> +			source application port number.
> +
> +			Possible Errors: [service].Error.InvalidArguments
> +					 [service].Error.InvalidFormat
> +					 [service].Error.InUse
> +
> +		void UnregisterAgent(object path)
> +
> +			Unregisters an agent.  If no agent is registered
> +			that matches the type of an arriving message, it is
> +			silently dropped.
> +
> +			Possible Errors: [service].Error.InvalidArguments
> +					 [service].Error.InvalidFormat
> +					 [service].Error.NotFound
> +					 [service].Error.NotAuthorized
> +

I prefer if we can do a RegisterAgent and UnregisterAgent like we have
in the STK interface. This makes it a lot more consistent throughout the
whole oFono APIs.

This of course means that we need a bit more intelligent matching of the
handled types. In general I am against the overhead of regex for this. I
prefer glob style matching with just * and ?. That should be good
enough. If you really need regex pattern matching then then I think a
specialized oFono plugin with its own APIs is the way to go.


> +MessageAgent Hierarchy [experimental]
> +===============
> +
> +Service		unique name
> +Interface	org.ofono.MessageAgent
> +Object path	freely definable
> +
> +Methods		void ImmediateMessage(string message, dict info)
> +
> +			New immediate (class 0) SMS received.  Info has Sender,
> +			LocalSentTime, and SentTime information.  Sender
> +			address is given in string format.  LocalSentTime and
> +			SentTime are given in string form using ISO8601 format.

Should these really be delivered via an agent?

> +		void IncomingMessage(string message, dict info)
> +
> +			New incoming text SMS received.  Info has Sender,
> +			LocalSentTime, and SentTime information.
> +
> +		void IncomingPush(array{byte} message, dict info)
> +
> +			New incoming push message received.  Info has Sender,
> +			LocalSentTime, SentTime, and ApplicationId information.
> +
> +		void IncomingApplication(array{byte} message, dict info)
> +
> +			New incoming application message received.  Info has
> +			Sender, LocalSentTime, SentTime, DestinationPort, and
> +			SourcePort information.

Why the difference between Push and Application. The dict could be
easily used here to differentiate.

Regards

Marcel



  reply	other threads:[~2010-08-31  0:06 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-30 15:50 [RFC] Add agent API to message atom Aki Niemi
2010-08-31  0:06 ` Marcel Holtmann [this message]
2010-08-31  6:15   ` Aki Niemi
2010-08-31 12:37     ` Marcel Holtmann
2010-08-31 15:04       ` Denis Kenzior
2010-09-01  5:57       ` Aki Niemi
2010-09-01 12:40         ` Marcel Holtmann
2010-08-31  3:37 ` Zhang, Caiwen
2010-08-31  6:20   ` Aki Niemi

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=1283213181.6841.107.camel@localhost.localdomain \
    --to=marcel@holtmann.org \
    --cc=ofono@ofono.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.