当前位置: 首页>>代码示例>>Java>>正文


Java SocketState.UPGRADED属性代码示例

本文整理汇总了Java中org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState.UPGRADED属性的典型用法代码示例。如果您正苦于以下问题:Java SocketState.UPGRADED属性的具体用法?Java SocketState.UPGRADED怎么用?Java SocketState.UPGRADED使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState的用法示例。


在下文中一共展示了SocketState.UPGRADED属性的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: onData

@Override
public final SocketState onData() throws IOException {
    // Must be start the start of a message (which may consist of multiple
    // frames)
    WsInputStream wsIs = new WsInputStream(processor, getWsOutbound());

    try {
        WsFrame frame = wsIs.nextFrame(false);

        while (frame != null) {
            // TODO User defined extensions may define values for rsv
            if (frame.getRsv() > 0) {
                closeOutboundConnection(
                        Constants.STATUS_PROTOCOL_ERROR, null);
                return SocketState.CLOSED;
            }

            byte opCode = frame.getOpCode();

            if (opCode == Constants.OPCODE_BINARY) {
                doOnBinaryData(wsIs);
            } else if (opCode == Constants.OPCODE_TEXT) {
                InputStreamReader r =
                        new InputStreamReader(wsIs, new Utf8Decoder());
                doOnTextData(r);
            } else if (opCode == Constants.OPCODE_CLOSE){
                closeOutboundConnection(frame);
                return SocketState.CLOSED;
            } else if (opCode == Constants.OPCODE_PING) {
                getWsOutbound().pong(frame.getPayLoad());
            } else if (opCode == Constants.OPCODE_PONG) {
                doOnPong(frame.getPayLoad());
            } else {
                // Unknown OpCode
                closeOutboundConnection(
                        Constants.STATUS_PROTOCOL_ERROR, null);
                return SocketState.CLOSED;
            }
            frame = wsIs.nextFrame(false);
        }
    } catch (MalformedInputException mie) {
        // Invalid UTF-8
        closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
        return SocketState.CLOSED;
    } catch (UnmappableCharacterException uce) {
        // Invalid UTF-8
        closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
        return SocketState.CLOSED;
    } catch (IOException ioe) {
        // Given something must have gone to reach this point, this
        // might not work but try it anyway.
        closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null);
        return SocketState.CLOSED;
    }
    return SocketState.UPGRADED;
}
 
开发者ID:liaokailin,项目名称:tomcat7,代码行数:56,代码来源:StreamInbound.java

示例2: run

@Override
public void run() {
    boolean launch = false;
    synchronized (socket) {
        try {
            SocketState state = SocketState.OPEN;

            try {
                // SSL handshake
                serverSocketFactory.handshake(socket.getSocket());
            } catch (Throwable t) {
                ExceptionUtils.handleThrowable(t);
                if (log.isDebugEnabled()) {
                    log.debug(sm.getString("endpoint.err.handshake"), t);
                }
                // Tell to close the socket
                state = SocketState.CLOSED;
            }

            if ((state != SocketState.CLOSED)) {
                if (status == null) {
                    state = handler.process(socket, SocketStatus.OPEN_READ);
                } else {
                    state = handler.process(socket,status);
                }
            }
            if (state == SocketState.CLOSED) {
                // Close socket
                if (log.isTraceEnabled()) {
                    log.trace("Closing socket:"+socket);
                }
                countDownConnection();
                try {
                    socket.getSocket().close();
                } catch (IOException e) {
                    // Ignore
                }
            } else if (state == SocketState.OPEN ||
                    state == SocketState.UPGRADING ||
                    state == SocketState.UPGRADING_TOMCAT  ||
                    state == SocketState.UPGRADED){
                socket.setKeptAlive(true);
                socket.access();
                launch = true;
            } else if (state == SocketState.LONG) {
                socket.access();
                waitingRequests.add(socket);
            }
        } finally {
            if (launch) {
                try {
                    getExecutor().execute(new SocketProcessor(socket, SocketStatus.OPEN_READ));
                } catch (RejectedExecutionException x) {
                    log.warn("Socket reprocessing request was rejected for:"+socket,x);
                    try {
                        //unable to handle connection at this time
                        handler.process(socket, SocketStatus.DISCONNECT);
                    } finally {
                        countDownConnection();
                    }


                } catch (NullPointerException npe) {
                    if (running) {
                        log.error(sm.getString("endpoint.launch.fail"),
                                npe);
                    }
                }
            }
        }
    }
    socket = null;
    // Finish up this request
}
 
开发者ID:liaokailin,项目名称:tomcat7,代码行数:74,代码来源:JIoEndpoint.java

示例3: run

@Override
public void run() {
    boolean launch = false;
    //TODO 为什么要锁住socket 什么情况下会出现竞争socket的情况
    synchronized (socket) {
        try {
            SocketState state = SocketState.OPEN;

            try {
                // SSL handshake
                serverSocketFactory.handshake(socket.getSocket());
            } catch (Throwable t) {
                ExceptionUtils.handleThrowable(t);
                if (log.isDebugEnabled()) {
                    log.debug(sm.getString("endpoint.err.handshake"), t);
                }
                // Tell to close the socket
                state = SocketState.CLOSED;
            }

            if ((state != SocketState.CLOSED)) {
                if (status == null) {
                	//处理请求
                    state = handler.process(socket, SocketStatus.OPEN_READ);
                } else {
                    state = handler.process(socket,status);
                }
            }
            if (state == SocketState.CLOSED) {
                // Close socket
                if (log.isTraceEnabled()) {
                    log.trace("Closing socket:"+socket);
                }
                countDownConnection();
                try {
                    socket.getSocket().close();
                } catch (IOException e) {
                    // Ignore
                }
            } else if (state == SocketState.OPEN ||
                    state == SocketState.UPGRADING ||
                    state == SocketState.UPGRADING_TOMCAT  ||
                    state == SocketState.UPGRADED){
                //TODO
                socket.setKeptAlive(true);
                socket.access();
                launch = true;
            } else if (state == SocketState.LONG) {
                //TODO
                socket.access();
                waitingRequests.add(socket);
            }
        } finally {
            if (launch) {
                try {
                    getExecutor().execute(new SocketProcessor(socket, SocketStatus.OPEN_READ));
                } catch (RejectedExecutionException x) {
                    log.warn("Socket reprocessing request was rejected for:"+socket,x);
                    try {
                        //unable to handle connection at this time
                        handler.process(socket, SocketStatus.DISCONNECT);
                    } finally {
                        countDownConnection();
                    }


                } catch (NullPointerException npe) {
                    if (running) {
                        log.error(sm.getString("endpoint.launch.fail"),
                                npe);
                    }
                }
            }
        }
    }
    socket = null;
    // Finish up this request
}
 
开发者ID:sunmingshuai,项目名称:apache-tomcat-7.0.73-with-comment,代码行数:78,代码来源:JIoEndpoint.java

示例4: onData

@Override
public final SocketState onData() throws IOException {
	// Must be start the start of a message (which may consist of multiple
	// frames)
	WsInputStream wsIs = new WsInputStream(processor, getWsOutbound());

	try {
		WsFrame frame = wsIs.nextFrame(false);

		while (frame != null) {
			// TODO User defined extensions may define values for rsv
			if (frame.getRsv() > 0) {
				closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null);
				return SocketState.CLOSED;
			}

			byte opCode = frame.getOpCode();

			if (opCode == Constants.OPCODE_BINARY) {
				doOnBinaryData(wsIs);
			} else if (opCode == Constants.OPCODE_TEXT) {
				InputStreamReader r = new InputStreamReader(wsIs, new Utf8Decoder());
				doOnTextData(r);
			} else if (opCode == Constants.OPCODE_CLOSE) {
				closeOutboundConnection(frame);
				return SocketState.CLOSED;
			} else if (opCode == Constants.OPCODE_PING) {
				getWsOutbound().pong(frame.getPayLoad());
			} else if (opCode == Constants.OPCODE_PONG) {
				doOnPong(frame.getPayLoad());
			} else {
				// Unknown OpCode
				closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null);
				return SocketState.CLOSED;
			}
			frame = wsIs.nextFrame(false);
		}
	} catch (MalformedInputException mie) {
		// Invalid UTF-8
		closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
		return SocketState.CLOSED;
	} catch (UnmappableCharacterException uce) {
		// Invalid UTF-8
		closeOutboundConnection(Constants.STATUS_BAD_DATA, null);
		return SocketState.CLOSED;
	} catch (IOException ioe) {
		// Given something must have gone to reach this point, this
		// might not work but try it anyway.
		closeOutboundConnection(Constants.STATUS_PROTOCOL_ERROR, null);
		return SocketState.CLOSED;
	}
	return SocketState.UPGRADED;
}
 
开发者ID:how2j,项目名称:lazycat,代码行数:53,代码来源:StreamInbound.java

示例5: run

@Override
public void run() {
	boolean launch = false;
	synchronized (socket) {
		try {
			SocketState state = SocketState.OPEN;

			try {
				// SSL handshake
				serverSocketFactory.handshake(socket.getSocket());
			} catch (Throwable t) {
				ExceptionUtils.handleThrowable(t);
				if (log.isDebugEnabled()) {
					log.debug(sm.getString("endpoint.err.handshake"), t);
				}
				// Tell to close the socket
				state = SocketState.CLOSED;
			}

			if ((state != SocketState.CLOSED)) {
				if (status == null) {
					state = handler.process(socket, SocketStatus.OPEN_READ);
				} else {
					state = handler.process(socket, status);
				}
			}
			if (state == SocketState.CLOSED) {
				// Close socket
				if (log.isTraceEnabled()) {
					log.trace("Closing socket:" + socket);
				}
				countDownConnection();
				try {
					socket.getSocket().close();
				} catch (IOException e) {
					// Ignore
				}
			} else if (state == SocketState.OPEN || state == SocketState.UPGRADING
					|| state == SocketState.UPGRADING_TOMCAT || state == SocketState.UPGRADED) {
				socket.setKeptAlive(true);
				socket.access();
				launch = true;
			} else if (state == SocketState.LONG) {
				socket.access();
				waitingRequests.add(socket);
			}
		} finally {
			if (launch) {
				try {
					getExecutor().execute(new SocketProcessor(socket, SocketStatus.OPEN_READ));
				} catch (RejectedExecutionException x) {
					log.warn("Socket reprocessing request was rejected for:" + socket, x);
					try {
						// unable to handle connection at this time
						handler.process(socket, SocketStatus.DISCONNECT);
					} finally {
						countDownConnection();
					}

				} catch (NullPointerException npe) {
					if (running) {
						log.error(sm.getString("endpoint.launch.fail"), npe);
					}
				}
			}
		}
	}
	socket = null;
	// Finish up this request
}
 
开发者ID:how2j,项目名称:lazycat,代码行数:70,代码来源:JIoEndpoint.java


注:本文中的org.apache.tomcat.util.net.AbstractEndpoint.Handler.SocketState.UPGRADED属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。