Package ca.uqac.lif.cep.http
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.azrael.Printable
,ca.uqac.lif.azrael.Readable
,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. AHttpDownstreamGateway
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: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
HttpDownstreamGateway.ListenerCallback
-
Field Summary
Fields Modifier and Type Field Description protected ca.uqac.lif.jerrydog.RequestCallback.Method
m_method
The HTTP methodprotected int
m_port
The TCP port on which the gateway listens for requestsprotected java.lang.String
m_pullUrl
The URL to call when this processor is asked for a new event.protected boolean
m_pushOnReceive
Whether this processor makes a call topush()
when a request is receivedprotected java.util.concurrent.locks.Lock
m_queueLock
A lock to access the queueprotected java.util.Queue<java.lang.String>
m_receivedStrings
A queue of character strings received over the networkprotected ca.uqac.lif.jerrydog.Server
m_server
An internal instance of HTTP serverprotected java.lang.String
m_url
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_eventTracker, m_hasBeenNotifiedOfEndOfTrace, m_inputArity, m_inputCount, m_inputPullables, m_inputQueues, m_notifiedEndOfTraceDownstream, m_outputArity, m_outputCount, m_outputPushables, m_outputQueues, MAX_PULL_RETRIES, s_versionString
-
-
Constructor Summary
Constructors Constructor Description HttpDownstreamGateway(int port, java.lang.String url, ca.uqac.lif.jerrydog.RequestCallback.Method m)
Creates a new downstream gateway.HttpDownstreamGateway(int port, java.lang.String url, ca.uqac.lif.jerrydog.RequestCallback.Method m, java.lang.String pull_url)
Creates a new downstream gateway.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
compute(java.lang.Object[] inputs, java.util.Queue<java.lang.Object[]> outputs)
HttpDownstreamGateway
duplicate(boolean with_state)
HttpDownstreamGateway
setPushOnReceive(boolean b)
void
start()
void
stop()
-
Methods inherited from class ca.uqac.lif.cep.SynchronousProcessor
getPullableOutput, getPushableInput, setEventTracker
-
Methods inherited from class ca.uqac.lif.cep.Processor
allNotifiedEndOfTrace, allNull, associateTo, associateToInput, associateToOutput, copyInputQueue, copyOutputQueue, duplicate, duplicateInto, equals, getAt, getContext, getContext, getEmptyQueue, getEventTracker, getId, getInputArity, getInputCount, getInputQueue, getInputType, getInputTypesFor, getLeaves, getLeaves, getOutputArity, getOutputCount, getOutputQueue, getOutputType, getPullableInput, getPullableOutput, getPushableInput, getPushableOutput, hashCode, leftShift, newContext, onEndOfTrace, or, or, print, printState, read, readState, reset, rightShift, setContext, setContext, setPullableInput, setPushableOutput, startAll, stopAll
-
-
-
-
Field Detail
-
m_receivedStrings
protected java.util.Queue<java.lang.String> m_receivedStrings
A queue of character strings received over the network
-
m_queueLock
protected java.util.concurrent.locks.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 java.lang.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 topush()
when a request is received
-
m_pullUrl
protected java.lang.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 Detail
-
HttpDownstreamGateway
public HttpDownstreamGateway(int port, java.lang.String url, ca.uqac.lif.jerrydog.RequestCallback.Method m)
Creates a new downstream gateway.- Parameters:
port
- The TCP port to listen tourl
- The URL to respond tom
- The HTTP method (GET, POST, etc.) to respond to
-
HttpDownstreamGateway
public HttpDownstreamGateway(int port, java.lang.String url, ca.uqac.lif.jerrydog.RequestCallback.Method m, java.lang.String pull_url)
Creates a new downstream gateway.- Parameters:
port
- The TCP port to listen tourl
- The URL to respond tom
- The HTTP method (GET, POST, etc.) to respond topull_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 Detail
-
setPushOnReceive
public HttpDownstreamGateway setPushOnReceive(boolean b)
-
start
public void start() throws ca.uqac.lif.cep.ProcessorException
- Overrides:
start
in classca.uqac.lif.cep.Processor
- Throws:
ca.uqac.lif.cep.ProcessorException
-
stop
public void stop() throws ca.uqac.lif.cep.ProcessorException
- Overrides:
stop
in classca.uqac.lif.cep.Processor
- Throws:
ca.uqac.lif.cep.ProcessorException
-
compute
protected boolean compute(java.lang.Object[] inputs, java.util.Queue<java.lang.Object[]> outputs) throws ca.uqac.lif.cep.ProcessorException
- Specified by:
compute
in classca.uqac.lif.cep.SynchronousProcessor
- Throws:
ca.uqac.lif.cep.ProcessorException
-
duplicate
public HttpDownstreamGateway duplicate(boolean with_state)
- Specified by:
duplicate
in interfaceca.uqac.lif.cep.Duplicable
- Specified by:
duplicate
in classca.uqac.lif.cep.Processor
-
-