FileDocCategorySizeDatePackage
MessageConnection.javaAPI DocphoneME MR2 API (J2ME)5425Wed May 02 18:00:32 BST 2007com.sun.tck.wma

MessageConnection.java

/*
 *   
 *
 * Copyright  1990-2007 Sun Microsystems, Inc. All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version
 * 2 only, as published by the Free Software Foundation.
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License version 2 for more details (a copy is
 * included at /legal/license.txt).
 * 
 * You should have received a copy of the GNU General Public License
 * version 2 along with this work; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA
 * 
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
 * Clara, CA 95054 or visit www.sun.com if you need additional
 * information or have any questions.
 */

package com.sun.tck.wma;

import java.io.IOException;

/** 
 * A connection handler for generic message receiving and sending.
 */ 
public interface MessageConnection {

    /**
     * Constant designating a message type for <strong>text</strong>
     * messages, i.e. value = "text".
     * When this constant is used for the <code>newMessage()</code> methods
     * <code>type</code> parameter, the new <code>Message</code> object
     * will implement the <code>TextMessage</code> interface.
     */
    public static final String TEXT_MESSAGE = "text";

    /**
     * Constant designating a message type for <strong>binary</strong>
     * messages, i.e. value = "binary".
     * When this constant is used for the <code>newMessage()</code> methods
     * <code>type</code> parameter, the new <code>Message</code> object
     * will implement the <code>BinaryMessage</code> interface.
     */
    public static final String BINARY_MESSAGE = "binary";

    /**
     * Constant designating a message type for <strong>multipart MIME</strong>
     * messages, i.e. value = "multipart".
     * When this constant is used for the <code>newMessage()</code> methods
     * <code>type</code> parameter, the new <code>Message</code> object
     * will implement the <code>MultipartMessage</code> interface.
     * @since WMA 2.0
     */
    public static final String MULTIPART_MESSAGE = "multipart";

    /**
     * Constructs a new message object of a specified type.
     *
     * @param type the type of message to create.
     * @throws java.lang.IllegalArgumentException if the message
     *         type isn't <code>BINARY_MESSAGE</code> or
     *         <code>TEXT_MESSAGE</code>
     * @return a newly constructed message object of a given type
     */
    public Message newMessage(String type);   

    /** 
     * Constructs a new message object of a specified type
     * initialized with the specified destination address.
     *
     * @param type the type of message to create.
     * @param address the new message's destination address
     * @return a newly constructed message object of a given type
     * @throws java.lang.IllegalArgumentException if the message
     *         type isn't <code>BINARY_MESSAGE</code> or
     *         <code>TEXT_MESSAGE</code>
     * @see #newMessage(String type)
     */
    public Message newMessage(String type, String address);

    /**
     * Sends a message.
     * 
     * @param msg the message to be sent
     * @throws java.io.IOException network failure has occured, or the message
     *          couldn't be sent due to other reasons
     * @throws java.lang.IllegalArgumentException if the message contains
     *         invalid information or is incomplete, or the payload
     *         exceeds the maximal length allowed by the given messaging
     *         protocol.
     * @throws java.io.InterruptedIOException if the connection is closed during
     *         the send operation, or if a timeout occurs while sending
     *         the message
     * @throws java.lang.NullPointerException if <code>msg</code> is null
     * @throws java.lang.SecurityException if the application doesn't
     *         have permission for sending the message
     * @see #receive()
     */
    public void send(Message msg) 
	throws java.io.IOException, java.io.InterruptedIOException;

    /** 
     * Receives a message.
     * 
     * <p>If there are no <code>Message</code>s for this 
     * <code>MessageConnection</code> waiting,
     * this method will block until a message for this <code>Connection</code>
     * is received, or the <code>MessageConnection</code> is closed.
     * </p>
     * @return a received message represented by the <code>Message</code> object
     * @throws java.io.IOException if an error occurs while receiving
     *         a message
     * @throws java.io.InterruptedIOException if the connection is closed during
     *         the receive operation
     * @throws java.lang.SecurityException if the application doesn't
     *         have permission for receiving messages on the given port
     * @see #send(Message)
     */
    public Message receive()
	throws java.io.IOException, java.io.InterruptedIOException;

    /** 
     * Close the connection.
     * @throws java.io.IOException if an I/O error occurs
     */
    public void close()
        throws IOException;
}