src/share/vm/services/diagnosticFramework.hpp

changeset 3402
4f25538b54c9
parent 3329
3b688d6ff3d0
child 3478
a42c07c38c47
     1.1 --- a/src/share/vm/services/diagnosticFramework.hpp	Thu Jan 05 17:16:13 2012 -0500
     1.2 +++ b/src/share/vm/services/diagnosticFramework.hpp	Mon Jan 09 10:27:24 2012 +0100
     1.3 @@ -241,8 +241,17 @@
     1.4    static int num_arguments() { return 0; }
     1.5    outputStream* output() { return _output; }
     1.6    bool is_heap_allocated()  { return _is_heap_allocated; }
     1.7 -  virtual void print_help(outputStream* out) { };
     1.8 -  virtual void parse(CmdLine* line, char delim, TRAPS) { }
     1.9 +  virtual void print_help(const char* name) {
    1.10 +    output()->print_cr("Syntax: %s", name);
    1.11 +  }
    1.12 +  virtual void parse(CmdLine* line, char delim, TRAPS) {
    1.13 +    DCmdArgIter iter(line->args_addr(), line->args_len(), delim);
    1.14 +    bool has_arg = iter.next(CHECK);
    1.15 +    if (has_arg) {
    1.16 +      THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
    1.17 +                "Unknown argument in diagnostic command");
    1.18 +    }
    1.19 +  }
    1.20    virtual void execute(TRAPS) { }
    1.21    virtual void reset(TRAPS) { }
    1.22    virtual void cleanup() { }
    1.23 @@ -262,6 +271,25 @@
    1.24                                  char delim, TRAPS);
    1.25  };
    1.26  
    1.27 +class DCmdWithParser : public DCmd {
    1.28 +protected:
    1.29 +  DCmdParser _dcmdparser;
    1.30 +public:
    1.31 +  DCmdWithParser (outputStream *output, bool heap=false) : DCmd(output, heap) { }
    1.32 +  static const char* name() { return "No Name";}
    1.33 +  static const char* description() { return "No Help";}
    1.34 +  static const char* disabled_message() { return "Diagnostic command currently disabled"; }
    1.35 +  static const char* impact() { return "Low: No impact"; }
    1.36 +  static int num_arguments() { return 0; }
    1.37 +  virtual void parse(CmdLine *line, char delim, TRAPS);
    1.38 +  virtual void execute(TRAPS) { }
    1.39 +  virtual void reset(TRAPS);
    1.40 +  virtual void cleanup();
    1.41 +  virtual void print_help(const char* name);
    1.42 +  virtual GrowableArray<const char*>* argument_name_array();
    1.43 +  virtual GrowableArray<DCmdArgumentInfo*>* argument_info_array();
    1.44 +};
    1.45 +
    1.46  class DCmdMark : public StackObj {
    1.47    DCmd* _ref;
    1.48  public:

mercurial