gpt4 book ai didi

java - Java 秒表,具有重置功能

转载 作者:行者123 更新时间:2023-12-01 13:11:54 25 4
gpt4 key购买 nike

我已经实现了一个 SIP Servlet,其中我从客户端接收两种类型的消息。我可以接收高优先级消息和低优先级消息,当我读取消息的 URI 时,我将其分开,如下面的代码所示。我必须实现一个基本的秒表,它会增加下面代码中声明的“count”整数。我如何制作这样的秒表并重置它?

protected void doRequest(SipServletRequest reqfromclient) throws javax.servlet.ServletException, java.io.IOException {
if( reqfromclient.getMethod().equals("MESSAGE") ) {
String MESSAGE = reqfromclient.getContent().toString();
System.out.println("The arrived message is " + MESSAGE);

// Assign the callee URI
String URICallee = reqfromclient.getTo().getURI().toString();

//Assign the caller URI
String URICaller = reqfromclient.getFrom().getURI().toString();


//DECLARE STOPWATCH
int count = 0;


// Now the Highprio and Lowprio alerts have to be separated
if(URICallee.endsWith("policeHigh.com")) {
// RESET STOPWATCH
//START THE STOPWATCH. INCREMENT COUNT EVERY SECOND
}

else if(URICallee.endsWith("policeLow.com")) {
if(count == 21) {
//something
}
}
}

最佳答案

要执行基于计时器的任意代码,请使用可以从 TimerService 创建的 ServletTimer 类。这有几个部分:

  • 当您想要设置计时器时,请获取对 TimerService 的引用.
  • 使用 TimerService 创建一个具有所需超时时间的 ServletTimer
  • ServletTimer 的 ID 存储在某处(作为 SipSessionSipApplicationSession 中的属性)。
  • 如果需要取消计时器,请从 session 中检索计时器 ID,使用 sipApplicationSession.getTimer(id) 检索计时器并对其调用 cancel() .
  • 您将需要一些实现 TimerListener 接口(interface)的类。如果您愿意,它可以是您的 servlet 类。使用超时到期时应用程序需要执行的逻辑来实现 timeout 方法。正如 this link 中所讨论的,在 SIP 部署描述符中将该类声明为监听器
  • 可选:当您的通话结束时,调用 sipApplicationSession.invalidate(),这将取消所有未完成的计时器。

显示了一个简单的示例 here 。该示例存在缺陷,因为它将 ServletTimer 存储为 servlet 类的字段,因此当后续调用进入时它将被覆盖。将 ID 存储为 SipApplicationSession 的属性code> 将防止它被覆盖。

关于java - Java 秒表,具有重置功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22792086/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com