You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2016/07/13 19:24:25 UTC
[2/6] incubator-mynewt-core git commit: mn_socket;
replace socket pointer with a user-defined void * in socket callback
arguments.
mn_socket; replace socket pointer with a user-defined void * in
socket callback arguments.
Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/bb7367de
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/bb7367de
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/bb7367de
Branch: refs/heads/ble_hs_api
Commit: bb7367dea43b8a2468ff289115ded06c5c06b036
Parents: c7c7c9c
Author: Marko Kiiskila <ma...@runtime.io>
Authored: Tue Jul 12 17:24:41 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Wed Jul 13 12:11:36 2016 -0700
----------------------------------------------------------------------
sys/mn_socket/include/mn_socket/mn_socket.h | 13 +++++++++----
sys/mn_socket/include/mn_socket/mn_socket_ops.h | 6 +++---
2 files changed, 12 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bb7367de/sys/mn_socket/include/mn_socket/mn_socket.h
----------------------------------------------------------------------
diff --git a/sys/mn_socket/include/mn_socket/mn_socket.h b/sys/mn_socket/include/mn_socket/mn_socket.h
index 75ebc8c..6b457be 100644
--- a/sys/mn_socket/include/mn_socket/mn_socket.h
+++ b/sys/mn_socket/include/mn_socket/mn_socket.h
@@ -57,6 +57,7 @@ struct os_mbuf;
struct mn_socket {
const union mn_socket_cb *ms_cbs; /* filled in by user */
+ void *ms_cb_arg; /* filled in by user */
const struct mn_socket_ops *ms_ops; /* filled in by mn_socket */
};
@@ -66,11 +67,11 @@ struct mn_socket {
*/
union mn_socket_cb {
struct {
- void (*readable)(struct mn_socket *, int err);
- void (*writable)(struct mn_socket *, int err);
+ void (*readable)(void *cb_arg, int err);
+ void (*writable)(void *cb_arg, int err);
} socket;
struct {
- int (*newconn)(struct mn_socket *listen, struct mn_socket *new);
+ int (*newconn)(void *cb_arg, struct mn_socket *new);
} listen;
};
@@ -131,7 +132,11 @@ int mn_getpeername(struct mn_socket *, struct mn_sockaddr *);
int mn_close(struct mn_socket *);
-#define mn_socket_set_cbs(sock, cbs) (sock)->ms_cbs = (cbs)
+#define mn_socket_set_cbs(sock, cb_arg, cbs) \
+ do { \
+ (sock)->ms_cbs = (cbs); \
+ (sock)->ms_cb_arg = (cb_arg); \
+ } while (0)
/*
* Address conversion
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/bb7367de/sys/mn_socket/include/mn_socket/mn_socket_ops.h
----------------------------------------------------------------------
diff --git a/sys/mn_socket/include/mn_socket/mn_socket_ops.h b/sys/mn_socket/include/mn_socket/mn_socket_ops.h
index 6e768eb..61be054 100644
--- a/sys/mn_socket/include/mn_socket/mn_socket_ops.h
+++ b/sys/mn_socket/include/mn_socket/mn_socket_ops.h
@@ -57,7 +57,7 @@ static inline void
mn_socket_writable(struct mn_socket *s, int error)
{
if (s->ms_cbs && s->ms_cbs->socket.writable) {
- s->ms_cbs->socket.writable(s, error);
+ s->ms_cbs->socket.writable(s->ms_cb_arg, error);
}
}
@@ -65,7 +65,7 @@ static inline void
mn_socket_readable(struct mn_socket *s, int error)
{
if (s->ms_cbs && s->ms_cbs->socket.readable) {
- s->ms_cbs->socket.readable(s, error);
+ s->ms_cbs->socket.readable(s->ms_cb_arg, error);
}
}
@@ -73,7 +73,7 @@ static inline int
mn_socket_newconn(struct mn_socket *s, struct mn_socket *new)
{
if (s->ms_cbs && s->ms_cbs->listen.newconn) {
- return s->ms_cbs->listen.newconn(s, new);
+ return s->ms_cbs->listen.newconn(s->ms_cb_arg, new);
} else {
return -1;
}