inital plugin from webtools project
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.monitor.core / src / net / sourceforge / phpdt / monitor / core / internal / Request.java
diff --git a/archive/net.sourceforge.phpeclipse.monitor.core/src/net/sourceforge/phpdt/monitor/core/internal/Request.java b/archive/net.sourceforge.phpeclipse.monitor.core/src/net/sourceforge/phpdt/monitor/core/internal/Request.java
new file mode 100644 (file)
index 0000000..208b00b
--- /dev/null
@@ -0,0 +1,263 @@
+/**********************************************************************
+ * Copyright (c) 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ *    IBM - Initial API and implementation
+ **********************************************************************/
+package net.sourceforge.phpdt.monitor.core.internal;
+
+import java.util.Date;
+import java.util.Properties;
+
+import net.sourceforge.phpdt.monitor.core.IProtocolAdapter;
+import net.sourceforge.phpdt.monitor.core.IRequest;
+/**
+ * A single TCP/IP request/response pair.
+ */
+public class Request implements IRequest {
+       protected Date date;
+       protected long responseTime = -1;
+       protected int localPort;
+       protected String remoteHost;
+       protected int remotePort;
+       protected byte[] request;
+       protected byte[] response;
+       
+       protected String label;
+       protected IProtocolAdapter type;
+
+       protected Properties properties;
+
+       /**
+        * RequestResponse constructor comment.
+        */
+       public Request(IProtocolAdapter type, int localPort, String remoteHost, int remotePort) {
+               super();
+               this.type = type;
+               this.localPort = localPort;
+               this.remoteHost = remoteHost;
+               this.remotePort = remotePort;
+               date = new Date();
+               properties = new Properties();
+               MonitorManager.getInstance().addRequest(this);
+       }
+       
+       public IProtocolAdapter getType() {
+               return type;
+       }
+
+       /**
+        * Add to the request.
+        *
+        * @param addRequest byte[]
+        */
+       public void addToRequest(byte[] addRequest) {
+               if (addRequest == null || addRequest.length == 0)
+                       return;
+       
+               if (request == null || request.length == 0) {
+                       setRequest(addRequest);
+                       return;
+               }
+       
+               int size = request.length + addRequest.length;
+               byte[] b = new byte[size];
+               System.arraycopy(request, 0, b, 0, request.length);
+               System.arraycopy(addRequest, 0, b, request.length, addRequest.length);
+               request = b;
+       }
+
+       /**
+        * Add to the response.
+        *
+        * @param addResponse byte[]
+        */
+       public void addToResponse(byte[] addResponse) {
+               if (addResponse == null || addResponse.length == 0)
+                       return;
+       
+               if (response == null || response.length == 0) {
+                       setResponse(addResponse);
+                       return;
+               }
+       
+               int size = response.length + addResponse.length;
+               byte[] b = new byte[size];
+               System.arraycopy(response, 0, b, 0, response.length);
+               System.arraycopy(addResponse, 0, b, response.length, addResponse.length);
+               response = b;
+       }
+
+       /**
+        * Return the date/time of this request.
+        *
+        * @return java.util.Date
+        */
+       public Date getDate() {
+               return date;
+       }
+
+       /**
+        * Returns the local port.
+        *
+        * @return int
+        */
+       public int getLocalPort() {
+               return localPort;
+       }
+
+       /**
+        * Returns the remote host.
+        *
+        * @return java.lang.String
+        */
+       public String getRemoteHost() {
+               return remoteHost;
+       }
+
+       /**
+        * Returns the remote port.
+        *
+        * @return int
+        */
+       public int getRemotePort() {
+               return remotePort;
+       }
+
+       /**
+        * Returns the request as a byte array.
+        *
+        * @return byte[]
+        */
+       public byte[] getRequest(byte type2) {
+               return request;
+       }
+
+       /**
+        * Returns the response as a byte array.
+        *
+        * @return byte[]
+        */
+       public byte[] getResponse(byte type2) {
+               return response;
+       }
+
+       /**
+        * Returns the response time in milliseconds.
+        *
+        * @return long
+        */
+       public long getResponseTime() {
+               return responseTime;
+       }
+
+       /**
+        * Returns the title, if one exists.
+        *
+        * @return java.lang.String
+        */
+       public String getLabel() {
+               if (label == null)
+                       return getRemoteHost() + ":" + getRemotePort();
+               else
+                       return label;
+       }
+
+       /**
+        * Set the request.
+        *
+        * @param request byte[]
+        */
+       protected void setRequest(byte[] request) {
+               if (request == null || request.length == 0)
+                       return;
+       
+               this.request = request;
+       
+               MonitorManager.getInstance().requestChanged(this);
+       }
+
+       /**
+        * Set the response.
+        *
+        * @param response byte[]
+        */
+       protected void setResponse(byte[] response) {
+               if (response == null || response.length == 0)
+                       return;
+       
+               this.response = response;
+       
+               responseTime = System.currentTimeMillis() - date.getTime();
+       
+               MonitorManager.getInstance().requestChanged(this);
+       }
+
+       /**
+        * Sets the title.
+        *
+        * @param s java.lang.String
+        */
+       public void setLabel(String s) {
+               // property can only be set once
+               if (label != null)
+                       return;
+       
+               label = s;
+               MonitorManager.getInstance().requestChanged(this);
+       }
+       
+       /**
+        * 
+        */
+       public void addProperty(String key, Object value) {
+               try {
+                       if (properties.containsKey(key))
+                               properties.remove(key);
+                       properties.put(key, value);
+               } catch (Exception e) {
+                       Trace.trace(Trace.SEVERE, "Could not add property", e);
+               }
+       }
+       
+       /**
+        * 
+        */
+       public String getStringProperty(String key) {
+               try {
+                       return (String) properties.get(key);
+               } catch (Exception e) {
+                       return "";
+               }
+       }
+       
+       /**
+        * 
+        */
+       public Integer getIntegerProperty(String key) {
+               try {
+                       return (Integer) properties.get(key);
+               } catch (Exception e) {
+                       return null;
+               }
+       }
+       
+       /**
+        * 
+        */
+       public Object getObjectProperty(String key) {
+               try {
+                       return properties.get(key);
+               } catch (Exception e) {
+                       return null;
+               }
+       }
+       
+       public void fireChangedEvent() {
+               MonitorManager.getInstance().requestChanged(this);
+       }
+}
\ No newline at end of file