瀏覽代碼

Pause and resume

tags/CommEngine-0.0.3
ymlam 6 年之前
父節點
當前提交
56002b3bee
共有 3 個檔案被更改,包括 23 行新增11 行删除
  1. +1
    -1
      src/main/java/altk/comm/engine/Broadcast.java
  2. +2
    -0
      src/main/java/altk/comm/engine/CommEngine.java
  3. +20
    -10
      src/main/java/altk/comm/engine/Postback.java

+ 1
- 1
src/main/java/altk/comm/engine/Broadcast.java 查看文件

@@ -934,7 +934,7 @@ public abstract class Broadcast


protected void pause() protected void pause()
{ {
// Sets state to HALTED, which is monitored by Broadcast.Service threads.
// Sets state to PAUSING, which is monitored by Broadcast.Service threads.
setState(BroadcastState.PAUSING); setState(BroadcastState.PAUSING);
} }


+ 2
- 0
src/main/java/altk/comm/engine/CommEngine.java 查看文件

@@ -331,6 +331,7 @@ public abstract class CommEngine extends HttpServlet
return; return;
} }
broadcast.pause(); broadcast.pause();
out.print("OK");
} }




@@ -345,6 +346,7 @@ public abstract class CommEngine extends HttpServlet
return; return;
} }
broadcast.resume(); broadcast.resume();
out.print("OK");
} }


/** /**


+ 20
- 10
src/main/java/altk/comm/engine/Postback.java 查看文件

@@ -146,30 +146,40 @@ public class Postback
} }
// No reports // No reports
BroadcastState finalState = null;
BroadcastState toState = null;
String reason = null; String reason = null;
switch (broadcast.getState()) switch (broadcast.getState())
{ {
case ALLDONE: case ALLDONE:
finalState = BroadcastState.COMPLETED;
toState = BroadcastState.COMPLETED;
reason = "All posted"; reason = "All posted";
break; break;
case CANCELING: case CANCELING:
finalState = BroadcastState.CANCELED;
if (broadcast.getActiveJobCount() > 0) break;
toState = BroadcastState.CANCELED;
reason = "User canceled"; reason = "User canceled";
break; break;
case PAUSING: case PAUSING:
finalState = BroadcastState.PAUSED;
if (broadcast.getActiveJobCount() > 0) break;
toState = BroadcastState.PAUSED;
reason = "User paused"; reason = "User paused";
break; break;
default: default:
} }
if (finalState != null)
{
broadcast.terminate(finalState, reason);
myLogger.info("All posted, thread terminating");
return;
}
if (toState != null)
{
if (toState.isFinal)
{
broadcast.terminate(toState, reason);
myLogger.info("All posted, thread terminating");
return;
}
else
{
broadcast.setState(toState);
return;
}
}
if (broadcast.getState().isFinal) if (broadcast.getState().isFinal)
{ {
// No more. Notify all waiting postback threads and exit thread // No more. Notify all waiting postback threads and exit thread


Loading…
取消
儲存