162 lines
3.0 KiB
HTML
162 lines
3.0 KiB
HTML
<h2>Comments</h2>
|
||
<pre><code>// Single line comment
|
||
/* Multi-line
|
||
comment */</code></pre>
|
||
|
||
<h2>Strings</h2>
|
||
<pre><code>"foo \"bar\" baz";
|
||
'foo \'bar\' baz'</code></pre>
|
||
|
||
<h2>Numbers</h2>
|
||
<pre><code>42
|
||
42L
|
||
1.2e3
|
||
0.1E-4
|
||
0.2e+1
|
||
</code></pre>
|
||
|
||
<h2>Full example</h2>
|
||
<pre><code>include "console.iol"
|
||
|
||
type HubType: void {
|
||
.sid: undefined
|
||
.nodes[1,*] : NodeType
|
||
}
|
||
|
||
type NodeType: void {
|
||
.sid: string
|
||
.node: string
|
||
.load?: int
|
||
}
|
||
|
||
type NetType: HubType | NodeType
|
||
|
||
interface NetInterface {
|
||
OneWay: start( string ), addElement( NetType ), removeElement( NetType ), quit( void )
|
||
RequestResponse: showElements( void )( NetType ) throws SomeFault
|
||
}
|
||
|
||
type LogType: void {
|
||
.message: string
|
||
}
|
||
|
||
interface LoggerInterface {
|
||
RequestResponse: log( LogType )( void )
|
||
}
|
||
|
||
outputPort LoggerService {
|
||
Interfaces: LoggerInterface
|
||
}
|
||
|
||
embedded {
|
||
Jolie: "logger.ol" in LoggerService
|
||
}
|
||
|
||
type AuthenticationData: void {
|
||
.key:string
|
||
}
|
||
|
||
interface extender AuthInterfaceExtender {
|
||
OneWay: *(AuthenticationData)
|
||
}
|
||
|
||
service SubService
|
||
{
|
||
Interfaces: NetInterface
|
||
|
||
main
|
||
{
|
||
println@Console( "I do nothing" )()
|
||
}
|
||
}
|
||
|
||
inputPort ExtLogger {
|
||
Location: "socket://localhost:9000"
|
||
Protocol: sodep
|
||
Interfaces: LoggerInterface
|
||
Aggregates: LoggerService with AuthInterfaceExtender
|
||
}
|
||
|
||
courier ExtLogger {
|
||
[interface LoggerInterface( request )] {
|
||
if ( key == "secret" ){
|
||
forward ( request )
|
||
}
|
||
}
|
||
}
|
||
|
||
inputPort In {
|
||
Location: "socket://localhost:8000"
|
||
Protocol: http {
|
||
.debug = true;
|
||
.debug.showContent = true
|
||
}
|
||
Interfaces: NetInterface
|
||
Aggregates: SubService,
|
||
LoggerService
|
||
Redirects: A => SubService,
|
||
B => SubService
|
||
}
|
||
|
||
cset {
|
||
sid: HubType.sid NodeType.sid
|
||
}
|
||
|
||
execution{ concurrent }
|
||
|
||
define netmodule {
|
||
if( request.load == 0 || request.load < 1 &&
|
||
request.load <= 2 || request.load >= 3 &&
|
||
request.load > 4 || request.load%4 == 2
|
||
) {
|
||
scope( scopeName ) {
|
||
// inline comment
|
||
install( MyFault => println@Console( "Something \"Went\" Wrong" + ' but it\'s ok' )() );
|
||
/*
|
||
* Multi-line
|
||
* Comment
|
||
*/
|
||
install( this => cH; println@Console( "Something went wrong: " + ^load )() );
|
||
install( default => comp( scopeName ); println@Console( "Something went wrong" )() );
|
||
load -> request.( "load" );
|
||
{ ++load | load++ | --load | load-- };
|
||
throw( MyFault )
|
||
}
|
||
} else {
|
||
foreach ( node -> request.nodes ) {
|
||
with( node ){
|
||
while( .load != 100 ) {
|
||
.load++
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
main
|
||
{
|
||
start( sid );
|
||
synchronized( unneededSync ){
|
||
csets.sid = sid;
|
||
undef( sid )
|
||
};
|
||
provide
|
||
[ addElement( request ) ]{
|
||
if( request instanceof NodeType ) {
|
||
netmodule
|
||
}
|
||
}
|
||
[ removeElement() ]
|
||
[ showElements()( response ){
|
||
/*
|
||
* assemble response
|
||
*/
|
||
nullProcess
|
||
}]{
|
||
// log the request
|
||
log@LoggerService( new )();
|
||
log @ LoggerService( new )()
|
||
}
|
||
until
|
||
[ quit() ]{ exit }
|
||
}</code></pre> |