package com.zsoft.SignalA.Transport;
import java.util.concurrent.atomic.AtomicBoolean;
import com.zsoft.SignalA.ConnectionBase;
import com.zsoft.SignalA.ConnectionState;
import com.zsoft.SignalA.SendCallback;
public abstract class StateBase {
protected ConnectionBase mConnection;
protected AtomicBoolean mIsRunning = new AtomicBoolean(false);
public StateBase(ConnectionBase connection)
{
mConnection = connection;
}
public abstract ConnectionState getState();
public abstract void Start();
public abstract void Stop();
public boolean getIsRunning() { return mIsRunning.get(); }
public void Run()
{
if (mIsRunning.compareAndSet(false, true)) {
try
{
OnRun();
}
finally
{
mIsRunning.set(false);
}
}
}
protected abstract void OnRun();
public abstract void Send(CharSequence text, SendCallback callback);
}