override def createLogic()

in ProxyStatsGathering/src/main/scala/StreamComponents/MimeTypeWantProxyBranch.scala [20:79]


  override def createLogic(inheritedAttributes: Attributes): GraphStageLogic =
    new GraphStageLogic(shape) {
      setHandler(in, new AbstractInHandler {
        override def onPush(): Unit = {
          val elem = grab(in)

          if(elem.mimeType.major=="video"){
            push(outVideo, ProxyVerifyResult(elem.id, ProxyType.VIDEO, esRecordSays=elem.proxied, wantProxy = true))
            push(outAudio, ProxyVerifyResult(elem.id, ProxyType.AUDIO, esRecordSays=elem.proxied, wantProxy = false))
            push(outThumb, ProxyVerifyResult(elem.id, ProxyType.THUMBNAIL, esRecordSays=elem.proxied, wantProxy = true))
          } else if(elem.mimeType.major=="audio"){
            push(outVideo, ProxyVerifyResult(elem.id, ProxyType.VIDEO, esRecordSays=elem.proxied, wantProxy = false))
            push(outAudio, ProxyVerifyResult(elem.id, ProxyType.AUDIO, esRecordSays=elem.proxied, wantProxy = true))
            push(outThumb, ProxyVerifyResult(elem.id, ProxyType.THUMBNAIL, esRecordSays=elem.proxied, wantProxy = true))
          } else if(elem.mimeType.major=="image") {
            push(outVideo, ProxyVerifyResult(elem.id, ProxyType.VIDEO, esRecordSays=elem.proxied, wantProxy = false))
            push(outAudio, ProxyVerifyResult(elem.id, ProxyType.AUDIO, esRecordSays=elem.proxied, wantProxy = false))
            push(outThumb, ProxyVerifyResult(elem.id, ProxyType.THUMBNAIL, esRecordSays=elem.proxied, wantProxy = true))
          } else if(elem.mimeType.major=="model") {
            if(elem.mimeType.minor=="vnd.mts"){ //MTS files (from older tapeless cams) get mis-identified as this
              push(outVideo, ProxyVerifyResult(elem.id, ProxyType.VIDEO, esRecordSays=elem.proxied, wantProxy = true))
              push(outAudio, ProxyVerifyResult(elem.id, ProxyType.AUDIO, esRecordSays=elem.proxied, wantProxy = false))
              push(outThumb, ProxyVerifyResult(elem.id, ProxyType.THUMBNAIL, esRecordSays=elem.proxied, wantProxy = true))
            } else {
              push (outNo, ProxyVerifyResult(elem.id, ProxyType.UNKNOWN, esRecordSays=elem.proxied, wantProxy = false))
            }
          } else {
            push (outNo, ProxyVerifyResult(elem.id, ProxyType.UNKNOWN,esRecordSays=elem.proxied,  wantProxy = false))
          }
        }
      })

      setHandler(outNo, new AbstractOutHandler {
        override def onPull(): Unit = {
          //println("outThumb: pullFromDownstream")
          if(!hasBeenPulled(in)) pull(in)
        }
      })

      setHandler(outVideo, new AbstractOutHandler {
        override def onPull(): Unit = {
          //println("outThumb: pullFromDownstream")
          if(!hasBeenPulled(in)) pull(in)
        }
      })

      setHandler(outAudio, new AbstractOutHandler {
        override def onPull(): Unit = {
          //println("outThumb: pullFromDownstream")
          if(!hasBeenPulled(in)) pull(in)
        }
      })

      setHandler(outThumb, new AbstractOutHandler {
        override def onPull(): Unit = {
          //println("outThumb: pullFromDownstream")
          if(!hasBeenPulled(in)) pull(in)
        }
      })
    }