⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsstrace.java

📁 derby database source code.good for you.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*   Derby - Class org.apache.derby.impl.drda.DssTrace   Copyright 2001, 2004 The Apache Software Foundation or its licensors, as applicable.   Licensed under the Apache License, Version 2.0 (the "License");   you may not use this file except in compliance with the License.   You may obtain a copy of the License at      http://www.apache.org/licenses/LICENSE-2.0   Unless required by applicable law or agreed to in writing, software   distributed under the License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   See the License for the specific language governing permissions and   limitations under the License. */package org.apache.derby.impl.drda;// Generic process and error tracing encapsulation.// This class also traces a DRDA communications buffer.// The value of the hex bytes are traced along with// the ascii and ebcdic translations.public class DssTrace{  // This class was implemented using character arrays to translate bytes  // into ascii and ebcdic.  The goal was to be able to quickly index into the  // arrays to find the characters.  Char arrays instead of strings were used as  // much as possible in an attempt to help speed up performance.  private static final String LIST_SEPARATOR = " # ";  // trace representation for a java null.  private static final String NULL_VALUE = "null";  // An array of characters used to translate bytes to ascii.  // The position in the array corresponds to the hex value of the  // character  private static final char asciiChar [] = {    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //0    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //1    ' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/', //2    '0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?',  //3    '@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O',  //4    'P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_', //5    '`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',  //6    'p','q','r','s','t','u','v','w','x','y','z','{','|','}','~','.',  //7    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //8    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //9    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //A    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //B    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //C    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //D    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //E    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'   //F  };  // This mapping table associates a codepoint to a String describing the codepoint.  // This is needed because the trace prints the  // first codepoint in send and receive buffers.  // This could be final but there is no need to create the mapping  // if tracing isn't used.  So... this array will only be created when  // the com buffer trace is started.  Note this ref is not protected  // by final and care must be taken if it's value needs to change.  private static CodePointNameTable codePointNameTable = null;  // This column position header is used to mark offsets into the trace.  private static final String colPosHeader =  "       0 1 2 3 4 5 6 7   8 9 A B C D E F   0123456789ABCDEF  0123456789ABCDEF";  // An array of characters used to translate bytes to ebcdic.  // The position in the array corresponds to the hex value of the  // character.  private static final char ebcdicChar[] = {    // 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //0    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //1    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //2    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //3    ' ','.','.','.','.','.','.','.','.','.','.','.','<','(','+','|',  //4    '&','.','.','.','.','.','.','.','.','.','!','$','*',')',';','.',  //5    '-','/','.','.','.','.','.','.','.','.','|',',','%','_','>','?',  //6    '.','.','.','.','.','.','.','.','.','`',':','#','@','\'','=','"', //7    '.','a','b','c','d','e','f','g','h','i','.','.','.','.','.','.',  //8    '.','j','k','l','m','n','o','p','q','r','.','.','.','.','.','.',  //9    '.','~','s','t','u','v','w','x','y','z','.','.','.','.','.','.',  //A    '.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.',  //B    '{','A','B','C','D','E','F','G','H','I','.','.','.','.','.','.',  //C    '}','J','K','L','M','N','O','P','Q','R','.','.','.','.','.','.',  //D    '\\','.','S','T','U','V','W','X','Y','Z','.','.','.','.','.','.', //E    '0','1','2','3','4','5','6','7','8','9','.','.','.','.','.','.'   //F  };  // An array of characters representing hex numbers.  private static final char hexDigit [] = {    '0','1','2','3','4','5','6','7',    '8','9','A','B','C','D','E','F'  };  // A PrintWriter is used in printing the trace.  private java.io.PrintWriter comBufferWriter = null;  // The receive header comes befor bytes which would be read from  // a Stream.  private static final String receiveHeader =  "       RECEIVE BUFFER:                     (ASCII)           (EBCDIC)";  // The send header comes before bytes which would be written to  // a Stream.  private static final String sendHeader =  "       SEND BUFFER:                        (ASCII)           (EBCDIC)";  // The space character is defined for convience.  private static final char spaceChar = ' ';  // This boolean indicates if the trace is on.  // It has been declared private now but may be made public at  // a later time.  private boolean comBufferTraceOn = false;  // The comBufferSync is an object used for serialization.  // This separate object is used because this trace code may  // get eventually placed into another class which performs  // method entry and exit tracing.  Since each trace may be writing  // to different logs, separate objects will be used to perform the  // synchronization.  private Boolean comBufferSync = new Boolean (true);  // The zero character is defined for convinience.  private static final char zeroChar = '0';  // The recevie constant is used to indicate that the bytes were read to a Stream.  // It indicates to this class that a receive header should be used.  protected static final int TYPE_TRACE_RECEIVE = 2;  // The send constant is used to indicate that the bytes were written to  // a Stream.  It indicates to this class that a send header should be used.  protected static final int TYPE_TRACE_SEND = 1;  // Query if trace is on.  // This is currently needed since the comBufferTrcOn flag is private.  protected boolean isComBufferTraceOn()  {    // The trace flag indicates if tracing is on.    return comBufferTraceOn;  }  // Start the communications buffer trace.  // The name of the file to place the trace is passed to this method.  // After calling this method, calls to isComBufferTraceOn() will return true.  protected void startComBufferTrace (String fileName)  {    synchronized (comBufferSync) {      try {        // Only start the trace if it is off.        if (comBufferTraceOn == false) {          // The writer will be buffered for effeciency.          comBufferWriter = new java.io.PrintWriter (new java.io.BufferedWriter (new java.io.FileWriter (fileName), 4096));          // Turn on the trace flag.          comBufferTraceOn = true;          // initialize the codepoint name table if it is null.          // this is done here so that the CodePointName objects          // aren't created if the trace isn't used (save some memory).          // this process should only be done once          // since after the table is created the ref will          // no longer be null.          if (DssTrace.codePointNameTable == null) {            codePointNameTable = new CodePointNameTable();          }        }      }      catch (java.io.IOException e) {        // The IOException is currently ignored.  Handling should be added.      }    }  }  // Stop the communications buffer trace.  // The trace file is flushed and closed.  After calling this method,  // calls to isComBufferTraceOn () will return false.  protected void stopComBufferTrace ()  {    synchronized (comBufferSync) {      // Only stop the trace if it is actually on.      if (comBufferTraceOn == true) {        // Turn of the trace flag.        comBufferTraceOn = false;        // Flush and close the writer used for tracing.        comBufferWriter.flush();        comBufferWriter.close();      }    }  }  // Write the communication buffer data to the trace.  // The data is passed in via a byte array.  The start and length of the data is given.  // The type is needed to indicate if the data is part of the send or receive buffer.  // The class name, method name, and trcPt number are also written to the trace.  // Not much checking is performed on the parameters.  This is done to help performance.  protected void writeComBufferData (byte[] buff,                                         int offset,                                         int len,                                         int type,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -