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 20:55:58 UTC

[45/50] [abbrv] 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/develop
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;
     }