package kr.gmtc.comp.dev.config;

import java.nio.charset.Charset;
import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

import javax.annotation.PostConstruct;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class ServiceConfig {
    @Value("${root}")
	private String root;

	// @Value("${tcpip.client.send}")
	// private String clientSendCharsetStr;
	// @Value("${tcpip.client.receive}")
	// private String clientReceiveCharsetStr;
	// @Value("${tcpip.client.checksum}")
	// private boolean clientReceiveChecksum;

	// @Value("${tcpip.server.send}")
	// private String serverSendCharsetStr;
	// @Value("${tcpip.server.receive}")
	// private String serverReceiveCharsetStr;
	// @Value("${tcpip.server.checksum}")
	// private boolean serverReceiveChecksum;
	
	private Charset clientReceiveCharset;
	private Charset serverReceiveCharset;
	private Charset clientSendCharset;
	private Charset serverSendCharset;
	
	@PostConstruct
	private void initialize() {
		// clientSendCharset = Charset.forName(clientReceiveCharsetStr);
		// serverSendCharset = Charset.forName(serverReceiveCharsetStr);
		// clientReceiveCharset = Charset.forName(clientReceiveCharsetStr);
		// serverReceiveCharset = Charset.forName(serverReceiveCharsetStr);
	}

	/** @return 프로그램 설치 경로 */
	public String getRoot() {
		return root;
	}
	/** @return 클라이언트 포트 송신 인코드 캐릭터셋 */
	public Charset getClientSendCharset() {
		return clientSendCharset;
	}
	/** @return 클라이언트 포트 수신 디코드 캐릭터셋 */
	public Charset getClientReceiveCharset() {
		return clientReceiveCharset;
	}
	// /** @return 클라이언트 포트 수신 체크섬 검증 여부 */
	// public boolean isClientReceiveChecksum() {
	// 	return clientReceiveChecksum;
	// }
	/** @return 서버 포트 송신 인코드 캐릭터셋 */
	public Charset getServerSendCharset() {
		return serverSendCharset;
	}
	/** @return 서버 포트 수신 디코드 캐릭터셋 */
	public Charset getServerReceiveCharset() {
		return serverReceiveCharset;
	}
	// /** @return 서버 포트 수신 체크섬 검증 여부 */
	// public boolean isServerReceiveChecksum() {
	// 	return serverReceiveChecksum;
	// }
	
	@Bean(name = "packetQ")
	public Queue<String> packetQ(){
		return new LinkedBlockingQueue<String>();
	}
}
