66import com .fasterxml .jackson .databind .ObjectReader ;
77import com .taosdata .jdbc .enums .WSFunction ;
88import com .taosdata .jdbc .rs .ConnectionParam ;
9- import com .taosdata .jdbc .utils .JsonUtil ;
10- import com .taosdata .jdbc .utils .StringUtils ;
9+ import com .taosdata .jdbc .utils .*;
1110import com .taosdata .jdbc .ws .FutureResponse ;
1211import com .taosdata .jdbc .ws .InFlightRequest ;
1312import com .taosdata .jdbc .ws .Transport ;
1413import com .taosdata .jdbc .ws .WSConnection ;
1514import com .taosdata .jdbc .ws .entity .*;
1615import org .slf4j .LoggerFactory ;
1716
18- import java .nio .ByteOrder ;
17+ import java .nio .charset . StandardCharsets ;
1918import java .sql .Connection ;
2019import java .sql .Driver ;
2120import java .sql .DriverPropertyInfo ;
2221import java .sql .SQLException ;
2322import java .util .Properties ;
2423
24+ import static com .taosdata .jdbc .TSDBConstants .MIN_SUPPORT_VERSION ;
25+
2526public abstract class AbstractDriver implements Driver {
26- private final org .slf4j .Logger log = LoggerFactory .getLogger (AbstractDriver .class );
27+ private static final org .slf4j .Logger log = LoggerFactory .getLogger (AbstractDriver .class );
2728
2829 protected DriverPropertyInfo [] getPropertyInfo (Properties info ) {
2930 DriverPropertyInfo hostProp = new DriverPropertyInfo (TSDBDriver .PROPERTY_KEY_HOST , info .getProperty (TSDBDriver .PROPERTY_KEY_HOST ));
@@ -54,28 +55,18 @@ protected DriverPropertyInfo[] getPropertyInfo(Properties info) {
5455 propertyInfo [4 ] = passwordProp ;
5556 return propertyInfo ;
5657 }
57-
58- protected Properties parseURL (String url , Properties defaults ) {
59- return StringUtils .parseUrl (url , defaults );
60- }
61-
62-
63-
6458 protected Connection getWSConnection (String url , ConnectionParam param , Properties props ) throws SQLException {
6559 if (log .isDebugEnabled ()){
6660 log .debug ("getWSConnection, url = {}" , StringUtils .getBasicUrl (url ));
6761 try {
68- ObjectMapper objectMapper = new ObjectMapper ();
62+ ObjectMapper objectMapper = JsonUtil . getObjectMapper ();
6963 log .debug ("getWSConnection, ConnectionParam = {}" , objectMapper .writeValueAsString (param ));
7064 } catch (JsonProcessingException e ) {
7165 log .error ("Error serializing ConnectionParam" , e );
7266 }
7367 }
74-
7568 InFlightRequest inFlightRequest = new InFlightRequest (param .getRequestTimeout (), param .getMaxRequest ());
76- Transport transport = new Transport (WSFunction .WS , param , inFlightRequest );
77-
78- transport .setTextMessageHandler (message -> {
69+ param .setTextMessageHandler (message -> {
7970 try {
8071 log .trace ("received message: {}" , message );
8172 JsonNode jsonObject = JsonUtil .getObjectReader ().readTree (message );
@@ -90,17 +81,20 @@ protected Connection getWSConnection(String url, ConnectionParam param, Properti
9081 log .error ("Error processing message" , e );
9182 }
9283 });
93- transport .setBinaryMessageHandler (byteBuffer -> {
94- byteBuffer .order (ByteOrder .LITTLE_ENDIAN );
95- byteBuffer .position (26 );
96- long id = byteBuffer .getLong ();
97- byteBuffer .position (8 );
84+
85+ param .setBinaryMessageHandler (byteBuf -> {
86+ byteBuf .readerIndex (26 );
87+ long id = byteBuf .readLongLE ();
88+ byteBuf .readerIndex (8 );
89+
9890 FutureResponse remove = inFlightRequest .remove (Action .FETCH_BLOCK_NEW .getAction (), id );
9991 if (null != remove ) {
100- FetchBlockNewResp fetchBlockResp = new FetchBlockNewResp (byteBuffer );
92+ Utils .retainByteBuf (byteBuf );
93+ FetchBlockNewResp fetchBlockResp = new FetchBlockNewResp (byteBuf );
10194 remove .getFuture ().complete (fetchBlockResp );
10295 }
10396 });
97+ Transport transport = new Transport (WSFunction .WS , param , inFlightRequest );
10498
10599 transport .checkConnection (param .getConnectTimeout ());
106100
@@ -112,7 +106,8 @@ protected Connection getWSConnection(String url, ConnectionParam param, Properti
112106 throw new SQLException ("(0x" + Integer .toHexString (auth .getCode ()) + "):" + "auth failure:" + auth .getMessage ());
113107 }
114108
115- TaosGlobalConfig .setCharset (props .getProperty (TSDBDriver .PROPERTY_KEY_CHARSET ));
109+ VersionUtil .checkVersion (auth .getVersion (), transport );
110+ TaosGlobalConfig .setCharset (StandardCharsets .UTF_8 .name ());
116111 return new WSConnection (url , props , transport , param );
117112 }
118113
0 commit comments