hotspot/agent/src/os/win32/Dispatcher.cpp
author never
Mon, 04 May 2009 22:06:47 -0700
changeset 2744 57f0579fbe09
parent 1 489c9b5090e2
child 5547 f4b087cbb361
permissions -rw-r--r--
6837224: libsaproc.so on linux needs version of 6799141 Reviewed-by: kvn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
489c9b5090e2 Initial load
duke
parents:
diff changeset
     1
/*
489c9b5090e2 Initial load
duke
parents:
diff changeset
     2
 * Copyright 2000-2001 Sun Microsystems, Inc.  All Rights Reserved.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     4
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
489c9b5090e2 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
489c9b5090e2 Initial load
duke
parents:
diff changeset
     7
 * published by the Free Software Foundation.
489c9b5090e2 Initial load
duke
parents:
diff changeset
     8
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
489c9b5090e2 Initial load
duke
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
489c9b5090e2 Initial load
duke
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
489c9b5090e2 Initial load
duke
parents:
diff changeset
    13
 * accompanied this code).
489c9b5090e2 Initial load
duke
parents:
diff changeset
    14
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
489c9b5090e2 Initial load
duke
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    18
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    19
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
489c9b5090e2 Initial load
duke
parents:
diff changeset
    20
 * CA 95054 USA or visit www.sun.com if you need additional information or
489c9b5090e2 Initial load
duke
parents:
diff changeset
    21
 * have any questions.
489c9b5090e2 Initial load
duke
parents:
diff changeset
    22
 *
489c9b5090e2 Initial load
duke
parents:
diff changeset
    23
 */
489c9b5090e2 Initial load
duke
parents:
diff changeset
    24
489c9b5090e2 Initial load
duke
parents:
diff changeset
    25
#include <stdio.h>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    26
#include <string.h>
489c9b5090e2 Initial load
duke
parents:
diff changeset
    27
#include "dispatcher.hpp"
489c9b5090e2 Initial load
duke
parents:
diff changeset
    28
489c9b5090e2 Initial load
duke
parents:
diff changeset
    29
const char* CMD_ASCII         = "ascii";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    30
const char* CMD_UNICODE       = "unicode";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    31
const char* CMD_PROCLIST      = "proclist";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    32
const char* CMD_ATTACH        = "attach";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    33
const char* CMD_DETACH        = "detach";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    34
const char* CMD_LIBINFO       = "libinfo";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    35
const char* CMD_PEEK          = "peek";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    36
const char* CMD_POKE          = "poke";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    37
const char* CMD_THREADLIST    = "threadlist";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    38
const char* CMD_DUPHANDLE     = "duphandle";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    39
const char* CMD_CLOSEHANDLE   = "closehandle";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    40
const char* CMD_GETCONTEXT    = "getcontext";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    41
const char* CMD_SETCONTEXT    = "setcontext";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    42
const char* CMD_SELECTORENTRY = "selectorentry";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    43
const char* CMD_SUSPEND       = "suspend";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    44
const char* CMD_RESUME        = "resume";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    45
const char* CMD_POLLEVENT     = "pollevent";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    46
const char* CMD_CONTINUEEVENT = "continueevent";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    47
const char* CMD_EXIT          = "exit";
489c9b5090e2 Initial load
duke
parents:
diff changeset
    48
489c9b5090e2 Initial load
duke
parents:
diff changeset
    49
// Uncomment the #define below to get messages on stderr
489c9b5090e2 Initial load
duke
parents:
diff changeset
    50
// #define DEBUGGING
489c9b5090e2 Initial load
duke
parents:
diff changeset
    51
489c9b5090e2 Initial load
duke
parents:
diff changeset
    52
void
489c9b5090e2 Initial load
duke
parents:
diff changeset
    53
Dispatcher::dispatch(char* cmd, Handler* handler) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    54
  if (!strncmp(cmd, CMD_ASCII, strlen(CMD_ASCII))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    55
    handler->ascii(cmd + strlen(CMD_ASCII));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    56
489c9b5090e2 Initial load
duke
parents:
diff changeset
    57
  } else if (!strncmp(cmd, CMD_UNICODE, strlen(CMD_UNICODE))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    58
    handler->unicode(cmd + strlen(CMD_UNICODE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    59
489c9b5090e2 Initial load
duke
parents:
diff changeset
    60
  } else if (!strncmp(cmd, CMD_PROCLIST, strlen(CMD_PROCLIST))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    61
    handler->procList(cmd + strlen(CMD_PROCLIST));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    62
489c9b5090e2 Initial load
duke
parents:
diff changeset
    63
  } else if (!strncmp(cmd, CMD_ATTACH, strlen(CMD_ATTACH))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    64
    handler->attach(cmd + strlen(CMD_ATTACH));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    65
489c9b5090e2 Initial load
duke
parents:
diff changeset
    66
  } else if (!strncmp(cmd, CMD_DETACH, strlen(CMD_DETACH))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    67
    handler->detach(cmd + strlen(CMD_DETACH));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    68
489c9b5090e2 Initial load
duke
parents:
diff changeset
    69
  } else if (!strncmp(cmd, CMD_LIBINFO, strlen(CMD_LIBINFO))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    70
    handler->libInfo(cmd + strlen(CMD_LIBINFO));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    71
489c9b5090e2 Initial load
duke
parents:
diff changeset
    72
  } else if (!strncmp(cmd, CMD_PEEK, strlen(CMD_PEEK))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    73
    handler->peek(cmd + strlen(CMD_PEEK));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    74
489c9b5090e2 Initial load
duke
parents:
diff changeset
    75
  } else if (!strncmp(cmd, CMD_POKE, strlen(CMD_POKE))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    76
    handler->poke(cmd + strlen(CMD_POKE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    77
489c9b5090e2 Initial load
duke
parents:
diff changeset
    78
  } else if (!strncmp(cmd, CMD_THREADLIST, strlen(CMD_THREADLIST))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    79
    handler->threadList(cmd + strlen(CMD_THREADLIST));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    80
489c9b5090e2 Initial load
duke
parents:
diff changeset
    81
  } else if (!strncmp(cmd, CMD_DUPHANDLE, strlen(CMD_DUPHANDLE))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    82
    handler->dupHandle(cmd + strlen(CMD_DUPHANDLE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    83
489c9b5090e2 Initial load
duke
parents:
diff changeset
    84
  } else if (!strncmp(cmd, CMD_CLOSEHANDLE, strlen(CMD_CLOSEHANDLE))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    85
    handler->closeHandle(cmd + strlen(CMD_CLOSEHANDLE));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    86
489c9b5090e2 Initial load
duke
parents:
diff changeset
    87
  } else if (!strncmp(cmd, CMD_GETCONTEXT, strlen(CMD_GETCONTEXT))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    88
    handler->getContext(cmd + strlen(CMD_GETCONTEXT));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    89
489c9b5090e2 Initial load
duke
parents:
diff changeset
    90
  } else if (!strncmp(cmd, CMD_SETCONTEXT, strlen(CMD_SETCONTEXT))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    91
    handler->setContext(cmd + strlen(CMD_SETCONTEXT));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    92
489c9b5090e2 Initial load
duke
parents:
diff changeset
    93
  } else if (!strncmp(cmd, CMD_SELECTORENTRY, strlen(CMD_SELECTORENTRY))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    94
    handler->selectorEntry(cmd + strlen(CMD_SELECTORENTRY));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    95
489c9b5090e2 Initial load
duke
parents:
diff changeset
    96
  } else if (!strncmp(cmd, CMD_SUSPEND, strlen(CMD_SUSPEND))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
    97
    handler->suspend(cmd + strlen(CMD_SUSPEND));
489c9b5090e2 Initial load
duke
parents:
diff changeset
    98
489c9b5090e2 Initial load
duke
parents:
diff changeset
    99
  } else if (!strncmp(cmd, CMD_RESUME, strlen(CMD_RESUME))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   100
    handler->resume(cmd + strlen(CMD_RESUME));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   101
489c9b5090e2 Initial load
duke
parents:
diff changeset
   102
  } else if (!strncmp(cmd, CMD_POLLEVENT, strlen(CMD_POLLEVENT))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   103
    handler->pollEvent(cmd + strlen(CMD_POLLEVENT));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   104
489c9b5090e2 Initial load
duke
parents:
diff changeset
   105
  } else if (!strncmp(cmd, CMD_CONTINUEEVENT, strlen(CMD_CONTINUEEVENT))) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   106
    handler->continueEvent(cmd + strlen(CMD_CONTINUEEVENT));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   107
489c9b5090e2 Initial load
duke
parents:
diff changeset
   108
  } else if (!strcmp(cmd, CMD_EXIT)) {
489c9b5090e2 Initial load
duke
parents:
diff changeset
   109
    handler->exit(cmd + strlen(CMD_EXIT));
489c9b5090e2 Initial load
duke
parents:
diff changeset
   110
  }
489c9b5090e2 Initial load
duke
parents:
diff changeset
   111
489c9b5090e2 Initial load
duke
parents:
diff changeset
   112
#ifdef DEBUGGING
489c9b5090e2 Initial load
duke
parents:
diff changeset
   113
  else fprintf(stderr, "Ignoring illegal command \"%s\"\n", cmd);
489c9b5090e2 Initial load
duke
parents:
diff changeset
   114
#endif
489c9b5090e2 Initial load
duke
parents:
diff changeset
   115
}