Class HttpDownstreamGateway

java.lang.Object
ca.uqac.lif.cep.Processor
ca.uqac.lif.cep.SynchronousProcessor
ca.uqac.lif.cep.tmf.Source
ca.uqac.lif.cep.http.HttpDownstreamGateway
All Implemented Interfaces:
ca.uqac.lif.cep.Contextualizable, ca.uqac.lif.cep.Duplicable, ca.uqac.lif.cep.DuplicableProcessor

public class HttpDownstreamGateway extends ca.uqac.lif.cep.tmf.Source
Outputs character strings received over the network from an upstream connection. A HttpDownstreamGateway listens to HTTP requests on a given TCP port. When such a request comes in, it extracts the payload from that request, and pushes it downstream as a String event. Graphically, this processor is represented as:

Processor graph

This processor can also be pulled; in such a case, if a pull URL has been specified, the processor sends an HTTP request to that URL, and uses the response's payload as the next event.

The downstream gateway generally works in tandem with an upstream gateway, which works in reverse.

Author:
Sylvain Hallé
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected class 
     

    Nested classes/interfaces inherited from class ca.uqac.lif.cep.SynchronousProcessor

    ca.uqac.lif.cep.SynchronousProcessor.InputPushable, ca.uqac.lif.cep.SynchronousProcessor.OutputPullable

    Nested classes/interfaces inherited from class ca.uqac.lif.cep.Processor

    ca.uqac.lif.cep.Processor.InternalProcessorState
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected ca.uqac.lif.jerrydog.RequestCallback.Method
    The HTTP method
    protected int
    The TCP port on which the gateway listens for requests
    protected String
    The URL to call when this processor is asked for a new event.
    protected boolean
    Whether this processor makes a call to push() when a request is received
    protected Lock
    A lock to access the queue
    protected Queue<String>
    A queue of character strings received over the network
    protected ca.uqac.lif.jerrydog.Server
    An internal instance of HTTP server
    protected String
    The URL on which the gateway listens for requests

    Fields inherited from class ca.uqac.lif.cep.SynchronousProcessor

    m_inputPushables, m_outputPullables, m_tempQueue

    Fields inherited from class ca.uqac.lif.cep.Processor

    m_context, m_hasBeenNotifiedOfEndOfTrace, m_inputArity, m_inputPullables, m_inputQueues, m_notifiedEndOfTraceDownstream, m_outputArity, m_outputPushables, m_outputQueues, MAX_PULL_RETRIES, s_versionString
  • Constructor Summary

    Constructors
    Constructor
    Description
    HttpDownstreamGateway(int port, String url, ca.uqac.lif.jerrydog.RequestCallback.Method m)
    Creates a new downstream gateway.
    HttpDownstreamGateway(int port, String url, ca.uqac.lif.jerrydog.RequestCallback.Method m, String pull_url)
    Creates a new downstream gateway.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected boolean
    compute(Object[] inputs, Queue<Object[]> outputs)
     
    duplicate(boolean with_state)
     
    setPushOnReceive(boolean b)
     
    void
     
    void
     

    Methods inherited from class ca.uqac.lif.cep.tmf.Source

    push

    Methods inherited from class ca.uqac.lif.cep.SynchronousProcessor

    getPullableOutput, getPushableInput

    Methods inherited from class ca.uqac.lif.cep.Processor

    allNotifiedEndOfTrace, allNull, copyInputQueue, copyOutputQueue, duplicate, duplicateInto, equals, getAt, getContext, getContext, getEmptyQueue, getId, getInputArity, getInputQueue, getInputType, getInputTypesFor, getOutputArity, getOutputQueue, getOutputType, getPullableInput, getPullableOutput, getPushableInput, getPushableOutput, hashCode, leftShift, newContext, onEndOfTrace, or, or, or, printState, readState, reset, rightShift, setContext, setContext, setPullableInput, setPushableOutput, startAll, stopAll

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • m_receivedStrings

      protected Queue<String> m_receivedStrings
      A queue of character strings received over the network
    • m_queueLock

      protected Lock m_queueLock
      A lock to access the queue
    • m_port

      protected int m_port
      The TCP port on which the gateway listens for requests
    • m_server

      protected ca.uqac.lif.jerrydog.Server m_server
      An internal instance of HTTP server
    • m_url

      protected String m_url
      The URL on which the gateway listens for requests
    • m_method

      protected ca.uqac.lif.jerrydog.RequestCallback.Method m_method
      The HTTP method
    • m_pushOnReceive

      protected boolean m_pushOnReceive
      Whether this processor makes a call to push() when a request is received
    • m_pullUrl

      protected String m_pullUrl
      The URL to call when this processor is asked for a new event. This can be null; in such a case, the processor won't do anything when being pulled.
  • Constructor Details

    • HttpDownstreamGateway

      public HttpDownstreamGateway(int port, String url, ca.uqac.lif.jerrydog.RequestCallback.Method m)
      Creates a new downstream gateway.
      Parameters:
      port - The TCP port to listen to
      url - The URL to respond to
      m - The HTTP method (GET, POST, etc.) to respond to
    • HttpDownstreamGateway

      public HttpDownstreamGateway(int port, String url, ca.uqac.lif.jerrydog.RequestCallback.Method m, String pull_url)
      Creates a new downstream gateway.
      Parameters:
      port - The TCP port to listen to
      url - The URL to respond to
      m - The HTTP method (GET, POST, etc.) to respond to
      pull_url - The URL to call when this processor is asked for a new event. This can be null; in such a case, the processor won't do anything when being pulled.
  • Method Details

    • setPushOnReceive

      public HttpDownstreamGateway setPushOnReceive(boolean b)
    • start

      public void start() throws ca.uqac.lif.cep.ProcessorException
      Overrides:
      start in class ca.uqac.lif.cep.Processor
      Throws:
      ca.uqac.lif.cep.ProcessorException
    • stop

      public void stop() throws ca.uqac.lif.cep.ProcessorException
      Overrides:
      stop in class ca.uqac.lif.cep.Processor
      Throws:
      ca.uqac.lif.cep.ProcessorException
    • compute

      protected boolean compute(Object[] inputs, Queue<Object[]> outputs) throws ca.uqac.lif.cep.ProcessorException
      Specified by:
      compute in class ca.uqac.lif.cep.SynchronousProcessor
      Throws:
      ca.uqac.lif.cep.ProcessorException
    • duplicate

      public HttpDownstreamGateway duplicate(boolean with_state)
      Specified by:
      duplicate in interface ca.uqac.lif.cep.Duplicable
      Specified by:
      duplicate in class ca.uqac.lif.cep.Processor