#Process Class Example

The following code shows an example of a complete (but small) process class.

  /* Process class that sends one message. */
process class Sender
ports
/* This is the only port; it is used for outgoing messages. */
Out
messages
/* Outgoing message */
Out!Message(String)
variables
init
Send()()
methods
/* Send one message */
Send()()
Out!Message("Hello World")


The first line process class Sender starts the process class definition and declares the name of the class as Sender. This process class does not inherit from another class. This would have been indicated with the construct extends SomeClass following the first line. extends is a keyword and SomeClass is the nae of a process class from which it will inherit. This class needs to be defined in the same poosl file, or in a file that is being included. ports Out declares that instances of this class have one communication port called Out. More ports can be defined using a comma-separated list.

The message interface is defined by the part.

  messages
/* Outgoing message */
Out!Message(String)


It defines in this case, a single message. It is a message send (!) on port Out with the message name Message and it includes a single parameter, which will be a data object of type String.

The section variables declares the instance variables of the process class. This class has none.

  init
Send()()


The init section defines which of the methods of the process class will be called immediately after the process is instantiated. In this case Send()(). It follows the syntax of any other method call, but return parameters are not allowed here. The second pair of parentheses is always empty. In this example no parameters are passed to the method either.

  methods
/* Send one message */
Send()()
Out!Message("Hello World")


The last section defines the methods of the process class. It starts with the keyword methods, followed by a list of method definitions. In this case only one method, called Send is defined. This simple method has only one statement, a send statement. Note that it conforms to the declared message interface.

Note that there is no explicit termination symbol or keyword to delineate the end of the process class definition. It can be immediately followed by another class definition, or other elements of the model syntax.