/*
 * weinre is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 * 
 * Copyright (c) 2010, 2011 IBM Corporation
 */

package com.phonegap.weinre.server;

/**
 * 
 */
public class ServerConsoleUpdater {

    /**
     * 
     */
    public ServerConsoleUpdater() {
        super();
    }
    
    /**
     * 
     */
    public boolean addServerConsoleMessage(String message, boolean stdout) {
        return false;
    }
    
}
