home *** CD-ROM | disk | FTP | other *** search
- /*************************************************************/
- /** **/
- /** Microsoft RPC Examples **/
- /** Dictionary Application **/
- /** Copyright(c) Microsoft Corp. 1992-1996 **/
- /** **/
- /*************************************************************/
-
- /*
- *************************************************************************
- * *
- * Remote dictionary example: server side *
- * *
- * Description: *
- * This is the driver for the server side remote dictionary *
- * (splay trees based) demo. This is a standard server driver, *
- * and it works as follows: *
- * *
- * o Call RpcCreateServer to initialize all data structures *
- * *
- * o Initialize an appropriate protocol stack *
- * *
- * o Call RpcAddAddress to start listening on a transport address *
- * (a named pipe in our case). *
- * *
- * o Call RpcAddInterface to initialize interface specific structures *
- * (such as dispatch table, etc.) *
- * *
- * o Optionally advertise by calling RpcExport (not in this version) *
- * *
- * o Loop forever... *
- * *
- *************************************************************************
- */
-
- #include <stdlib.h>
- #include <stdio.h>
- #include <ctype.h>
-
- #include "replay.h" // header file generated by MIDL compiler
- #include "dict0.h"
- #include "util0.h"
-
-
- void Usage()
- {
- printf("Usage : server -e <endpoint>\n");
- exit(1);
- }
-
- void _CRTAPI1
- main(int argc, char *argv[])
- {
- RPC_STATUS status;
- unsigned char * pszProtocolSequence = "ncacn_np";
- unsigned char * pszSecurity = NULL;
- unsigned char * pszEndpoint = "\\pipe\\dict";
- unsigned int cMinCalls = 1;
- unsigned int cMaxCalls = 20;
- unsigned int fDontWait = FALSE;
- int i;
-
- printf ("Microsoft RPC demo Server - Splay (Binary) Tree DataBase\n");
-
- /* allow the user to override settings with command line switches */
- for (i = 1; i < argc; i++) {
- if ((*argv[i] == '-') || (*argv[i] == '/')) {
- switch (tolower(*(argv[i]+1))) {
- case 'e':
- pszEndpoint = argv[++i];
- break;
- case 'h':
- case '?':
- default:
- Usage();
- }
- }
- else
- Usage();
- }
-
- status = RpcServerUseProtseqEp(pszProtocolSequence,
- cMaxCalls,
- pszEndpoint,
- pszSecurity); // Security descriptor
- if (status) {
- printf("RpcServerUseProtseqEp returned 0x%x\n", status);
- exit(status);
- }
-
- status = RpcServerRegisterIf(dict_ServerIfHandle, // interface to register
- NULL, // MgrTypeUuid
- NULL); // MgrEpv; null means use default
- if (status) {
- printf("RpcServerRegisterIf returned 0x%x\n", status);
- exit(status);
- }
-
- printf("Calling RpcServerListen\n");
- status = RpcServerListen(cMinCalls,
- cMaxCalls,
- fDontWait);
- if (status) {
- printf("RpcServerListen returned: 0x%x\n", status);
- exit(status);
- }
-
- }
-