diff options
Diffstat (limited to 'tests/ce-createpipe.c')
-rw-r--r-- | tests/ce-createpipe.c | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/tests/ce-createpipe.c b/tests/ce-createpipe.c deleted file mode 100644 index b44784c..0000000 --- a/tests/ce-createpipe.c +++ /dev/null @@ -1,179 +0,0 @@ -/* ce-createpipe.c - Test the W32CE CreatePipe implementation. - Copyright (C) 2010 Free Software Foundation, Inc. - - This file is part of Assuan. - - Assuan is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as - published by the Free Software Foundation; either version 3 of - the License, or (at your option) any later version. - - Assuan is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this program; if not, see <http://www.gnu.org/licenses/>. - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> -#include <errno.h> - -#define WIN32_LEAN_AND_MEAN -#include <windows.h> - -#include "common.h" - -#include "../src/assuan.h" /* We need the CreatePipe prototype. */ - - -static DWORD -reader_thread (void *arg) -{ - HANDLE hd = arg; - DWORD nread; - char buffer[16]; - - for (;;) - { - if (!ReadFile (hd, buffer, sizeof buffer, &nread, FALSE)) - { - log_error ("reader: ReadFile failed: rc=%d\n", (int)GetLastError ()); - break; - } - log_info ("reader: read %d bytes\n", (int)nread); - log_printhex ("got: ", buffer, nread); - } - - log_info ("reader: finished\n"); - CloseHandle (hd); - return 0; -} - - -static DWORD -writer_thread (void *arg) -{ - HANDLE hd = arg; - DWORD nwritten; - int i = 0; - int j; - char buffer[20]; - int count; - - for (count=0; count < 30; count++) - { - for (j=0; j < sizeof buffer; j++) - buffer[j] = i++; - - if (!WriteFile (hd, buffer, sizeof buffer, &nwritten, NULL)) - { - log_error ("writer: WriteFile failed: rc=%d\n", (int)GetLastError ()); - break; - } - if (nwritten != sizeof buffer) - log_info ("writer: wrote only %d bytes\n", (int)nwritten); - } - - log_info ("writer: finished\n"); - CloseHandle (hd); - return 0; -} - - - -static void -run_test (void) -{ - HANDLE hd[2]; - HANDLE threads[2]; - - if (!CreatePipe (&hd[0], &hd[1], NULL, 0)) - { - log_error ("CreatePipe failed: rc=%d\n", (int)GetLastError ()); - return; - } - log_info ("pipe created read=%p write=%p\n", hd[0], hd[1]); - - threads[0] = CreateThread (NULL, 0, reader_thread, hd[0], 0, NULL); - if (!threads[0]) - log_fatal ("error creating reader thread: rc=%d\n", (int)GetLastError ()); - else - log_info ("reader thread created\n"); - threads[1] = CreateThread (NULL, 0, writer_thread, hd[1], 0, NULL); - if (!threads[0]) - log_fatal ("error creating writer thread: rc=%d\n", (int)GetLastError ()); - else - log_info ("writer thread created\n"); - - switch (WaitForMultipleObjects (2, threads, FALSE, INFINITE)) - { - case WAIT_OBJECT_0: - log_info ("reader thread finished first\n"); - break; - case WAIT_OBJECT_0 + 1: - log_info ("writer thread finished first\n"); - break; - default: - log_error ("WFMO failed: rc=%d\n", (int)GetLastError ()); - break; - } - - - - CloseHandle (threads[0]); - CloseHandle (threads[1]); -} - - - -/* - M A I N - */ -int -main (int argc, char **argv) -{ - int last_argc = -1; - - if (argc) - { - log_set_prefix (*argv); - argc--; argv++; - } - while (argc && last_argc != argc ) - { - last_argc = argc; - if (!strcmp (*argv, "--help")) - { - printf ("usage: %s [options]\n" - "\n" - "Options:\n" - " --verbose Show what is going on\n", - log_get_prefix ()); - exit (0); - } - if (!strcmp (*argv, "--verbose")) - { - verbose = 1; - argc--; argv++; - } - else if (!strcmp (*argv, "--debug")) - { - verbose = debug = 1; - argc--; argv++; - } - } - - run_test (); - - return errorcount ? 1 : 0; -} - |