logger.debug(" FE=> CancelRequest(pid=" + cancelPid + ",ckey=" + cancelKey + ")"); cancelStream = new PGStream(pgStream.getHost(), pgStream.getPort()); cancelStream.SendInteger4(16); cancelStream.SendInteger2(1234); cancelStream.SendInteger2(5678); cancelStream.SendInteger4(cancelPid); cancelStream.SendInteger4(cancelKey); cancelStream.flush(); cancelStream.ReceiveEOF(); cancelStream.close(); cancelStream = null; cancelStream.close();
Socket newConnection = factory.createSocket(stream.getSocket(), stream.getHost(), stream.getPort(), true); stream.changeSocket(newConnection);
void writeV2FastpathValue(int index, PGStream pgStream) throws IOException { --index; if (paramValues[index] instanceof StreamWrapper) { StreamWrapper wrapper = (StreamWrapper)paramValues[index]; pgStream.SendInteger4(wrapper.getLength()); copyStream(pgStream, wrapper); } else if (paramValues[index] instanceof byte[]) { byte[] data = (byte[])paramValues[index]; pgStream.SendInteger4(data.length); pgStream.Send(data); } else if (paramValues[index] instanceof String) { byte[] data = pgStream.getEncoding().encode((String)paramValues[index]); pgStream.SendInteger4(data.length); pgStream.Send(data); } else { throw new IllegalArgumentException("don't know how to stream parameter " + index); } }
private void sendSSPIResponse(byte[] outToken) throws IOException { /* * The sspiContext now contains a token we can send to the server to start the handshake. Send a * 'password' message containing the required data; the server knows we're doing SSPI * negotiation and will deal with it appropriately. */ pgStream.sendChar('p'); pgStream.sendInteger4(4 + outToken.length); pgStream.send(outToken); pgStream.flush(); }
private void sendAuthenticationMessage(int bodyLength, BodySender bodySender) throws IOException { pgStream.sendChar('p'); pgStream.sendInteger4(Integer.BYTES + bodyLength); bodySender.sendBody(pgStream); pgStream.flush(); }
int l_msgSize = ReceiveInteger4(); int i; int l_nf = ReceiveInteger2(); byte[][] answer = new byte[l_nf][]; for (i = 0 ; i < l_nf ; ++i) int l_size = ReceiveInteger4(); if (l_size != -1) { try { answer[i] = new byte[l_size]; Receive(answer[i], 0, l_size); } catch(OutOfMemoryError oome) { oom = oome; Skip(l_size);
pgStream.SendInteger4(8); pgStream.SendInteger2(1234); pgStream.SendInteger2(5679); pgStream.flush(); int beresp = pgStream.ReceiveChar(); switch (beresp) pgStream.close(); return new PGStream(pgStream.getHost(), pgStream.getPort());
logger.debug(" FE=> Password(GSS Authentication Token)"); pgStream.SendChar('p'); pgStream.SendInteger4(4 + outToken.length); pgStream.Send(outToken); pgStream.flush(); int response = pgStream.ReceiveChar(); int l_elen = pgStream.ReceiveInteger4(); ServerErrorMessage l_errorMsg = new ServerErrorMessage(pgStream.ReceiveString(l_elen - 4), logger.getLogLevel()); logger.debug(" <=BE AuthenticationGSSContinue"); int len = pgStream.ReceiveInteger4(); int type = pgStream.ReceiveInteger4(); inToken = pgStream.Receive(len - 8); } else {
new PGStream(pgStream.getSocketFactory(), pgStream.getHostSpec(), cancelSignalTimeout); if (cancelSignalTimeout > 0) { cancelStream.getSocket().setSoTimeout(cancelSignalTimeout); cancelStream.sendInteger4(16); cancelStream.sendInteger2(1234); cancelStream.sendInteger2(5678); cancelStream.sendInteger4(cancelPid); cancelStream.sendInteger4(cancelKey); cancelStream.flush(); cancelStream.receiveEOF(); } catch (IOException e) { if (cancelStream != null) { try { cancelStream.close(); } catch (IOException e) {
int len; while( !endReceiving && (block || pgStream.hasMessagePending()) ) { int c = pgStream.PeekChar(); if (c == 'C') // CommandComplete int c = pgStream.ReceiveChar(); switch(c) { logger.debug(" <=BE CopyData"); len = pgStream.ReceiveInteger4() - 4; byte[] buf = pgStream.Receive(len); if(op == null) { error = new PSQLException(GT.tr("Got CopyData without an active copy operation"), PSQLState.OBJECT_NOT_IN_STATE); logger.debug(" <=BE CopyDone"); len = pgStream.ReceiveInteger4() - 4; if(len > 0) pgStream.Receive(len); // not in specification; should never appear
public void close() { if (closed) return ; try { if (logger.logDebug()) logger.debug(" FE=> Terminate"); pgStream.SendChar('X'); pgStream.SendInteger4(4); pgStream.flush(); pgStream.close(); } catch (IOException ioe) { // Forget it. if (logger.logDebug()) logger.debug("Discarding IOException on close:", ioe); } closed = true; }
pgStream.sendInteger4(8); pgStream.sendInteger2(1234); pgStream.sendInteger2(5679); pgStream.flush(); int beresp = pgStream.receiveChar(); switch (beresp) { case 'E': pgStream.close(); return new PGStream(pgStream.getSocketFactory(), pgStream.getHostSpec(), connectTimeout);
public void close() { if (closed) return ; try { if (logger.logDebug()) logger.debug(" FE=> Terminate"); pgStream.SendChar('X'); pgStream.flush(); pgStream.close(); } catch (IOException ioe) { // Forget it. if (logger.logDebug()) logger.debug("Discarding IOException on close:", ioe); } closed = true; }
int beresp = pgStream.ReceiveChar(); switch (beresp) if (pgStream.ReceiveInteger4() != 5) throw new IOException("unexpected length of ReadyForQuery packet"); char tStatus = (char)pgStream.ReceiveChar(); if (logger.logDebug()) logger.debug(" <=BE ReadyForQuery(" + tStatus + ")"); int l_msgLen = pgStream.ReceiveInteger4(); if (l_msgLen != 12) throw new PSQLException(GT.tr("Protocol error. Session setup failed."), PSQLState.PROTOCOL_VIOLATION); int pid = pgStream.ReceiveInteger4(); int ckey = pgStream.ReceiveInteger4(); int l_elen = pgStream.ReceiveInteger4(); ServerErrorMessage l_errorMsg = new ServerErrorMessage(pgStream.ReceiveString(l_elen - 4), logger.getLogLevel()); int l_nlen = pgStream.ReceiveInteger4(); ServerErrorMessage l_warnMsg = new ServerErrorMessage(pgStream.ReceiveString(l_nlen - 4), logger.getLogLevel()); int l_len = pgStream.ReceiveInteger4(); String name = pgStream.ReceiveString(); String value = pgStream.ReceiveString(); pgStream.setEncoding(Encoding.getDatabaseEncoding("UTF8"));
private void sendSync() throws IOException { if (logger.logDebug()) logger.debug(" FE=> Sync"); pgStream.SendChar('S'); // Sync pgStream.SendInteger4(4); // Length pgStream.flush(); }
public synchronized void processNotifies() throws SQLException { // Asynchronous notifies only arrive when we are not in a transaction if (protoConnection.getTransactionState() != ProtocolConnection.TRANSACTION_IDLE) return; try { while (pgStream.hasMessagePending()) { int c = pgStream.ReceiveChar(); switch (c) { case 'A': // Asynchronous Notify receiveAsyncNotify(); break; case 'E': // Error Message throw receiveErrorMessage(); // break; case 'N': // Error Notification protoConnection.addWarning(receiveNotification()); break; default: throw new PSQLException(GT.tr("Unknown Response Type {0}.", new Character((char) c)), PSQLState.CONNECTION_FAILURE); } } } catch (IOException ioe) { throw new PSQLException(GT.tr("An I/O error occured while sending to the backend."), PSQLState.CONNECTION_FAILURE, ioe); } }
private void sendStartupPacket(PGStream pgStream, String user, String database, Logger logger) throws IOException { // 4: total size including self // 2: protocol major // 2: protocol minor // 64: database name // 32: user name // 64: options // 64: unused // 64: tty if (logger.logDebug()) logger.debug(" FE=> StartupPacket(user=" + user + ",database=" + database + ")"); pgStream.SendInteger4(4 + 4 + 64 + 32 + 64 + 64 + 64); pgStream.SendInteger2(2); // protocol major pgStream.SendInteger2(0); // protocol minor pgStream.Send(database.getBytes("UTF-8"), 64); pgStream.Send(user.getBytes("UTF-8"), 32); pgStream.Send(new byte[64]); // options pgStream.Send(new byte[64]); // unused pgStream.Send(new byte[64]); // tty pgStream.flush(); }
/** * Constructor: Connect to the PostgreSQL back end and return * a stream connection. * * @param host the hostname to connect to * @param port the port number that the postmaster is sitting on * @exception IOException if an IOException occurs below it. */ public PGStream(String host, int port) throws IOException { this.host = host; this.port = port; changeSocket(new Socket(host, port)); setEncoding(Encoding.getJVMEncoding("US-ASCII")); _int2buf = new byte[2]; _int4buf = new byte[4]; }
private String receiveCommandStatus() throws IOException { //TODO: better handle the msg len int l_len = pgStream.ReceiveInteger4(); //read l_len -5 bytes (-4 for l_len and -1 for trailing \0) String status = pgStream.ReceiveString(l_len - 5); //now read and discard the trailing \0 pgStream.Receive(1); if (logger.logDebug()) logger.debug(" <=BE CommandStatus(" + status + ")"); return status; }