this.optional = optional;
}
+ static ProcessType valueOf(boolean owner, boolean optional) {
+ if (!optional) {
+ if (!owner) {
+ return NORMAL;
+ } else {
+ return OWNER;
+ }
+ } else {
+ if (!owner) {
+ return OPTIONAL;
+ } else {
+ return OPTIONAL_OWNER;
+ }
+ }
+ }
+
boolean isOwner() {
return owner;
}
final boolean isOwner = "1".equals(fork);
final String th = attributes.getValue("thread");
- // 初めて見つけたthreadをメインスレッドとみなす
- if(mainThreadId == null) {
+ // 初めて見つけたthreadをメインスレッド(非オプショナルスレッド)とみなす
+ if (mainThreadId == null) {
mainThreadId = th;
}
final boolean isOptional = (mainThreadId == null) ? false : !mainThreadId.equals(th);
- boolean nokick = false;
- for(ProcessType pt : processTypes) {
- if(pt.isOwner() == isOwner && pt.isOptional() == isOptional) {
- nokick = true;
- break;
- }
- }
- if(!nokick) {
+ if(!processTypes.contains(ProcessType.valueOf(isOwner, isOptional))){
itemKicked = true;
return;
}