summaryrefslogtreecommitdiffstats
path: root/src/com/android/email/mail/transport/DiscourseLogger.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/email/mail/transport/DiscourseLogger.java')
-rw-r--r--src/com/android/email/mail/transport/DiscourseLogger.java119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/com/android/email/mail/transport/DiscourseLogger.java b/src/com/android/email/mail/transport/DiscourseLogger.java
deleted file mode 100644
index 67f4e115b..000000000
--- a/src/com/android/email/mail/transport/DiscourseLogger.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * 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 com.android.email.mail.transport;
-
-import com.android.emailcommon.Logging;
-import com.android.mail.utils.LogUtils;
-
-import java.util.ArrayList;
-
-/**
- * A class to keep last N of lines sent to the server and responses received from the server.
- * They are sent to logcat when {@link #logLastDiscourse} is called.
- *
- * <p>This class is used to log the recent network activities when a response parser crashes.
- */
-public class DiscourseLogger {
- private final int mBufferSize;
- private String[] mBuffer;
- private int mPos;
- private final StringBuilder mReceivingLine = new StringBuilder(100);
-
- public DiscourseLogger(int bufferSize) {
- mBufferSize = bufferSize;
- initBuffer();
- }
-
- private void initBuffer() {
- mBuffer = new String[mBufferSize];
- }
-
- /** Add a single line to {@link #mBuffer}. */
- private void addLine(String s) {
- mBuffer[mPos] = s;
- mPos++;
- if (mPos >= mBufferSize) {
- mPos = 0;
- }
- }
-
- private void addReceivingLineToBuffer() {
- if (mReceivingLine.length() > 0) {
- addLine(mReceivingLine.toString());
- mReceivingLine.delete(0, Integer.MAX_VALUE);
- }
- }
-
- /**
- * Store a single byte received from the server in {@link #mReceivingLine}. When LF is
- * received, the content of {@link #mReceivingLine} is added to {@link #mBuffer}.
- */
- public void addReceivedByte(int b) {
- if (0x20 <= b && b <= 0x7e) { // Append only printable ASCII chars.
- mReceivingLine.append((char) b);
- } else if (b == '\n') { // LF
- addReceivingLineToBuffer();
- } else if (b == '\r') { // CR
- } else {
- final String hex = "00" + Integer.toHexString(b);
- mReceivingLine.append("\\x" + hex.substring(hex.length() - 2, hex.length()));
- }
- }
-
- /** Add a line sent to the server to {@link #mBuffer}. */
- public void addSentCommand(String command) {
- addLine(command);
- }
-
- /** @return the contents of {@link #mBuffer} as a String array. */
- /* package for testing */ String[] getLines() {
- addReceivingLineToBuffer();
-
- ArrayList<String> list = new ArrayList<String>();
-
- final int start = mPos;
- int pos = mPos;
- do {
- String s = mBuffer[pos];
- if (s != null) {
- list.add(s);
- }
- pos = (pos + 1) % mBufferSize;
- } while (pos != start);
-
- String[] ret = new String[list.size()];
- list.toArray(ret);
- return ret;
- }
-
- /**
- * Log the contents of the {@link mBuffer}, and clears it out. (So it's okay to call this
- * method successively more than once. There will be no duplicate log.)
- */
- public void logLastDiscourse() {
- String[] lines = getLines();
- if (lines.length == 0) {
- return;
- }
-
- LogUtils.w(Logging.LOG_TAG, "Last network activities:");
- for (String r : getLines()) {
- LogUtils.w(Logging.LOG_TAG, "%s", r);
- }
- initBuffer();
- }
-}