override def createLogic()

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)
        }
      })
    }