The TTCN-3 Module
module MyModule {
type port Port message { inout charstring }
type component Comp { port Port P }
testcase Testcase() runs on Comp
{
log("sending Ping");
P.send(charstring:"Ping") ;
var charstring answer;
P.receive(charstring:?) -> value answer ;
log("received " & answer);
}
control {
execute( Testcase() );
}
}
The Adapter in JAVA
class MyAdapter extends Etsi.Ttcn3.SystemAdapter
{
Etsi.Ttcn3.TriPortId SavedPortId;
Etsi.Ttcn3.TriComponentId SavedComponentId;
public Etsi.Ttcn3.TriStatus triMap (
Etsi.Ttcn3.TriPortId compPortId,
Etsi.Ttcn3.TriPortId tsiPortId
)
{
SavedPortId = tsiPortId;
SavedComponentId = compPortId.getComponent();
return Etsi.Ttcn3.TriStatus.TRI_OK;
}
public Etsi.Ttcn3.TriStatus triSend (
Etsi.Ttcn3.TriComponentId componentId,
Etsi.Ttcn3.TriPortId tsiPortId,
Etsi.Ttcn3.TriAddress address,
Etsi.Ttcn3.TriMessage sendMessage
)
{
Respond();
return Etsi.Ttcn3.TriStatus.TRI_OK;
}
void Respond()
{
Etsi.Ttcn3.TriMessage msg =
Etsi.Ttcn3.Framework.GetFactory().TriMessage();
ubyte[] bytes = new System.Text.UTF8Encoding().GetBytes("Pong");
msg.setEncodedMessage(bytes);
Etsi.Ttcn3.Framework.GetTriCommunicationTE().triEnqueueMsg (
SavedPortId,
null,
SavedComponentId,
msg
);
}
}
The Codec in JAVA
class MyCodec extends Etsi.Ttcn3.Codec
{
public Etsi.Ttcn3.Value decode (
Etsi.Ttcn3.TriMessage message,
Etsi.Ttcn3.Type decodingHypothesis
)
{
ubyte[] bytes = message.getEncodedMessage();
String s = new System.Text.UTF8Encoding().GetString(bytes);
Etsi.Ttcn3.CharstringValue value =
Etsi.Ttcn3.Framework.GetFactory().CharstringValue();
value.setString(s);
return value;
}
public Etsi.Ttcn3.TriMessage encode (
Etsi.Ttcn3.Value value
)
{
Etsi.Ttcn3.CharstringValue R = (Etsi.Ttcn3.CharstringValue) value;
String str = R.getString();
ubyte[] bytes = new System.Text.UTF8Encoding().GetBytes(str);
Etsi.Ttcn3.TriMessage msg =
Etsi.Ttcn3.Framework.GetFactory().TriMessage();
msg.setEncodedMessage(bytes);
return msg;
}
}
Compiling und Running the Example
ttxp /compile MyModule
vjc /target:library /reference:C:\ESPRESSO\ttcn-3\etsi.dll MyAdapter.jsl MyCodec.jsl
ttxp /run MyModule