From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH obexd 5/8] Make obex_server_init to initialized all services registered
Date: Wed, 2 Nov 2011 15:09:52 +0200 [thread overview]
Message-ID: <1320239395-29819-5-git-send-email-luiz.dentz@gmail.com> (raw)
In-Reply-To: <1320239395-29819-1-git-send-email-luiz.dentz@gmail.com>
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This way we don't have to keep adding new entries to main.c everytime
a new service is introduced.
---
src/main.c | 17 ++++-------------
src/server.c | 43 +++++++++++++++++++++++++++----------------
src/server.h | 2 +-
src/service.c | 3 +++
4 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/src/main.c b/src/main.c
index 114c215..992a646 100644
--- a/src/main.c
+++ b/src/main.c
@@ -241,19 +241,10 @@ int main(int argc, char *argv[])
plugin_init(option_plugin, option_noplugin);
- obex_server_init(OBEX_OPP);
-
- obex_server_init(OBEX_FTP);
-
- obex_server_init(OBEX_PCSUITE);
-
- obex_server_init(OBEX_PBAP);
-
- obex_server_init(OBEX_IRMC);
-
- obex_server_init(OBEX_SYNCEVOLUTION);
-
- obex_server_init(OBEX_MAS);
+ if (obex_server_init() < 0) {
+ error("obex_server_init failed");
+ exit(EXIT_FAILURE);
+ }
if (!root_folder_setup(option_root, option_root_setup)) {
error("Unable to setup root folder %s", option_root);
diff --git a/src/server.c b/src/server.c
index bf234ea..f91a622 100644
--- a/src/server.c
+++ b/src/server.c
@@ -47,24 +47,10 @@
static GSList *servers = NULL;
-int obex_server_init(uint16_t service)
+static void init_server(uint16_t service, GSList *transports)
{
- GSList *drivers;
- GSList *transports;
GSList *l;
- drivers = obex_service_driver_list(service);
- if (drivers == NULL) {
- DBG("No service driver registered");
- return -EINVAL;
- }
-
- transports = obex_transport_driver_list();
- if (transports == NULL) {
- DBG("No transport driver registered");
- return -EINVAL;
- }
-
for (l = transports; l; l = l->next) {
struct obex_transport_driver *transport = l->data;
struct obex_server *server;
@@ -76,7 +62,7 @@ int obex_server_init(uint16_t service)
server = g_new0(struct obex_server, 1);
server->transport = transport;
- server->drivers = drivers;
+ server->drivers = obex_service_driver_list(service);
server->transport_data = transport->start(server, &err);
if (server->transport_data == NULL) {
@@ -88,6 +74,31 @@ int obex_server_init(uint16_t service)
servers = g_slist_prepend(servers, server);
}
+}
+
+int obex_server_init(void)
+{
+ GSList *drivers;
+ GSList *transports;
+ GSList *l;
+
+ drivers = obex_service_driver_list(0);
+ if (drivers == NULL) {
+ DBG("No service driver registered");
+ return -EINVAL;
+ }
+
+ transports = obex_transport_driver_list();
+ if (transports == NULL) {
+ DBG("No transport driver registered");
+ return -EINVAL;
+ }
+
+ for (l = drivers; l; l = l->next) {
+ struct obex_service_driver *driver = l->data;
+
+ init_server(driver->service, transports);
+ }
return 0;
}
diff --git a/src/server.h b/src/server.h
index dd0df00..81c0b5d 100644
--- a/src/server.h
+++ b/src/server.h
@@ -28,7 +28,7 @@ struct obex_server {
GSList *drivers;
};
-int obex_server_init(uint16_t service);
+int obex_server_init(void);
void obex_server_exit(void);
diff --git a/src/service.c b/src/service.c
index f7c5a61..8116fc2 100644
--- a/src/service.c
+++ b/src/service.c
@@ -64,6 +64,9 @@ GSList *obex_service_driver_list(uint16_t services)
GSList *l;
GSList *list = NULL;
+ if (services == 0)
+ return drivers;
+
for (l = drivers; l && services; l = l->next) {
struct obex_service_driver *driver = l->data;
--
1.7.6.4
next prev parent reply other threads:[~2011-11-02 13:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-02 13:09 [PATCH obexd 1/8] Remove config.h from src/obex.h Luiz Augusto von Dentz
2011-11-02 13:09 ` [PATCH obexd 2/8] Removed unused fields of obex_server Luiz Augusto von Dentz
2011-11-02 13:09 ` [PATCH obexd 3/8] Remove options per server Luiz Augusto von Dentz
2011-11-02 13:09 ` [PATCH obexd 4/8] Move secure flag to service driver Luiz Augusto von Dentz
2011-11-02 13:09 ` Luiz Augusto von Dentz [this message]
2011-11-02 13:09 ` [PATCH obexd 6/8] filesystem: remove unnecessary includes Luiz Augusto von Dentz
2011-11-02 13:09 ` [PATCH obexd 7/8] ftp: remove pcsuite code Luiz Augusto von Dentz
2011-11-02 13:09 ` [PATCH obexd 8/8] ftp: fix coding style Luiz Augusto von Dentz
2011-11-03 8:33 ` [PATCH obexd 1/8] Remove config.h from src/obex.h Johan Hedberg
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=1320239395-29819-5-git-send-email-luiz.dentz@gmail.com \
--to=luiz.dentz@gmail.com \
--cc=linux-bluetooth@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox