Pipeline

Introduction

The FacetScript Language is one of the Atomic Domain Languages (ADLs).  It is a low-level high-performance scripting language natively executed by the A-Stack without any additional compilation besides initial parsing.

List of Commands

FacetScript language, as well as other domain-specific languages used in Atomiton A-Stack stack, is not bound to a specific syntax. Any syntax capable of expressing structure can be used to represent language constructs. Out of the box, both XML and JSON can be used.

Since JSON does not have a concept of attributes, it follows that compiler does not make any distinction between XML elements and attributes either. That is, any XML attribute can be given as an element and any element with text value can be given as an attribute. JSON also does not allow multiple entries of the same name so these must be expressed as JSON arrays.

Recommended syntax to use is XML.


CommandSyntaxExample
ModifyPipeline

<ModifyPipeline Arguments="" .../>

Where Arguments can be one of the Server Pipeline i.e protocol Handler 

WsServerExtensionArgs, etc

This is typically used in <OnOpen> When creating a Facet Instance

<ModifyPipeline Arguments="WsServerExtensionArgs"/>


Two new parameters are now available to better control pipeline lifecycle:

  • AutoCloseTimeout. Can be specified on any pipeline (that is, http pipelines also can have this). For example:

          <ModifyPipeline Arguments="WsServerExtensionArgs" AutoCloseTimeout="PT1M"/>

This will cause the pipeline to automatically close after a specified period of inactivity (e.g. 1 minute). Inactivity is defined as a lack of traffic in either direction on the pipeline. Note that this has nothing to do with any running process[es]. Only actual messages sent back and forth are counted as activity.

  • AutoPingTimeout. Can be specified on WebSocket pipelines only. For example:

        <ModifyPipeline Arguments="WsServerExtensionArgs" AutoPingTimeout="PT30S"/>

This will cause a WS “ping” frame to be automatically sent after a specified period of inactivity (e.g. 30 sec). This may help to keep channels open in strict environments where connections got closed by intermediaries after some inactivity periods (usually 1 min or so)

  • In both cases, either XSD format or raw milliseconds (long) are allowed as the value