in ProxyStatsGathering/src/main/scala/StreamComponents/MimeTypeBranch.scala [20:62]
override def createLogic(inheritedAttributes: Attributes): GraphStageLogic =
new GraphStageLogic(shape) {
setHandler(in, new AbstractInHandler {
override def onPush(): Unit = {
val elem = grab(in)
//println(s"${elem.path} has MIME type ${elem.mimeType.toString}")
if(elem.mimeType==null) { //it should never be, but just in case...
push(outNo, elem)
} else if(elem.mimeType.major=="application"){
if(elem.mimeType.minor=="binary"){
push(outNo, elem)
} else if(elem.mimeType.minor=="octet-stream"){
push(outNo, elem)
} else {
push(outYes, elem)
}
} else if(elem.mimeType.major=="binary"){
if(elem.mimeType.minor=="octet-stream"){
push(outNo,elem)
} else {
push(outYes, elem)
}
} else {
push(outYes, elem)
}
}
})
setHandler(outNo, new AbstractOutHandler {
override def onPull(): Unit = {
//println("mimeTypeBranch NO: pullFromDownstream")
if(!hasBeenPulled(in)) pull(in)
}
})
setHandler(outYes, new AbstractOutHandler {
override def onPull(): Unit = {
//println("mimeTypeBranch YES: pullFromDownstream")
if(!hasBeenPulled(in)) pull(in)
}
})
}