home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / netds / winsock / iocomplt / socksrv.h < prev   
C/C++ Source or Header  |  1997-10-05  |  2KB  |  118 lines

  1.  
  2. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  3. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  4. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  5. // PARTICULAR PURPOSE.
  6. //
  7. // Copyright (C) 1993-1997  Microsoft Corporation.  All Rights Reserved.
  8. //
  9. //  MODULE:   socksrv.h
  10. //
  11. //  PURPOSE:  Definitions and prototypes for socksrv.c
  12. //
  13.  
  14. #include <windows.h>
  15. #include <tchar.h>
  16. #include <stdio.h>
  17. #include <stdlib.h>
  18. #include <string.h>
  19. #include <stdarg.h>
  20. #include <wsipx.h>
  21. #include "commdef.h"
  22.  
  23. #define MAXIMUM_NUMBER_OF_CLIENTS   64
  24. #define MAXIMUM_NUMBER_OF_WORKERS   32
  25. #define FILE_SIZE ((1024*1024*8)-CLIENT_OUTBOUND_BUFFER_MAX)
  26.  
  27. #define SIXTY_FOUR_K    (64*1024)
  28. #define SIXTEEN_K       (16*1024)
  29. DWORD InitialBuffer[SIXTY_FOUR_K/sizeof(DWORD)];
  30. #define NUMBER_OF_WRITES ((FILE_SIZE+CLIENT_OUTBOUND_BUFFER_MAX)/SIXTY_FOUR_K)
  31.  
  32. #define CLIENT_CONNECTED    0x00000001
  33. #define CLIENT_DONE         0x00000002
  34.  
  35. typedef struct _PER_CLIENT_DATA {
  36.     SOCKET Socket;
  37.     OVERLAPPED Overlapped;
  38.     CLIENT_IO_BUFFER IoBuffer;
  39.     CHAR OutboundBuffer[CLIENT_OUTBOUND_BUFFER_MAX];
  40.     DWORD Flags;
  41.     HANDLE hEvent;
  42. } PER_CLIENT_DATA, *PPER_CLIENT_DATA;
  43.  
  44. typedef struct _PER_THREAD_DATA {
  45.     DWORD TotalTransactions;
  46.     DWORD TotalBytesTransferred;
  47. } PER_THREAD_DATA, *PPER_THREAD_DATA;
  48.  
  49. PER_THREAD_DATA ThreadData[MAXIMUM_NUMBER_OF_WORKERS];
  50. PER_CLIENT_DATA ClientData[MAXIMUM_NUMBER_OF_CLIENTS];
  51. BOOL fVerbose;
  52. BOOL fTcp;
  53. DWORD dwNumberOfClients;
  54. DWORD dwNumberOfWorkers;
  55. DWORD dwConcurrency;
  56. DWORD dwWorkIndex;
  57. SYSTEM_INFO SystemInfo;
  58. HANDLE CompletionPort;
  59. DWORD dwActiveClientCount;
  60. HANDLE hBenchmarkComplete;
  61. HANDLE hBenchmarkStart;
  62. DWORD StartTime;
  63. DWORD EndTime;
  64. HANDLE hFile;
  65.  
  66. DWORD
  67. WINAPI
  68. Random (
  69.     DWORD nMaxValue
  70.     );
  71.  
  72.  
  73. VOID
  74. WINAPI
  75. ShowUsage(
  76.     VOID
  77.     );
  78.  
  79. VOID
  80. WINAPI
  81. ParseSwitch(
  82.     CHAR chSwitch,
  83.     int *pArgc,
  84.     char **pArgv[]
  85.     );
  86.  
  87. BOOL
  88. WINAPI
  89. CreateNetConnections(
  90.     VOID
  91.     );
  92.  
  93. BOOL
  94. WINAPI
  95. CreateWorkers(
  96.     VOID
  97.     );
  98.  
  99. DWORD
  100. WINAPI
  101. WorkerThread(
  102.     LPVOID WorkContext
  103.     );
  104.  
  105. VOID
  106. WINAPI
  107. CompleteBenchmark(
  108.     VOID
  109.     );
  110.  
  111. VOID
  112. WINAPI
  113. SortTheBuffer(
  114.     LPDWORD Destination,
  115.     LPDWORD Source,
  116.     int DwordCount
  117.     );
  118.