📄 netagent.java
字号:
/* Derby - Class org.apache.derby.client.net.NetAgent Copyright (c) 2001, 2005 The Apache Software Foundation or its licensors, where applicable. 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 org.apache.derby.client.net;import org.apache.derby.client.am.Agent;import org.apache.derby.client.am.DisconnectException;import org.apache.derby.client.am.SqlException;import org.apache.derby.client.am.Utils;public class NetAgent extends Agent { //---------------------navigational members----------------------------------- // All these request objects point to the same physical request object. public ConnectionRequestInterface connectionRequest_; public NetConnectionRequest packageRequest_; public StatementRequestInterface statementRequest_; public ResultSetRequestInterface resultSetRequest_; // All these reply objects point to the same physical reply object. public ConnectionReply connectionReply_; public ConnectionReply packageReply_; public StatementReply statementReply_; public ResultSetReply resultSetReply_; //---------------------navigational cheat-links------------------------------- // Cheat-links are for convenience only, and are not part of the conceptual model. // Warning: // Cheat-links should only be defined for invariant state data. // That is, the state data is set by the constructor and never changes. // Alias for (NetConnection) super.connection NetConnection netConnection_; // Alias for (Request) super.*Request, all in one // In the case of the NET implementation, these all point to the same physical request object. protected Request request_; public NetConnectionRequest netConnectionRequest_; public NetPackageRequest netPackageRequest_; public NetStatementRequest netStatementRequest_; public NetResultSetRequest netResultSetRequest_; // Alias for (Reply) super.*Reply, all in one. // In the case of the NET implementation, these all point to the same physical reply object. protected Reply reply_; public NetConnectionReply netConnectionReply_; public NetPackageReply netPackageReply_; public NetStatementReply netStatementReply_; public NetResultSetReply netResultSetReply_; //-----------------------------state------------------------------------------ java.net.Socket socket_; java.io.InputStream rawSocketInputStream_; java.io.OutputStream rawSocketOutputStream_; String server_; int port_; public CcsidManager sourceCcsidManager_; public CcsidManager targetCcsidManager_; public Typdef typdef_; public Typdef targetTypdef_; public Typdef originalTargetTypdef_; // added to support typdef overrides protected int svrcod_; public int orignalTargetSqlam_ = NetConfiguration.MGRLVL_7; public int targetSqlam_ = orignalTargetSqlam_; public SqlException exceptionOpeningSocket_ = null; //---------------------constructors/finalizer--------------------------------- public NetAgent(NetConnection netConnection, org.apache.derby.client.am.LogWriter logWriter) throws SqlException { super(netConnection, logWriter); this.netConnection_ = netConnection; } NetAgent(NetConnection netConnection, org.apache.derby.client.am.LogWriter netLogWriter, int loginTimeout, String server, int port) throws SqlException { super(netConnection, netLogWriter); server_ = server; port_ = port; netConnection_ = netConnection; if (server_ == null) { throw new DisconnectException(this, "Required property \"serverName\" not set"); } try { socket_ = (java.net.Socket) java.security.AccessController.doPrivileged(new OpenSocketAction(server, port)); } catch (java.security.PrivilegedActionException e) { throw new DisconnectException(this, e.getException().getClass().getName() + " : Error opening socket to server " + server + " on port " + port + " with message : " + e.getException().getMessage()); } // Set TCP/IP Socket Properties try { if (exceptionOpeningSocket_ == null) { socket_.setTcpNoDelay(true); // disables nagles algorithm socket_.setKeepAlive(true); // PROTOCOL Manual: TCP/IP connection allocation rule #2 socket_.setSoTimeout(loginTimeout * 1000); } } catch (java.net.SocketException e) { try { socket_.close(); } catch (java.io.IOException doNothing) { } exceptionOpeningSocket_ = new DisconnectException(this, "SocketException '" + e.getMessage() + "'"); } try { if (exceptionOpeningSocket_ == null) { rawSocketOutputStream_ = socket_.getOutputStream(); rawSocketInputStream_ = socket_.getInputStream(); } } catch (java.io.IOException e) { try { socket_.close(); } catch (java.io.IOException doNothing) { } exceptionOpeningSocket_ = new DisconnectException(this, "unable to open stream on socket '"+e.getMessage() + "'"); } sourceCcsidManager_ = new EbcdicCcsidManager(); // delete these targetCcsidManager_ = sourceCcsidManager_; // delete these if (netConnection_.isXAConnection()) { NetXAConnectionReply netXAConnectionReply_ = new NetXAConnectionReply(this, netConnection_.commBufferSize_); netResultSetReply_ = (NetResultSetReply) netXAConnectionReply_; netStatementReply_ = (NetStatementReply) netResultSetReply_; netPackageReply_ = (NetPackageReply) netStatementReply_; netConnectionReply_ = (NetConnectionReply) netPackageReply_; reply_ = (Reply) netConnectionReply_; resultSetReply_ = new ResultSetReply(this, netResultSetReply_, netStatementReply_, netConnectionReply_); statementReply_ = (StatementReply) resultSetReply_; packageReply_ = (ConnectionReply) statementReply_; connectionReply_ = (ConnectionReply) packageReply_; NetXAConnectionRequest netXAConnectionRequest_ = new NetXAConnectionRequest(this, sourceCcsidManager_, netConnection_.commBufferSize_); netResultSetRequest_ = (NetResultSetRequest) netXAConnectionRequest_; netStatementRequest_ = (NetStatementRequest) netResultSetRequest_; netPackageRequest_ = (NetPackageRequest) netStatementRequest_; netConnectionRequest_ = (NetConnectionRequest) netPackageRequest_; request_ = (Request) netConnectionRequest_; resultSetRequest_ = (ResultSetRequestInterface) netResultSetRequest_; statementRequest_ = (StatementRequestInterface) netStatementRequest_; packageRequest_ = (NetConnectionRequest) netPackageRequest_; connectionRequest_ = (ConnectionRequestInterface) netConnectionRequest_; } else { netResultSetReply_ = new NetResultSetReply(this, netConnection_.commBufferSize_); netStatementReply_ = (NetStatementReply) netResultSetReply_; netPackageReply_ = (NetPackageReply) netStatementReply_; netConnectionReply_ = (NetConnectionReply) netPackageReply_; reply_ = (Reply) netConnectionReply_; resultSetReply_ = new ResultSetReply(this, netResultSetReply_, netStatementReply_, netConnectionReply_); statementReply_ = (StatementReply) resultSetReply_; packageReply_ = (ConnectionReply) statementReply_; connectionReply_ = (ConnectionReply) packageReply_; netResultSetRequest_ = new NetResultSetRequest(this, sourceCcsidManager_, netConnection_.commBufferSize_); netStatementRequest_ = (NetStatementRequest) netResultSetRequest_; netPackageRequest_ = (NetPackageRequest) netStatementRequest_; netConnectionRequest_ = (NetConnectionRequest) netPackageRequest_; request_ = (Request) netConnectionRequest_; resultSetRequest_ = (ResultSetRequestInterface) netResultSetRequest_; statementRequest_ = (StatementRequestInterface) netStatementRequest_; packageRequest_ = (NetConnectionRequest) netPackageRequest_; connectionRequest_ = (ConnectionRequestInterface) netConnectionRequest_; } } protected void resetAgent_(org.apache.derby.client.am.LogWriter netLogWriter, //CcsidManager sourceCcsidManager, //CcsidManager targetCcsidManager, int loginTimeout, String server, int port) throws SqlException { // most properties will remain unchanged on connect reset. targetTypdef_ = originalTargetTypdef_; svrcod_ = 0; // Set TCP/IP Socket Properties try { socket_.setSoTimeout(loginTimeout * 1000); } catch (java.net.SocketException e) { try { socket_.close(); } catch (java.io.IOException doNothing) { } throw new SqlException(logWriter_, e, "SocketException '" + e.getMessage() + "'"); } } void setSvrcod(int svrcod) { if (svrcod > svrcod_) { svrcod_ = svrcod; } } void clearSvrcod() { svrcod_ = CodePoint.SVRCOD_INFO; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -