DisconnectingState.smali

.class public Lcn/rongcloud/rtc/engine/DisconnectingState;
.super Lcn/rongcloud/rtc/engine/AbstractBaseState;
.source "DisconnectingState.java"


# static fields
.field private static final TAG:Ljava/lang/String; = "DisconnectingState"


# direct methods
.method public constructor <init>(Lcn/rongcloud/rtc/engine/RTCEngineImpl;)V
    .registers 2

    .line 1
    invoke-direct {p0, p1}, Lcn/rongcloud/rtc/engine/AbstractBaseState;-><init>(Lcn/rongcloud/rtc/engine/RTCEngineImpl;)V

    return-void
.end method

.method private closePeerConnection()V
    .registers 2

    .line 1
    iget-object v0, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v0, v0, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mRTCCore:Lcn/rongcloud/rtc/webrtc/IWebRTCCore;

    if-eqz v0, :cond_9

    .line 2
    invoke-interface {v0}, Lcn/rongcloud/rtc/webrtc/IWebRTCCore;->closePeerConnection()V

    :cond_9
    return-void
.end method

.method private unInit()V
    .registers 6

    const-string v0, "DisconnectingState"

    const-string v1, "unInit --> enter"

    .line 1
    invoke-static {v0, v1}, Lcn/rongcloud/rtc/utils/FinLog;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 2
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v1, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mUnInitState:Lcn/rongcloud/rtc/engine/UnInitState;

    const/4 v2, 0x0

    .line 3
    iput-boolean v2, v1, Lcn/rongcloud/rtc/engine/UnInitState;->mCallInited:Z

    .line 4
    iget-object v2, v1, Lcn/rongcloud/rtc/engine/UnInitState;->mMessageRouter:Lcn/rongcloud/rtc/RongRTCMessageRouter;

    const/4 v3, 0x0

    if-eqz v2, :cond_18

    .line 5
    invoke-static {v2}, Lio/rong/imlib/ModuleManager;->removeMessageRouter(Lio/rong/imlib/ModuleManager$MessageRouter;)V

    .line 6
    iput-object v3, v1, Lcn/rongcloud/rtc/engine/UnInitState;->mMessageRouter:Lcn/rongcloud/rtc/RongRTCMessageRouter;

    .line 7
    :cond_18
    iget-object v2, v1, Lcn/rongcloud/rtc/engine/UnInitState;->networkConnectChangedReceiver:Lcn/rongcloud/rtc/monitor/NetworkConnectChangedReceiver;

    .line 8
    iget-object v4, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v4, v4, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mContext:Landroid/content/Context;

    if-eqz v4, :cond_2c

    if-eqz v2, :cond_2c

    .line 9
    :try_start_22
    invoke-virtual {v4, v2}, Landroid/content/Context;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
    :try_end_25
    .catch Ljava/lang/Exception; {:try_start_22 .. :try_end_25} :catch_26

    goto :goto_2a

    :catch_26
    move-exception v2

    .line 10
    invoke-virtual {v2}, Ljava/lang/Exception;->printStackTrace()V

    .line 11
    :goto_2a
    iput-object v3, v1, Lcn/rongcloud/rtc/engine/UnInitState;->networkConnectChangedReceiver:Lcn/rongcloud/rtc/monitor/NetworkConnectChangedReceiver;

    .line 12
    :cond_2c
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v1, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mDefaultAudioStream:Lcn/rongcloud/rtc/center/stream/RCMicOutputStreamImpl;

    if-eqz v1, :cond_39

    .line 13
    invoke-virtual {v1}, Lcn/rongcloud/rtc/center/stream/RCMicOutputStreamImpl;->release()V

    .line 14
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iput-object v3, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mDefaultAudioStream:Lcn/rongcloud/rtc/center/stream/RCMicOutputStreamImpl;

    .line 15
    :cond_39
    invoke-static {}, Lcn/rongcloud/rtc/core/audio/AudioMixer;->getInstance()Lcn/rongcloud/rtc/core/audio/AudioMixer;

    move-result-object v1

    invoke-virtual {v1, v3}, Lcn/rongcloud/rtc/core/audio/AudioMixer;->setDefaultAudioStream(Lcn/rongcloud/rtc/center/stream/RCMicOutputStreamImpl;)V

    .line 16
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v1, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mDefaultVideoStream:Lcn/rongcloud/rtc/center/stream/RCCameraOutputStreamImpl;

    if-eqz v1, :cond_4d

    .line 17
    invoke-virtual {v1}, Lcn/rongcloud/rtc/center/stream/RCCameraOutputStreamImpl;->release()V

    .line 18
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iput-object v3, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mDefaultVideoStream:Lcn/rongcloud/rtc/center/stream/RCCameraOutputStreamImpl;

    .line 19
    :cond_4d
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v1, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mRTCCore:Lcn/rongcloud/rtc/webrtc/IWebRTCCore;

    if-eqz v1, :cond_5a

    .line 20
    invoke-interface {v1}, Lcn/rongcloud/rtc/webrtc/IWebRTCCore;->release()V

    .line 21
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iput-object v3, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mRTCCore:Lcn/rongcloud/rtc/webrtc/IWebRTCCore;

    .line 22
    :cond_5a
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object v1, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mEglBase:Lcn/rongcloud/rtc/core/EglBase;

    if-eqz v1, :cond_6c

    .line 23
    invoke-virtual {v1}, Lcn/rongcloud/rtc/core/EglBase;->detachCurrent()V

    .line 24
    invoke-virtual {v1}, Lcn/rongcloud/rtc/core/EglBase;->release()V

    .line 25
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iput-object v3, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mEglBase:Lcn/rongcloud/rtc/core/EglBase;

    .line 26
    iput-object v3, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mEglContext:Lcn/rongcloud/rtc/core/EglBase$Context;

    .line 27
    :cond_6c
    iget-object v1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iput-object v3, v1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mContext:Landroid/content/Context;

    const-string v1, "unInit --> over"

    .line 28
    invoke-static {v0, v1}, Lcn/rongcloud/rtc/utils/FinLog;->d(Ljava/lang/String;Ljava/lang/String;)V

    return-void
.end method


# virtual methods
.method public enter()V
    .registers 1

    .line 1
    invoke-super {p0}, Lcn/rongcloud/rtc/stateMachine/State;->enter()V

    .line 2
    invoke-direct {p0}, Lcn/rongcloud/rtc/engine/DisconnectingState;->closePeerConnection()V

    return-void
.end method

.method public getName()Ljava/lang/String;
    .registers 2

    const-string v0, "DisconnectingState"

    return-object v0
.end method

.method protected handleMessage(Landroid/os/Message;Lcn/rongcloud/rtc/engine/MsgObjectWraper;)Z
    .registers 4

    .line 1
    iget p2, p1, Landroid/os/Message;->what:I

    const/16 v0, 0x3f2

    if-eq p2, v0, :cond_22

    const/16 v0, 0x2710

    if-eq p2, v0, :cond_17

    .line 2
    iget-object p2, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    invoke-virtual {p2, p1}, Lcn/rongcloud/rtc/engine/AbstractRTCEngineImpl;->deferMessage(Landroid/os/Message;)V

    .line 3
    iget-object p1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object p2, p1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mIdleState:Lcn/rongcloud/rtc/engine/IdleState;

    invoke-virtual {p1, p2}, Lcn/rongcloud/rtc/engine/AbstractRTCEngineImpl;->transitionTo(Lcn/rongcloud/rtc/engine/AbstractBaseState;)V

    goto :goto_27

    .line 4
    :cond_17
    invoke-direct {p0}, Lcn/rongcloud/rtc/engine/DisconnectingState;->unInit()V

    .line 5
    iget-object p1, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    iget-object p2, p1, Lcn/rongcloud/rtc/engine/RTCEngineImpl;->mUnInitState:Lcn/rongcloud/rtc/engine/UnInitState;

    invoke-virtual {p1, p2}, Lcn/rongcloud/rtc/engine/AbstractRTCEngineImpl;->transitionTo(Lcn/rongcloud/rtc/engine/AbstractBaseState;)V

    goto :goto_27

    .line 6
    :cond_22
    iget-object p2, p0, Lcn/rongcloud/rtc/engine/AbstractBaseState;->mEngine:Lcn/rongcloud/rtc/engine/RTCEngineImpl;

    invoke-virtual {p2, p1}, Lcn/rongcloud/rtc/engine/AbstractRTCEngineImpl;->deferMessage(Landroid/os/Message;)V

    :goto_27
    const/4 p1, 0x1

    return p1
.end method