⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asynctransaction.java

📁 Android平台上即时通讯聊天工具源代码。 支持手机聊天。
💻 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.engine.ImErrorInfo;abstract class AsyncTransaction extends ImpsTransaction {    private final AsyncCompletion mCompletionCallback;    private boolean mCompletionNotified;    protected final ImpsTransactionManager mTransManager;    AsyncTransaction(ImpsTransactionManager manager) {        this(manager, null);    }    AsyncTransaction(ImpsTransactionManager manager, AsyncCompletion completion) {        mTransManager = manager;        mCompletionCallback = completion;        manager.beginClientTransaction(this);    }    /**     * Sends a request within this transaction.     *     * @param request the request to send.     */    public void sendRequest(Primitive request) {        sendPrimitive(request);    }    /**     * Notify that an error occurs in the transaction.     *     * @param error the error     */    final void notifyError(ImErrorInfo error) {        notifyErrorResponse(new ImpsErrorInfo(error.getCode(), error.getDescription(), null));    }    /**     * Notify that a response from the server has arrived.     *     * @param response the response.     */    final void notifyResponse(Primitive response) {        response.setTransaction(this);        ImpsErrorInfo error = ImpsUtils.checkResultError(response);        if (error != null) {            notifyErrorResponse(error);        } else {            notifySuccessResponse(response);        }    }    protected void notifyErrorResponse(ImpsErrorInfo error) {        onResponseError(error);        mTransManager.endClientTransaction(this);        notifyAsyncCompletionError(error);    }    protected void notifySuccessResponse(Primitive response) {        onResponseOk(response);        mTransManager.endClientTransaction(this);        notifyAsyncCompletionSuccess();    }    public abstract void onResponseError(ImpsErrorInfo error);    public abstract void onResponseOk(Primitive response);    protected void notifyAsyncCompletionError(ImErrorInfo error) {        if (!mCompletionNotified) {            mCompletionNotified = true;            if (mCompletionCallback != null)                mCompletionCallback.onError(error);        }    }    protected void notifyAsyncCompletionSuccess() {        if (!mCompletionNotified) {            mCompletionNotified = true;            if (mCompletionCallback != null)                mCompletionCallback.onComplete();        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -