[sipana commit] r195 - SIPSession entity changed to hold only one list of messages instead of two separated lists...

0 views
Skip to first unread message

codesite...@google.com

unread,
May 13, 2009, 1:59:43 AM5/13/09
to sipana...@googlegroups.com
Author: marcoshack
Date: Tue May 12 22:52:43 2009
New Revision: 195

Modified:

trunk/sipana-agent/src/main/java/org/sipana/agent/capture/CaptureSession.java
trunk/sipana-agent/src/main/java/org/sipana/agent/sender/Sender.java

trunk/sipana-agent/src/main/java/org/sipana/agent/service/ServiceLocator.java
trunk/sipana-agent/src/main/java/org/sipana/agent/sip/SIPHandler.java

trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPFactory.java

trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSession.java

trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSessionState.java

trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java

trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java

Log:
SIPSession entity changed to hold only one list of messages instead of two
separated lists for requests and responses.

Modified:
trunk/sipana-agent/src/main/java/org/sipana/agent/capture/CaptureSession.java
==============================================================================
---
trunk/sipana-agent/src/main/java/org/sipana/agent/capture/CaptureSession.java
(original)
+++
trunk/sipana-agent/src/main/java/org/sipana/agent/capture/CaptureSession.java
Tue May 12 22:52:43 2009
@@ -20,9 +20,21 @@
public static int STATE_RUNINNG = 1;
public static int STATE_IDLE = 2;
public static int STATE_ERROR = 3;
-
+
+ /**
+ * Set the listener for this capture session.
+ *
+ * @param listener
+ */
public void setListener(CaptureListener listener);
+
+ /**
+ * Set the capture filter in the libpcap [1] format.
+ *
+ * @param filter
+ */
public void setFilter(String filter);
+
public void setDevice(String device);
public void setPromiscuous(boolean promiscuous);


Modified:
trunk/sipana-agent/src/main/java/org/sipana/agent/sender/Sender.java
==============================================================================
--- trunk/sipana-agent/src/main/java/org/sipana/agent/sender/Sender.java
(original)
+++ trunk/sipana-agent/src/main/java/org/sipana/agent/sender/Sender.java
Tue May 12 22:52:43 2009
@@ -1,3 +1,4 @@
+
package org.sipana.agent.sender;

import org.sipana.protocol.sip.SIPMessage;

Modified:
trunk/sipana-agent/src/main/java/org/sipana/agent/service/ServiceLocator.java
==============================================================================
---
trunk/sipana-agent/src/main/java/org/sipana/agent/service/ServiceLocator.java
(original)
+++
trunk/sipana-agent/src/main/java/org/sipana/agent/service/ServiceLocator.java
Tue May 12 22:52:43 2009
@@ -19,7 +19,7 @@
import org.sipana.agent.capture.impl.CaptureManagerImpl;
import org.sipana.agent.config.ConfigManager;
import org.sipana.agent.sender.Sender;
-import org.sipana.agent.sender.jms.MessageSenderJMS;
+import org.sipana.agent.sender.jms.JMSSender;
import org.sipana.agent.sip.SIPHandler;
import org.sipana.protocol.sip.SIPFactory;

@@ -38,7 +38,7 @@
}

public Sender getSender() throws Exception {
- return new MessageSenderJMS();
+ return new JMSSender();
}

public SIPHandler getSIPHandler(Sender sender) {

Modified:
trunk/sipana-agent/src/main/java/org/sipana/agent/sip/SIPHandler.java
==============================================================================
--- trunk/sipana-agent/src/main/java/org/sipana/agent/sip/SIPHandler.java
(original)
+++ trunk/sipana-agent/src/main/java/org/sipana/agent/sip/SIPHandler.java
Tue May 12 22:52:43 2009
@@ -81,7 +81,7 @@
}

if (session != null) {
- session.addResponse(response);
+ session.addMessage(response);

if (session.getFirstResponseTime() == 0) {
session.setFirstResponseTime(response.getTime());
@@ -125,7 +125,7 @@
SIPSession newSession = messageFactory.createSession(invite);
addSession(newSession);
} else {
- getSession(callId).addRequest(invite);
+ getSession(callId).addMessage(invite);
}
}

@@ -133,7 +133,7 @@
SIPSession session = getSession(ack.getCallID());

if (session != null) {
- session.addRequest(ack);
+ session.addMessage(ack);

if (session.getState() == SIPSessionState.FAILED) {
terminateSession(session);
@@ -148,7 +148,7 @@
SIPSession session = getSession(request.getCallID());

if (session != null) {
- session.addRequest(request);
+ session.addMessage(request);
session.setDisconnectionStart(request.getTime());
session.setState(SIPSessionState.DISCONNECTING);
} else {

Modified:
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPFactory.java
==============================================================================
---
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPFactory.java
(original)
+++
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPFactory.java
Tue May 12 22:52:43 2009
@@ -45,36 +45,21 @@
return createMessage(sipMessage);
}

- public SIPMessage createMessage(
- gov.nist.javax.sip.message.SIPMessage sipMessage) {
+ public SIPMessage createMessage(gov.nist.javax.sip.message.SIPMessage
sipMessage) {
SIPMessage message = null;

if (sipMessage != null) {
if (sipMessage instanceof
gov.nist.javax.sip.message.SIPRequest) {
- message = new SIPRequest();
- gov.nist.javax.sip.message.SIPRequest sipRequest =
(gov.nist.javax.sip.message.SIPRequest) sipMessage;
- SIPRequest request = (SIPRequest) message;
-
- request.setMethod(sipRequest.getMethod());
-
request.setMaxForwards(sipRequest.getMaxForwards().getMaxForwards());
-
- // Request address host:port
- SipURI requestURI = (SipURI)
sipRequest.getRequestLine().getUri();
- StringBuilder sbAddr = new
StringBuilder(requestURI.getHost());
- sbAddr.append(":").append(requestURI.getPort());
- request.setRequestAddr(sbAddr.toString());
+ message =
createSIPRequest((gov.nist.javax.sip.message.SIPRequest)sipMessage);

} else if (sipMessage instanceof
gov.nist.javax.sip.message.SIPResponse) {
- message = new SIPResponse();
- gov.nist.javax.sip.message.SIPResponse sipResponse =
(gov.nist.javax.sip.message.SIPResponse) sipMessage;
- SIPResponse response = (SIPResponse) message;
-
- response.setStatusCode(sipResponse.getStatusCode());
- response.setReasonPhrase(sipResponse.getReasonPhrase());
-
response.setRelatedRequestMethod(sipResponse.getCSeq().getMethod());
+ message =
createSIPResponse((gov.nist.javax.sip.message.SIPResponse)sipMessage);
}

if (message != null) {
+ // Copy SIPMessage attributes
+
+ // SIP Call-ID
message.setCallID(sipMessage.getCallId().getCallId());

// From user@domain
@@ -101,6 +86,27 @@
}

return message;
+ }
+
+ private SIPRequest
createSIPRequest(gov.nist.javax.sip.message.SIPRequest sipRequest) {
+ SIPRequest request = new SIPRequest();
+ request.setMethod(sipRequest.getMethod());
+
request.setMaxForwards(sipRequest.getMaxForwards().getMaxForwards());
+
+ // Request address host:port
+ SipURI requestURI = (SipURI) sipRequest.getRequestLine().getUri();
+ StringBuilder sbAddr = new StringBuilder(requestURI.getHost());
+ sbAddr.append(":").append(requestURI.getPort());
+ request.setRequestAddr(sbAddr.toString());
+ return request;
+ }
+
+ private SIPResponse
createSIPResponse(gov.nist.javax.sip.message.SIPResponse sipResponse) {
+ SIPResponse response = new SIPResponse();
+ response.setStatusCode(sipResponse.getStatusCode());
+ response.setReasonPhrase(sipResponse.getReasonPhrase());
+
response.setRelatedRequestMethod(sipResponse.getCSeq().getMethod());
+ return response;
}

private String getUser(SipURI uri) {

Modified:
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSession.java
==============================================================================
---
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSession.java
(original)
+++
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSession.java
Tue May 12 22:52:43 2009
@@ -23,7 +23,6 @@
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
-import org.hibernate.annotations.Where;

@XmlRootElement(name = "sipsession")
@XmlAccessorType(XmlAccessType.NONE)
@@ -53,7 +52,7 @@
private long setupTime;

@XmlAttribute
- private int state;
+ private SIPSessionState state;

@XmlAttribute
private String callId;
@@ -67,22 +66,17 @@
@XmlAttribute
private String toUser;

- @Where(clause="sip_message_type = 1")
- private List<SIPRequest> requests;
-
- @Where(clause="sip_message_type = 2")
- private List<SIPResponse> responses;
+ private List<SIPMessage> messageList;

public SIPSession() {
- requests = new LinkedList<SIPRequest>();
- responses = new LinkedList<SIPResponse>();
+ messageList = new LinkedList<SIPMessage>();
firstResponseTime = 0; // no first response
setupTime = 0; // no setup time
}

public SIPSession(SIPRequest request) {
this();
- addRequest(request);
+ addMessage(request);
setRequestMethod(request.getMethod());
setCallId(request.getCallID());
setStartTime(request.getTime());
@@ -163,11 +157,11 @@
this.setupTime = setupTime;
}

- public int getState() {
+ public SIPSessionState getState() {
return state;
}

- public void setState(int state) {
+ public void setState(SIPSessionState state) {
this.state = state;
}

@@ -176,26 +170,6 @@
return SIPSessionState.getStateString(getState());
}

- public List<SIPRequest> getRequests() {
- return requests;
- }
-
- public void setRequests(List<SIPRequest> requests) {
- synchronized (this.requests) {
- this.requests = requests;
- }
- }
-
- public List<SIPResponse> getResponses() {
- return responses;
- }
-
- public void setResponses(List<SIPResponse> responses) {
- synchronized (this.responses) {
- this.responses = responses;
- }
- }
-
public String getFromUser() {
return fromUser;
}
@@ -211,31 +185,21 @@
public void setToUser(String to) {
this.toUser = to;
}
-
- public void addRequest(SIPRequest request) {
- synchronized (requests) {
- requests.add(request);
- }
- }
-
- public void addResponse(SIPResponse response) {
- synchronized (responses) {
- responses.add(response);
- }
- }
-
+
public void addMessage(SIPMessage message) {
- if (message instanceof SIPRequest) {
- addRequest((SIPRequest) message);
- } else if (message instanceof SIPRequest) {
- addResponse((SIPResponse) message);
+ synchronized (messageList) {
+ messageList.add(message);
}
}
+
+ public List<SIPMessage> getMessageList() {
+ return messageList;
+ }

@Override
public String toString() {
- StringBuilder sb = new StringBuilder("SIPSession: ");
- sb.append("Initial request method=").append(getRequestMethod());
+ StringBuilder sb = new StringBuilder("SIPSession[");
+ sb.append("initialRequestMethod=").append(getRequestMethod());
sb.append(", id=").append(getId());
sb.append(", startTime=").append(getStartTime());
sb.append(", firstResponseTime=").append(getFirstResponseTime());
@@ -244,49 +208,18 @@
sb.append(", endTime=").append(getEndTime());
sb.append(", state=").append(getState());

- sb.append(". Request list: ");
- if (!requests.isEmpty()) {
- for (SIPRequest request : requests) {
- sb.append(request);
- if (requests.iterator().hasNext()) {
+ sb.append(", messageList = {");
+ if (!messageList.isEmpty()) {
+ for (SIPMessage m : messageList) {
+ sb.append(m);
+ if (messageList.iterator().hasNext()) {
sb.append(", ");
}
}
} else {
- sb.append("empty");
- }
-
- sb.append(". Response list: ");
- if (!responses.isEmpty()) {
- for (SIPResponse response : responses) {
- sb.append(response);
- if (responses.iterator().hasNext()) {
- sb.append(", ");
- }
- }
- } else {
- sb.append("empty");
+ sb.append("}");
}

return sb.toString();
- }
-
- public void merge(SIPSession session) {
- requests.addAll(session.getRequests());
- responses.addAll(session.getResponses());
-
- // TODO [mhack] Think better in the session merge scenarios
- if (session.getEndTime() > endTime) {
- endTime = session.getEndTime();
- establishedTime = session.getEstablishedTime();
- setupTime = session.getSetupTime();
- disconnectionStart = session.getDisconnectionStart();
- state = session.getState();
- }
-
- if (session.getStartTime() < startTime) {
- startTime = session.getStartTime();
- firstResponseTime = session.getFirstResponseTime();
- }
}
}

Modified:
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSessionState.java
==============================================================================
---
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSessionState.java
(original)
+++
trunk/sipana-commons/src/main/java/org/sipana/protocol/sip/SIPSessionState.java
Tue May 12 22:52:43 2009
@@ -18,42 +18,42 @@
import org.sipana.SipanaProperties;
import org.sipana.SipanaPropertyType;

-public class SIPSessionState {
- public static final int INITIATED = 1;
- public static final int ESTABLISHED = 2;
- public static final int COMPLETED = 3;
- public static final int FAILED = 4;
- public static final int TIMEOUT = 5;
- public static final int PROVISIONED = 6;
- public static final int DISCONNECTING = 7;
- public static final int CANCELED = 8;
+public enum SIPSessionState {
+ INITIATED,
+ ESTABLISHED,
+ COMPLETED,
+ FAILED,
+ TIMEOUT,
+ PROVISIONED,
+ DISCONNECTING,
+ CANCELED;

- public static String getStateString(int state) {
+ public static String getStateString(SIPSessionState state) {
String strStatus;

switch (state) {
- case SIPSessionState.INITIATED:
+ case INITIATED:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_INITIATED);
break;
- case SIPSessionState.PROVISIONED:
+ case PROVISIONED:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_PROVISIONED);
break;
- case SIPSessionState.ESTABLISHED:
+ case ESTABLISHED:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_ESTABLISHED);
break;
- case SIPSessionState.COMPLETED:
+ case COMPLETED:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_COMPLETED);
break;
- case SIPSessionState.FAILED:
+ case FAILED:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_FAILED);
break;
- case SIPSessionState.TIMEOUT:
+ case TIMEOUT:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_TIMEOUT);
break;
- case SIPSessionState.DISCONNECTING:
+ case DISCONNECTING:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_DISCONNECTING);
break;
- case SIPSessionState.CANCELED:
+ case CANCELED:
strStatus =
SipanaProperties.getProperty(SipanaPropertyType.SIPSESSION_STATUS_CANCELED);
break;
default:

Modified:
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java
==============================================================================
---
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java
(original)
+++
trunk/sipana-server-ejb/src/main/java/org/sipana/server/sip/SIPPerformanceMetricsBean.java
Tue May 12 22:52:43 2009
@@ -18,6 +18,7 @@
import java.util.List;
import javax.ejb.Stateless;
import javax.sip.message.Request;
+import org.sipana.protocol.sip.SIPMessage;
import org.sipana.protocol.sip.SIPRequest;
import org.sipana.protocol.sip.SIPSessionState;
import org.sipana.protocol.sip.SIPSession;
@@ -34,21 +35,28 @@

for (SIPSession session : sessionList) {
String initialMethod = session.getRequestMethod();
- List<SIPRequest> requestList = session.getRequests();
- SIPRequest first = requestList.get(0);
+ List<SIPMessage> messageList = session.getMessageList();
+ SIPRequest first = null;

// Get the last request within the session with the same
method of
// initial request to discard requests captured on intermediate
// hosts (Average Hops is an end-to-end metric)
SIPRequest last = null;
- for (SIPRequest request : requestList) {
+ for (SIPMessage m : messageList) {
// TODO Use CSeq to get only the first request
- if (request.getMethod().equals(initialMethod)) {
- last = request;
+ if (m instanceof SIPRequest
+ &&
((SIPRequest)m).getMethod().equals(initialMethod))
+ {
+ if (first == null) {
+ first = (SIPRequest)m;
+ }
+ last = (SIPRequest)m;
}
}

- result += (first.getMaxForwards() - last.getMaxForwards());
+ if (first != null && last != null) {
+ result += (first.getMaxForwards() - last.getMaxForwards());
+ }
}

int listSize = sessionList.size();

Modified:
trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java
==============================================================================
---
trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java
(original)
+++
trunk/sipana-server-ejb/src/test/java/org/sipana/server/test/sip/SIPPerformanceMetricsTest.java
Tue May 12 22:52:43 2009
@@ -22,7 +22,6 @@
import org.junit.Before;
import org.junit.Test;
import org.sipana.protocol.sip.SIPRequest;
-import org.sipana.protocol.sip.SIPRequest;
import org.sipana.protocol.sip.SIPSession;
import org.sipana.server.sip.SIPPerformanceMetrics;
import org.sipana.server.sip.SIPPerformanceMetricsBean;
@@ -51,7 +50,7 @@
SIPRequest request = new SIPRequest();
request.setMethod(Request.INVITE);
request.setMaxForwards(70 - j);
- session.addRequest(request);
+ session.addMessage(request);
}

sessionList.add(session);

Reply all
Reply to author
Forward
0 new messages