FileDocCategorySizeDatePackage
ImpsClientCapability.javaAPI DocAndroid 1.5 API4121Wed May 06 22:42:46 BST 2009com.android.im.imps

ImpsClientCapability.java

/*
 * Copyright (C) 2007 Esmertec AG.
 * Copyright (C) 2007 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.im.imps;

import com.android.im.imps.ImpsConnectionConfig.CirMethod;
import com.android.im.imps.ImpsConnectionConfig.TransportType;

/**
 * The configuration of the capabilities of the client.
 */
final class ImpsClientCapability {

    private ImpsClientCapability() {
    }

    /**
     * Gets the type of the client.
     *
     * @return the type of the client.
     */
    public static String getClientType() {
        return "MOBILE_PHONE";
    }

    /**
     * Get the maximum number of bytes of XML (WBXML, SMS - depending on the
     * actual encoding) primitive that the client-side parser can handle.
     *
     * @return the maximum number of bytes that the parser can handle.
     */
    public static int getParserSize() {
        // TODO: we do not really have a limit for this for now. Just return
        // a number big enough.
        return 256 * 1024;
    }

    /**
     * Get the maximum number of bytes of the message content that the client
     * can handle.
     *
     * @return the maximum number of bytes of the message content that the
     * client can handle.
     */
    public static int getAcceptedContentLength() {
        return 256 * 1024;
    }

    /**
     * Gets the maximum number of open transactions from both client and
     * server side at any given time.
     *
     * @return the maximum number of open transactions.
     */
    public static int getMultiTrans() {
        return 1;
    }

    /**
     * Gets the maximum number of primitives that the client can handle within
     * the same transport message at any given time.
     *
     * @return the maximum number of primitives within the same transport
     *         message.
     */
    public static int getMultiTransPerMessage() {
        return 1;
    }

    /**
     * Gets the initial IM delivery method that the recipient client prefers in
     * the set of "PUSH" and "Notify/Get".
     *
     * @return "P" if prefers "PUSH", or "N" if prefers "Notify/Get".
     */
    public static String getInitialDeliveryMethod() {
        return "P";
    }

    /**
     * Get supported CIR methods in preferred order.
     *
     * @return a array of supported CIR methods.
     */
    public static CirMethod[] getSupportedCirMethods() {
        return new CirMethod[] {
                CirMethod.STCP,
                CirMethod.SSMS,
                CirMethod.SHTTP,
        };
    }

    /**
     * Get supported bearers (HTTP(S), WSP, SMS).
     *
     * @return the array of supported bearers.
     */
    public static TransportType[] getSupportedBearers() {
        return new TransportType[] {
                TransportType.HTTP
        };
    }

    /**
     * Get supported Presence attributes
     *
     * @return the array of supported Presence attributes
     */
    public static String[] getSupportedPresenceAttribs() {
        return new String[] {
                ImpsTags.OnlineStatus,
                ImpsTags.ClientInfo,
                ImpsTags.UserAvailability,
                ImpsTags.StatusText,
                ImpsTags.StatusContent,
        };
    };

    /**
     * Gets the basic presence attributes.
     *
     * @return an array of the basic Presence attributes.
     */
    public static String[] getBasicPresenceAttributes() {
        return new String[] {
                ImpsTags.OnlineStatus,
                ImpsTags.ClientInfo,
                ImpsTags.UserAvailability,
        };
    }

}