Revert "example_coro..."
authorStefan Metzmacher <metze@samba.org>
Mon, 22 Apr 2013 09:22:36 +0000 (11:22 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 22 Apr 2013 09:22:36 +0000 (11:22 +0200)
This reverts commit f826b4aa5fb9eab4da068cebe35d52af1fb9450b.

source4/ntvfs/ipc/vfs_ipc.c

index e2648852203e53a7c71081356bd1505e2081a51e..50f0e5995cbbdda8e5dae17cb68865fb27c22db1 100644 (file)
@@ -42,8 +42,6 @@
 #include "system/gssapi.h"
 #include "system/locale.h"
 #include "system/filesys.h"
-#include "../lib/util/tevent_unix.h"
-#include "../lib/util/tevent_coroutine.h"
 
 /* this is the private structure used to keep the state of an open
    ipc$ connection. It needs to keep information about all open
@@ -628,149 +626,6 @@ reply:
        req->async_states->send_fn(req);
 }
 
-struct example_ocor_state {
-       const char *string;
-};
-
-static struct tevent_coroutine_result *example_ocor_body(struct tevent_coroutine *coro,
-                                                        struct tevent_context *ev,
-                                                        void *private_data);
-
-static struct tevent_req *example_ocor_send(TALLOC_CTX *mem_ctx,
-                                    struct tevent_context *ev,
-                                    const char *string)
-{
-       struct tevent_req *req;
-       struct example_ocor_state *state;
-       struct tevent_coroutine *coro;
-
-       req = tevent_req_create(mem_ctx, &state, struct example_ocor_state);
-       if (req == NULL) {
-               return NULL;
-       }
-
-       state->string = string;
-
-       coro = tevent_coroutine_create(req, ev, example_ocor_body);
-       if (tevent_req_nomem(coro, req)) {
-               return tevent_req_post(req, ev);
-       }
-
-       tevent_coroutine_run(coro);
-       if (!tevent_req_is_in_progress(req)) {
-               return tevent_req_post(req, ev);
-       }
-
-       return req;
-}
-
-static struct tevent_coroutine_result *example_ocor_body(struct tevent_coroutine *coro,
-                                                        struct tevent_context *ev,
-                                                        void *private_data)
-{
-       struct example_ocor_state *state = talloc_get_type_abort(private_data,
-                                          struct example_ocor_state);
-       struct tevent_req *subreq;
-       bool ok;
-
-       DEBUG(0,("%s[%p]: 1. %s\n", __location__, coro, state->string));
-
-       subreq = tevent_wakeup_send(state, ev, timeval_current_ofs(0,500));
-       if (tevent_coroutine_nomem(subreq, coro)) {
-               return tevent_coroutine_return(coro);
-       }
-       tevent_coroutine_yield(coro, subreq);
-       ok = tevent_wakeup_recv(subreq);
-
-       DEBUG(0,("%s[%p]: 2. %s wakeup[%d]\n", __location__, coro, state->string, ok));
-
-       tevent_coroutine_done(coro);
-       return tevent_coroutine_return(coro);
-}
-
-static int example_ocor_recv(struct tevent_req *req, int *perrno)
-{
-       if (tevent_req_is_unix_error(req, perrno)) {
-               return -1;
-       }
-
-       return 0;
-}
-
-struct example_coro_state {
-       const char *string;
-};
-
-static struct tevent_coroutine_result *example_coro_body(struct tevent_coroutine *coro,
-                                                        struct tevent_context *ev,
-                                                        void *private_data);
-
-static struct tevent_req *example_coro_send(TALLOC_CTX *mem_ctx,
-                                    struct tevent_context *ev,
-                                    const char *string)
-{
-       struct tevent_req *req;
-       struct example_coro_state *state;
-       struct tevent_coroutine *coro;
-
-       req = tevent_req_create(mem_ctx, &state, struct example_coro_state);
-       if (req == NULL) {
-               return NULL;
-       }
-
-       state->string = string;
-
-       coro = tevent_coroutine_create(req, ev, example_coro_body);
-       if (tevent_req_nomem(coro, req)) {
-               return tevent_req_post(req, ev);
-       }
-
-       tevent_coroutine_run(coro);
-       if (!tevent_req_is_in_progress(req)) {
-               return tevent_req_post(req, ev);
-       }
-
-       return req;
-}
-
-static struct tevent_coroutine_result *example_coro_body(struct tevent_coroutine *coro,
-                                                        struct tevent_context *ev,
-                                                        void *private_data)
-{
-       struct example_coro_state *state = talloc_get_type_abort(private_data,
-                                          struct example_coro_state);
-       struct tevent_req *subreq;
-       int ret;
-       int sys_errno;
-
-       DEBUG(0,("%s:%s[%p]: 1. %s\n", __location__, __FUNCTION__, coro, state->string));
-
-       subreq = example_ocor_send(state, ev, state->string);
-       if (tevent_coroutine_nomem(subreq, coro)) {
-               return tevent_coroutine_return(coro);
-       }
-       tevent_coroutine_yield(coro, subreq);
-       ret = example_ocor_recv(subreq, &sys_errno);
-       if (ret == -1) {
-               tevent_coroutine_error(coro, sys_errno);
-               return tevent_coroutine_return(coro);
-       }
-
-       DEBUG(0,("%s:%s[%p]: 2. %s example_ocor[%d]\n", __location__, __FUNCTION__, coro, state->string, ret));
-
-       tevent_coroutine_done(coro);
-       return tevent_coroutine_return(coro);
-}
-
-static int example_coro_recv(struct tevent_req *req, int *perrno)
-{
-       if (tevent_req_is_unix_error(req, perrno)) {
-               return -1;
-       }
-
-       return 0;
-}
-
 struct ipc_write_state {
        struct ipc_private *ipriv;
        struct pipe_state *p;
@@ -781,8 +636,6 @@ struct ipc_write_state {
 
 static void ipc_write_done(struct tevent_req *subreq);
 
-static void ipc_write_coro_done(struct tevent_req *subreq);
-
 /*
   write to a file
 */
@@ -814,50 +667,16 @@ static NTSTATUS ipc_write(struct ntvfs_module_context *ntvfs,
        state->iov.iov_base = discard_const_p(void, wr->writex.in.data);
        state->iov.iov_len = wr->writex.in.count;
 
-       subreq = example_coro_send(state,
-                                  ipriv->ntvfs->ctx->event_ctx,
-                                  "write_start");
-       NT_STATUS_HAVE_NO_MEMORY(subreq);
-       tevent_req_set_callback(subreq, ipc_write_coro_done, state);
-
-       req->async_states->state |= NTVFS_ASYNC_STATE_ASYNC;
-       return NT_STATUS_OK;
-}
-
-static void ipc_write_coro_done(struct tevent_req *subreq)
-{
-       struct ipc_write_state *state =
-               tevent_req_callback_data(subreq,
-               struct ipc_write_state);
-       struct pipe_state *p = state->p;
-       struct ipc_private *ipriv = state->ipriv;
-       struct ntvfs_request *req = state->req;
-       int ret;
-       int sys_errno;
-       NTSTATUS status;
-
-       ret = example_coro_recv(subreq, &sys_errno);
-       TALLOC_FREE(subreq);
-       if (ret == -1) {
-               status = map_nt_error_from_unix(sys_errno);
-               goto reply;
-       }
-
        subreq = tstream_writev_queue_send(state,
                                           ipriv->ntvfs->ctx->event_ctx,
                                           p->npipe,
                                           p->write_queue,
                                           &state->iov, 1);
-       if (!subreq) {
-               status = NT_STATUS_NO_MEMORY;
-               goto reply;
-       }
+       NT_STATUS_HAVE_NO_MEMORY(subreq);
        tevent_req_set_callback(subreq, ipc_write_done, state);
-       return;
 
-reply:
-       req->async_states->status = status;
-       req->async_states->send_fn(req);
+       req->async_states->state |= NTVFS_ASYNC_STATE_ASYNC;
+       return NT_STATUS_OK;
 }
 
 static void ipc_write_done(struct tevent_req *subreq)