/******************************************************************************* * Copyright (c) 2003, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - Initial API and implementation *******************************************************************************/ package org.eclipse.wst.internet.monitor.core.internal.http; import org.eclipse.wst.internet.monitor.core.internal.Monitor; import org.eclipse.wst.internet.monitor.core.internal.Trace; import org.eclipse.wst.internet.monitor.core.internal.provisional.IMonitor; import org.eclipse.wst.internet.monitor.core.internal.provisional.Request; import java.util.List; import java.util.ArrayList; /** * Manages a monitor server connection between two hosts. This * connection may spawn one or more TCP/IP requests to be displayed * in the monitor server view. */ public class HTTPConnection { protected IMonitor monitor; protected int req = -1; protected int resp = -1; protected List<Request> requests = new ArrayList<Request>(); /** * HTTPConnection constructor comment. * * @param monitor a monitor */ public HTTPConnection(IMonitor monitor) { super(); this.monitor = monitor; if (Trace.PARSING) { Trace.trace(Trace.STRING_PARSING, "TCP/IP monitor connection opened " + monitor); } } /** * Add a request. * * @param b the request data * @param isNew true if new */ public void addRequest(byte[] b, boolean isNew) { if (isNew) req ++; HTTPRequest request = (HTTPRequest) getRequestResponse(req); request.addToRequest(b); } /** * Add a response. * * @param b the response data * @param isNew true if new */ public void addResponse(byte[] b, boolean isNew) { if (isNew) resp ++; HTTPRequest request = (HTTPRequest) getRequestResponse(resp); request.addToResponse(b); } /** * Add a property. * * @param key * @param value */ public void addProperty(String key, Object value) { Request request = getRequestResponse(req); request.setProperty(key, value); } /** * Get the request. * * @param isRequest * @return the request */ public Request getRequestResponse(boolean isRequest) { if (isRequest) return getRequestResponse(req); return getRequestResponse(resp); } /** * */ protected Request getRequestResponse(int i) { synchronized (this) { while (i >= requests.size()) { Request request = new HTTPRequest((Monitor) monitor, monitor.getLocalPort(), monitor.getRemoteHost(), monitor.getRemotePort()); requests.add(request); return request; } return requests.get(i); } } /** * Set the title. * * @param title the title * @param isNew boolean */ public void setLabel(String title, boolean isNew) { if (isNew) req ++; HTTPRequest request = (HTTPRequest) getRequestResponse(req); request.setName(title); } }