Mercurial > hg > truffle
diff agent/src/os/win32/Dispatcher.cpp @ 0:a61af66fc99e jdk7-b24
Initial load
author | duke |
---|---|
date | Sat, 01 Dec 2007 00:00:00 +0000 |
parents | |
children | c18cbe5936b8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/src/os/win32/Dispatcher.cpp Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,115 @@ +/* + * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code 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 General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + +#include <stdio.h> +#include <string.h> +#include "dispatcher.hpp" + +const char* CMD_ASCII = "ascii"; +const char* CMD_UNICODE = "unicode"; +const char* CMD_PROCLIST = "proclist"; +const char* CMD_ATTACH = "attach"; +const char* CMD_DETACH = "detach"; +const char* CMD_LIBINFO = "libinfo"; +const char* CMD_PEEK = "peek"; +const char* CMD_POKE = "poke"; +const char* CMD_THREADLIST = "threadlist"; +const char* CMD_DUPHANDLE = "duphandle"; +const char* CMD_CLOSEHANDLE = "closehandle"; +const char* CMD_GETCONTEXT = "getcontext"; +const char* CMD_SETCONTEXT = "setcontext"; +const char* CMD_SELECTORENTRY = "selectorentry"; +const char* CMD_SUSPEND = "suspend"; +const char* CMD_RESUME = "resume"; +const char* CMD_POLLEVENT = "pollevent"; +const char* CMD_CONTINUEEVENT = "continueevent"; +const char* CMD_EXIT = "exit"; + +// Uncomment the #define below to get messages on stderr +// #define DEBUGGING + +void +Dispatcher::dispatch(char* cmd, Handler* handler) { + if (!strncmp(cmd, CMD_ASCII, strlen(CMD_ASCII))) { + handler->ascii(cmd + strlen(CMD_ASCII)); + + } else if (!strncmp(cmd, CMD_UNICODE, strlen(CMD_UNICODE))) { + handler->unicode(cmd + strlen(CMD_UNICODE)); + + } else if (!strncmp(cmd, CMD_PROCLIST, strlen(CMD_PROCLIST))) { + handler->procList(cmd + strlen(CMD_PROCLIST)); + + } else if (!strncmp(cmd, CMD_ATTACH, strlen(CMD_ATTACH))) { + handler->attach(cmd + strlen(CMD_ATTACH)); + + } else if (!strncmp(cmd, CMD_DETACH, strlen(CMD_DETACH))) { + handler->detach(cmd + strlen(CMD_DETACH)); + + } else if (!strncmp(cmd, CMD_LIBINFO, strlen(CMD_LIBINFO))) { + handler->libInfo(cmd + strlen(CMD_LIBINFO)); + + } else if (!strncmp(cmd, CMD_PEEK, strlen(CMD_PEEK))) { + handler->peek(cmd + strlen(CMD_PEEK)); + + } else if (!strncmp(cmd, CMD_POKE, strlen(CMD_POKE))) { + handler->poke(cmd + strlen(CMD_POKE)); + + } else if (!strncmp(cmd, CMD_THREADLIST, strlen(CMD_THREADLIST))) { + handler->threadList(cmd + strlen(CMD_THREADLIST)); + + } else if (!strncmp(cmd, CMD_DUPHANDLE, strlen(CMD_DUPHANDLE))) { + handler->dupHandle(cmd + strlen(CMD_DUPHANDLE)); + + } else if (!strncmp(cmd, CMD_CLOSEHANDLE, strlen(CMD_CLOSEHANDLE))) { + handler->closeHandle(cmd + strlen(CMD_CLOSEHANDLE)); + + } else if (!strncmp(cmd, CMD_GETCONTEXT, strlen(CMD_GETCONTEXT))) { + handler->getContext(cmd + strlen(CMD_GETCONTEXT)); + + } else if (!strncmp(cmd, CMD_SETCONTEXT, strlen(CMD_SETCONTEXT))) { + handler->setContext(cmd + strlen(CMD_SETCONTEXT)); + + } else if (!strncmp(cmd, CMD_SELECTORENTRY, strlen(CMD_SELECTORENTRY))) { + handler->selectorEntry(cmd + strlen(CMD_SELECTORENTRY)); + + } else if (!strncmp(cmd, CMD_SUSPEND, strlen(CMD_SUSPEND))) { + handler->suspend(cmd + strlen(CMD_SUSPEND)); + + } else if (!strncmp(cmd, CMD_RESUME, strlen(CMD_RESUME))) { + handler->resume(cmd + strlen(CMD_RESUME)); + + } else if (!strncmp(cmd, CMD_POLLEVENT, strlen(CMD_POLLEVENT))) { + handler->pollEvent(cmd + strlen(CMD_POLLEVENT)); + + } else if (!strncmp(cmd, CMD_CONTINUEEVENT, strlen(CMD_CONTINUEEVENT))) { + handler->continueEvent(cmd + strlen(CMD_CONTINUEEVENT)); + + } else if (!strcmp(cmd, CMD_EXIT)) { + handler->exit(cmd + strlen(CMD_EXIT)); + } + +#ifdef DEBUGGING + else fprintf(stderr, "Ignoring illegal command \"%s\"\n", cmd); +#endif +}