USAGE
// TOOLS
// TTCN-3 EXPRESS
// TTCN-3 STUDIO
// C# EXAMPLE
// JAVA EXAMPLE
EXAMPLE USING TTCN-3 AND C#
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 C#
class MyAdapter : Etsi.Ttcn3.SystemAdapter
{
Etsi.Ttcn3.TriPortId SavedPortId;
Etsi.Ttcn3.TriComponentId SavedComponentId;
public override Etsi.Ttcn3.TriStatus triMap (
Etsi.Ttcn3.TriPortId compPortId,
Etsi.Ttcn3.TriPortId tsiPortId
)
{
SavedPortId = tsiPortId;
SavedComponentId = compPortId.getComponent();
return Etsi.Ttcn3.TriStatus.TRI_OK;
}
public override 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();
byte[] bytes = new System.Text.UTF8Encoding().GetBytes("Pong");
msg.setEncodedMessage(bytes);
Etsi.Ttcn3.Framework.GetTriCommunicationTE().triEnqueueMsg (
SavedPortId,
null,
SavedComponentId,
msg
);
}
}
The Codec in C#
class MyCodec : Etsi.Ttcn3.Codec
{
public override Etsi.Ttcn3.Value decode (
Etsi.Ttcn3.TriMessage message,
Etsi.Ttcn3.Type decodingHypothesis
)
{
byte[] 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 override Etsi.Ttcn3.TriMessage encode (
Etsi.Ttcn3.Value value
)
{
Etsi.Ttcn3.CharstringValue R = (Etsi.Ttcn3.CharstringValue) value;
string str = R.getString();
byte[] bytes = new System.Text.UTF8Encoding().GetBytes(str);
Etsi.Ttcn3.TriMessage msg =
Etsi.Ttcn3.Framework.GetFactory().TriMessage();
msg.setEncodedMessage(bytes);
return msg;
}
}
Compiling and Running the Example
ttxp /compile MyModule
csh /target:library /reference:C:\ESPRESSO\ttcn-3\etsi.dll MyAdapter.jsl MyCodec.jsl
ttxp /run MyModule