public void start(StartCallback callback) { try { lock(this) { // // The connection might already be closed if the communicator was destroyed. // if(_state >= StateClosed) { Debug.Assert(_exception != null); throw _exception; } if(!initialize(IceInternal.SocketOperation.None) || !validate(IceInternal.SocketOperation.None)) { _startCallback = callback; return; } // // We start out in holding state. // setState(StateHolding); } } catch(LocalException ex) { exception(ex); callback.connectionStartFailed(this, _exception); return; } callback.connectionStartCompleted(this); }
public void start(StartCallback callback) { try { _m.Lock(); try { // // The connection might already be closed if the communicator was destroyed. // if(_state >= StateClosed) { Debug.Assert(_exception != null); throw _exception; } if(!initialize(IceInternal.SocketOperation.None) || !validate(IceInternal.SocketOperation.None)) { if(callback != null) { _startCallback = callback; return; } // // Wait for the connection to be validated. // while(_state <= StateNotValidated) { _m.Wait(); } if(_state >= StateClosing) { Debug.Assert(_exception != null); throw _exception; } } // // We start out in holding state. // setState(StateHolding); } finally { _m.Unlock(); } } catch(LocalException ex) { exception(ex); if(callback != null) { callback.connectionStartFailed(this, _exception); return; } else { waitUntilFinished(); throw; } } if(callback != null) { callback.connectionStartCompleted(this); } }