SmackDebugger.java 3.44 KB
Newer Older
Alexander Ivanov's avatar
Alexander Ivanov committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
/**
 * $RCSfile$
 * $Revision$
 * $Date$
 *
 * Copyright 2003-2007 Jive Software.
 *
 * All rights reserved. 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.jivesoftware.smack.debugger;

import java.io.*;

import org.jivesoftware.smack.*;

/**
28
 * Interface that allows for implementing classes to debug XML traffic. That is a GUI window that
Alexander Ivanov's avatar
Alexander Ivanov committed
29
 * displays XML traffic.<p>
30 31
 * <p/>
 * Every implementation of this interface <b>must</b> have a public constructor with the following
Alexander Ivanov's avatar
Alexander Ivanov committed
32
 * arguments: Connection, Writer, Reader.
33
 *
Alexander Ivanov's avatar
Alexander Ivanov committed
34 35 36 37 38
 * @author Gaston Dombiak
 */
public interface SmackDebugger {

    /**
39 40
     * Called when a user has logged in to the server. The user could be an anonymous user, this
     * means that the user would be of the form host/resource instead of the form
Alexander Ivanov's avatar
Alexander Ivanov committed
41
     * user@host/resource.
42
     *
Alexander Ivanov's avatar
Alexander Ivanov committed
43 44 45 46 47 48
     * @param user the user@host/resource that has just logged in
     */
    public abstract void userHasLogged(String user);

    /**
     * Returns the special Reader that wraps the main Reader and logs data to the GUI.
49
     *
Alexander Ivanov's avatar
Alexander Ivanov committed
50 51 52 53 54 55
     * @return the special Reader that wraps the main Reader and logs data to the GUI.
     */
    public abstract Reader getReader();

    /**
     * Returns the special Writer that wraps the main Writer and logs data to the GUI.
56
     *
Alexander Ivanov's avatar
Alexander Ivanov committed
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
     * @return the special Writer that wraps the main Writer and logs data to the GUI.
     */
    public abstract Writer getWriter();

    /**
     * Returns a new special Reader that wraps the new connection Reader. The connection
     * has been secured so the connection is using a new reader and writer. The debugger
     * needs to wrap the new reader and writer to keep being notified of the connection
     * traffic.
     *
     * @return a new special Reader that wraps the new connection Reader.
     */
    public abstract Reader newConnectionReader(Reader reader);

    /**
     * Returns a new special Writer that wraps the new connection Writer. The connection
     * has been secured so the connection is using a new reader and writer. The debugger
     * needs to wrap the new reader and writer to keep being notified of the connection
     * traffic.
     *
     * @return a new special Writer that wraps the new connection Writer.
     */
    public abstract Writer newConnectionWriter(Writer writer);

    /**
82 83
     * Returns the thread that will listen for all incoming packets and write them to the GUI.
     * This is what we call "interpreted" packet data, since it's the packet data as Smack sees
Alexander Ivanov's avatar
Alexander Ivanov committed
84
     * it and not as it's coming in as raw XML.
85 86
     *
     * @return the PacketListener that will listen for all incoming packets and write them to
Alexander Ivanov's avatar
Alexander Ivanov committed
87 88 89 90 91
     * the GUI
     */
    public abstract PacketListener getReaderListener();

    /**
92 93 94
     * Returns the thread that will listen for all outgoing packets and write them to the GUI.
     *
     * @return the PacketListener that will listen for all sent packets and write them to
Alexander Ivanov's avatar
Alexander Ivanov committed
95 96 97 98
     * the GUI
     */
    public abstract PacketListener getWriterListener();
}