/*
* Copyright 2014 NAVER Corp.
*
* 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.navercorp.pinpoint.rpc.client;
import com.navercorp.pinpoint.rpc.DefaultFuture;
import com.navercorp.pinpoint.rpc.Future;
import com.navercorp.pinpoint.rpc.PinpointSocketException;
import com.navercorp.pinpoint.rpc.ResponseMessage;
import com.navercorp.pinpoint.rpc.client.ConnectFuture.Result;
import com.navercorp.pinpoint.rpc.cluster.ClusterOption;
import com.navercorp.pinpoint.rpc.common.SocketStateCode;
import com.navercorp.pinpoint.rpc.stream.*;
import java.net.SocketAddress;
/**
* @author emeroad
* @author netspider
*/
public class ReconnectStateClientHandler implements PinpointClientHandler {
private static final ConnectFuture failedConnectFuture = new ConnectFuture();
static {
failedConnectFuture.setResult(Result.FAIL);
}
private volatile SocketStateCode state = SocketStateCode.BEING_CONNECT;
@Override
public void setConnectSocketAddress(SocketAddress connectSocketAddress) {
}
@Override
public void initReconnect() {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public ConnectFuture getConnectFuture() {
return failedConnectFuture;
}
@Override
public void setPinpointClient(PinpointClient pinpointClient) {
}
@Override
public void sendSync(byte[] bytes) {
throw newReconnectException();
}
@Override
public Future sendAsync(byte[] bytes) {
return reconnectFailureFuture();
}
private DefaultFuture<ResponseMessage> reconnectFailureFuture() {
DefaultFuture<ResponseMessage> reconnect = new DefaultFuture<ResponseMessage>();
reconnect.setFailure(newReconnectException());
return reconnect;
}
@Override
public void close() {
this.state = SocketStateCode.CLOSED_BY_CLIENT;
}
@Override
public void send(byte[] bytes) {
}
private PinpointSocketException newReconnectException() {
return new PinpointSocketException("reconnecting...");
}
@Override
public Future<ResponseMessage> request(byte[] bytes) {
return reconnectFailureFuture();
}
@Override
public void response(int requestId, byte[] payload) {
}
@Override
public ClientStreamChannelContext openStream(byte[] payload, ClientStreamChannelMessageListener clientStreamChannelMessageListener) {
throw new UnsupportedOperationException();
}
@Override
public ClientStreamChannelContext openStream(byte[] payload, ClientStreamChannelMessageListener messageListener, StreamChannelStateChangeEventHandler<ClientStreamChannel> stateChangeListener) {
throw new UnsupportedOperationException();
}
@Override
public StreamChannelContext findStreamChannel(int streamChannelId) {
throw new UnsupportedOperationException();
}
@Override
public void sendPing() {
}
@Override
public SocketStateCode getCurrentStateCode() {
return state;
}
@Override
public boolean isConnected() {
return false;
}
@Override
public boolean isSupportServerMode() {
return false;
}
@Override
public SocketAddress getRemoteAddress() {
return null;
}
@Override
public ClusterOption getLocalClusterOption() {
return null;
}
@Override
public ClusterOption getRemoteClusterOption() {
return null;
}
}