Altibase.jdbc.driver.cm

## Class CmChannel

- java.lang.Object
- - Altibase.jdbc.driver.cm.CmBufferWriter
  - - Altibase.jdbc.driver.cm.CmChannel

    public class CmChannel
    extends CmBufferWriter

### Field Summary

Fields
`static int` `CHAR_VARCHAR_COLUMN_SIZE`
`static int` `CM_BLOCK_SIZE`
`static int` `CM_DEFAULT_RCVBUF_SIZE`
`static int` `CM_DEFAULT_SNDBUF_SIZE`
`static int` `CM_PACKET_HEADER_SIZE`

### Fields inherited from class Altibase.jdbc.driver.cm.CmBufferWriter

`mBuffer, mCharVarcharColumnBuffer, mDBEncoder, mNCharEncoder, mNLiteralEncoder`

### Constructor Summary

Constructors
Constructor and Description
`CmChannel()`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `checkDecodingBuffer(int aLobDataLength)` CLOB의 경우 LOB_CACHE_THRESHOLD가 CM_BLOCK_SIZE를 초과한 경우 디코딩을 위해 mCharBuf를 재할당한다.
`void` `checkWritable(int aNeedToWrite)` Buffer 에 쓸 데이터 공간이 충분한지 여부를 확인하여, 충분하지 않으면 필요한 공간을 만드는 함수 CmChannel 과 ListBufferHandle 에서 각자에 맞게 구현한다.
`void` `close()`
`CmProtocolContext` `getAsyncContext()` 비동기적으로 fetch 프로토콜을 송신한 protocol context 를 얻는다.
`int` `getByteLengthPerChar()`
`java.nio.charset.Charset` `getCharset()`
`java.lang.String[]` `getCipherSuitList()` 현재 SSLSocket에서 가능한 CipherSuites 리스트를 돌려준다.
`ColumnFactory` `getColumnFactory()`
`CmConnType` `getConnType()`
`int` `getLobCacheThreshold()`
`AltibaseMessageCallback` `getMessageCallback()` Message Callback 객체를 반환한다.
`java.nio.charset.Charset` `getNCharset()`
`int` `getResponseTimeout()`
`int` `getSocketFD()` Socket 의 file descriptor 를 반환한다.
`int` `getSockRcvBufSize()` Socket receive buffer 크기를 반환한다.
`ListBufferHandle` `getTempListBufferHandle()`
`boolean` `isAsyncSent()` 비동기적으로 fetch 프로토콜을 송신한 protocol context 를 얻는다.
`boolean` `isClosed()`
`void` `open(java.lang.String aAddr, java.lang.String aBindAddr, int aPort, int aLoginTimeout)` 물리 연결을 맺고, CmChannel을 사용하기 위해 준비를 한다.
`void` `quietClose()` 채널을 닫는다.
`byte` `readByte()`
`void` `readBytes(byte[] aDest)`
`void` `readBytes(byte[] aDest, int aLength)`
`void` `readBytes(byte[] aDest, int aOffset, int aLength)`
`void` `readBytes(java.nio.ByteBuffer aBuf)`
`java.lang.String` `readCharVarcharColumnString(int aColumnSize, int aSkipSize, boolean aIsNationalCharset)` Char, Varchar 컬럼 데이터를 읽은 후 Charset에 맞게 decode한 문자열을 리턴한다.
`double` `readDouble()`
`float` `readFloat()`
`int` `readInt()`
`long` `readLong()`
`byte` `readOp()`
`short` `readShort()`
`java.lang.String` `readString(byte[] aBytesValue)`
`java.lang.String` `readString(int aLength)`
`short` `readUnsignedByte()`
`java.math.BigInteger` `readUnsignedLong()`
`int` `readUnsignedShort()`
`void` `receive()`
`void` `send()`
`void` `sendAndReceive()`
`void` `setAsyncContext(CmProtocolContext aContext)` 비동기적으로 fetch 프로토콜을 송신한 protocol context 를 저장한다.
`void` `setCharset(java.nio.charset.Charset aCharset, java.nio.charset.Charset aNCharset)`
`void` `setConnType(java.lang.String aConnType)`
`void` `setLobCacheThreshold(int aLobCacheThreshold)`
`void` `setMessageCallback(AltibaseMessageCallback aCallback)` AltibaseConnection으로 부터 Message Callback 객체를 주입받는다.
`void` `setPreferredIPv6()`
`void` `setProps(AltibaseProperties aProps)` PROJ-2681 접속 타입에 따른 프로퍼티 값을 읽기 위해 설정한다.
`void` `setRemoveRedundantMode(boolean aMode, AltibaseProperties aProps)`
`void` `setResponseTimeout(int aResponseTimeout)`
`void` `setSocket(CmSocket aSocket)`
`void` `setSockRcvBufBlockRatio(int aSockRcvBufBlockRatio)` Socket receive buffer 크기를 CM block 단위로 설정한다.
`void` `setSockRcvBufSize(int aSockRcvBufSize)` Socket receive buffer 크기를 설정한다.
`void` `skip(int aSkipLen)` 데이타를 aSkipLen 만큼 건너 뛴다.
`void` `writeBytes(byte[] aValue, int aOffset, int aLength)`
`void` `writeBytes(java.nio.ByteBuffer aValue)` ByteBuffer 객체를 Buffer 에 삽입하는 함수 CmChannel 과 ListBufferHandle 에서 각자에 맞게 구현한다.
`void` `writeOp(byte aOpCode)`

### Methods inherited from class Altibase.jdbc.driver.cm.CmBufferWriter

`encodeString, prepareToWriteString, writeByte, writeBytes, writeDouble, writeFloat, writeInt, writeLong, writePreparedString, writeShort, writeUnsignedInt`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### CM_BLOCK_SIZE

    public static final int CM_BLOCK_SIZE

See Also:
  Constant Field Values

#### CM_PACKET_HEADER_SIZE

    public static final int CM_PACKET_HEADER_SIZE

See Also:
  Constant Field Values

#### CM_DEFAULT_SNDBUF_SIZE

    public static final int CM_DEFAULT_SNDBUF_SIZE

See Also:
  Constant Field Values

#### CM_DEFAULT_RCVBUF_SIZE

    public static final int CM_DEFAULT_RCVBUF_SIZE

See Also:
  Constant Field Values

#### CHAR_VARCHAR_COLUMN_SIZE

    public static final int CHAR_VARCHAR_COLUMN_SIZE

See Also:
  Constant Field Values

### Constructor Detail

#### CmChannel

    public CmChannel()

### Method Detail

#### setPreferredIPv6

    public void setPreferredIPv6()

#### open

    public void open(java.lang.String aAddr,
                     java.lang.String aBindAddr,
                     int aPort,
                     int aLoginTimeout)
              throws java.sql.SQLException

물리 연결을 맺고, CmChannel을 사용하기 위해 준비를 한다.

Parameters:
  `aAddr` - 접속할 서버의 IP 주소 또는 Hostname
  `aBindAddr` - 소켓에 바인드 할 IP 주소. null이면 바인드 하지 않음.
  `aPort` - 접속할 서버의 Port
  `aLoginTimeout` - Socket.connect()에 사용할 타임아웃 값 (초 단위)
Throws:
  `java.sql.SQLException` - 이미 연결되어있거나 소켓 생성, 초기화 또는 연결에 실패한 경우

#### isClosed

    public boolean isClosed()

#### close

    public void close()
               throws java.io.IOException

Throws:
  `java.io.IOException`

#### quietClose

    public void quietClose()

채널을 닫는다. 이 때, 예외가 발생하더라도 조용히 넘어간다.

#### setCharset

    public void setCharset(java.nio.charset.Charset aCharset,
                           java.nio.charset.Charset aNCharset)

Overrides:
  `setCharset` in class `CmBufferWriter`

#### getCharset

    public java.nio.charset.Charset getCharset()

#### getNCharset

    public java.nio.charset.Charset getNCharset()

#### getByteLengthPerChar

    public int getByteLengthPerChar()

#### writeOp

    public void writeOp(byte aOpCode)
                 throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### writeBytes

    public void writeBytes(byte[] aValue,
                           int aOffset,
                           int aLength)
                    throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### writeBytes

    public void writeBytes(java.nio.ByteBuffer aValue)
                    throws java.sql.SQLException

Description copied from class: `CmBufferWriter`
ByteBuffer 객체를 Buffer 에 삽입하는 함수 CmChannel 과 ListBufferHandle 에서 각자에 맞게 구현한다.

Specified by:
  `writeBytes` in class `CmBufferWriter`
Parameters:
  `aValue` - Buffer 에 저장할 ByteBuffer 객체
Throws:
  `java.sql.SQLException` - 데이타 전송에 실패했을 경우

#### sendAndReceive

    public void sendAndReceive()
                        throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### send

    public void send()
              throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### receive

    public void receive()
                 throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### checkWritable

    public void checkWritable(int aNeedToWrite)
                       throws java.sql.SQLException

Description copied from class: `CmBufferWriter`
Buffer 에 쓸 데이터 공간이 충분한지 여부를 확인하여, 충분하지 않으면 필요한 공간을 만드는 함수 CmChannel 과 ListBufferHandle 에서 각자에 맞게 구현한다.

Specified by:
  `checkWritable` in class `CmBufferWriter`
Parameters:
  `aNeedToWrite` - 데이타를 쓰기 위해 필요한 bytes 숫자
Throws:
  `java.sql.SQLException` - 데이타 전송에 실패했을 경우

#### skip

    public void skip(int aSkipLen)

데이타를 aSkipLen 만큼 건너 뛴다.

만약, aSkipLen이 0이면 조용히 무시한다.

Parameters:
  `aSkipLen` - 건너 뛸 byte 수
Throws:
  `java.lang.InternalError` - aSkipLen이 0보다 작을 경우

#### readOp

    public byte readOp()
                throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readByte

    public byte readByte()
                  throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readUnsignedByte

    public short readUnsignedByte()
                           throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readShort

    public short readShort()
                    throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readUnsignedShort

    public int readUnsignedShort()
                          throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readInt

    public int readInt()
                throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readUnsignedLong

    public java.math.BigInteger readUnsignedLong()
                                          throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readLong

    public long readLong()
                  throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readFloat

    public float readFloat()
                    throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readDouble

    public double readDouble()
                      throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readBytes

    public void readBytes(byte[] aDest)
                   throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readBytes

    public void readBytes(byte[] aDest,
                          int aOffset,
                          int aLength)
                   throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readBytes

    public void readBytes(byte[] aDest,
                          int aLength)
                   throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readBytes

    public void readBytes(java.nio.ByteBuffer aBuf)
                   throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readString

    public java.lang.String readString(int aLength)
                                throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### readString

    public java.lang.String readString(byte[] aBytesValue)

#### readCharVarcharColumnString

    public java.lang.String readCharVarcharColumnString(int aColumnSize,
                                                        int aSkipSize,
                                                        boolean aIsNationalCharset)
                                                 throws java.sql.SQLException

Char, Varchar 컬럼 데이터를 읽은 후 Charset에 맞게 decode한 문자열을 리턴한다.

Parameters:
  `aColumnSize` - 컬럼데이터 사이즈
  `aSkipSize` - 스킵사이즈
  `aIsNationalCharset` - 다국어캐릭터셋인지 여부
Returns:
  디코딩된 char, varchar컬럼 스트링
Throws:
  `java.sql.SQLException` - 정상적으로 컬럼데이터를 받아오지 못한 경우

#### getLobCacheThreshold

    public int getLobCacheThreshold()

#### setLobCacheThreshold

    public void setLobCacheThreshold(int aLobCacheThreshold)

#### setRemoveRedundantMode

    public void setRemoveRedundantMode(boolean aMode,
                                       AltibaseProperties aProps)

#### getColumnFactory

    public ColumnFactory getColumnFactory()

#### getConnType

    public CmConnType getConnType()

#### setConnType

    public void setConnType(java.lang.String aConnType)
                     throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### setProps

    public void setProps(AltibaseProperties aProps)

PROJ-2681 접속 타입에 따른 프로퍼티 값을 읽기 위해 설정한다. (SSL : PROJ-2474 SSL 관련 인증서 정보를 읽어와 mSslProps 객체에 저장한다.)

Parameters:
  `aProps` - AltibaseProperties 객체

#### getCipherSuitList

    public java.lang.String[] getCipherSuitList()

현재 SSLSocket에서 가능한 CipherSuites 리스트를 돌려준다.

Returns:
  CipherSuite 리스트

#### getSockRcvBufSize

    public int getSockRcvBufSize()

Socket receive buffer 크기를 반환한다.

#### setSockRcvBufSize

    public void setSockRcvBufSize(int aSockRcvBufSize)
                           throws java.io.IOException

Socket receive buffer 크기를 설정한다.

Throws:
  `java.io.IOException`

#### setSockRcvBufBlockRatio

    public void setSockRcvBufBlockRatio(int aSockRcvBufBlockRatio)
                                 throws java.io.IOException

Socket receive buffer 크기를 CM block 단위로 설정한다.

Throws:
  `java.io.IOException`

#### setAsyncContext

    public void setAsyncContext(CmProtocolContext aContext)

비동기적으로 fetch 프로토콜을 송신한 protocol context 를 저장한다.

#### isAsyncSent

    public boolean isAsyncSent()

비동기적으로 fetch 프로토콜을 송신한 protocol context 를 얻는다.

#### getAsyncContext

    public CmProtocolContext getAsyncContext()

비동기적으로 fetch 프로토콜을 송신한 protocol context 를 얻는다.

#### getSocketFD

    public int getSocketFD()
                    throws java.sql.SQLException

Socket 의 file descriptor 를 반환한다.

Throws:
  `java.sql.SQLException`

#### setMessageCallback

    public void setMessageCallback(AltibaseMessageCallback aCallback)

AltibaseConnection으로 부터 Message Callback 객체를 주입받는다.

Parameters:
  `aCallback` - 콜백객체

#### getMessageCallback

    public AltibaseMessageCallback getMessageCallback()

Message Callback 객체를 반환한다.

#### getTempListBufferHandle

    public ListBufferHandle getTempListBufferHandle()

#### checkDecodingBuffer

    public void checkDecodingBuffer(int aLobDataLength)
                             throws java.sql.SQLException

CLOB의 경우 LOB_CACHE_THRESHOLD가 CM_BLOCK_SIZE를 초과한 경우 디코딩을 위해 mCharBuf를 재할당한다.

Parameters:
  `aLobDataLength` - LOB데이터길이
Throws:
  `java.sql.SQLException`

#### setResponseTimeout

    public void setResponseTimeout(int aResponseTimeout)
                            throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### setSocket

    public void setSocket(CmSocket aSocket)

#### getResponseTimeout

    public int getResponseTimeout()