public void GetArgs()
{
//SetUp Service
//start service BusAttachment
AllJoyn.BusAttachment serviceBus = new AllJoyn.BusAttachment("MessageTestService", true);
Assert.Equal(AllJoyn.QStatus.OK, serviceBus.Start());
Assert.Equal(AllJoyn.QStatus.OK, serviceBus.Connect(AllJoynTestCommon.GetConnectSpec()));
TestBusListener testBusListener = new TestBusListener(this);
serviceBus.RegisterBusListener(testBusListener);
//Create and activate the service Interface
AllJoyn.InterfaceDescription testIntf = null;
Assert.Equal(AllJoyn.QStatus.OK, serviceBus.CreateInterface(INTERFACE_NAME, out testIntf));
Assert.NotNull(testIntf);
Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "ping", "s", "s", "in,out"));
testIntf.Activate();
//create and register BusObject
MessageTestBusObject busObj = new MessageTestBusObject(OBJECT_PATH);
busObj.AddInterface(testIntf);
AllJoyn.InterfaceDescription.Member ping;
ping = testIntf.GetMember("ping");
Assert.NotNull(ping);
Assert.Equal(AllJoyn.QStatus.OK, busObj.AddMethodHandler(ping, busObj.Ping));
Assert.Equal(AllJoyn.QStatus.OK, serviceBus.RegisterBusObject(busObj));
_nameOwnerChangedFlag = false;
Assert.Equal(AllJoyn.QStatus.OK, serviceBus.RequestName(WELLKNOWN_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting |
AllJoyn.DBus.NameFlags.DoNotQueue |
AllJoyn.DBus.NameFlags.AllowReplacement));
Wait(TimeSpan.FromSeconds(2));
Assert.True(_nameOwnerChangedFlag);
//SetUp Client
//start client BusAttachment
AllJoyn.BusAttachment clientBus = new AllJoyn.BusAttachment("MessageTestClient", true);
Assert.Equal(AllJoyn.QStatus.OK, clientBus.Start());
Assert.Equal(AllJoyn.QStatus.OK, clientBus.Connect(AllJoynTestCommon.GetConnectSpec()));
AllJoyn.ProxyBusObject proxyObj = new AllJoyn.ProxyBusObject(clientBus, WELLKNOWN_NAME, OBJECT_PATH, 0);
Assert.Equal(AllJoyn.QStatus.OK, proxyObj.IntrospectRemoteObject());
AllJoyn.Message reply = new AllJoyn.Message(clientBus);
AllJoyn.MsgArg input = new AllJoyn.MsgArg("s", "AllJoyn");
proxyObj.MethodCall(INTERFACE_NAME, "ping", input, reply, 25000, 0);
//Actual tests for GetArg/GetArgs
// call using GetArg specifying the array index
Assert.Equal("AllJoyn", (string)reply.GetArg(0));
// use the this[] operator call to get the MsgArg
Assert.Equal("AllJoyn", (string)(reply[0]));
// Return the MsgArgs note could be multiple values
AllJoyn.MsgArg replyArg = reply.GetArgs();
Assert.Equal(1, replyArg.Length);
Assert.Equal("AllJoyn", (string)replyArg);
// Parse the Message Drectly
object replyString;
Assert.Equal(AllJoyn.QStatus.OK, reply.GetArgs("s", out replyString));
Assert.Equal("AllJoyn", (string)replyString);
serviceBus.UnregisterBusListener(testBusListener);
reply.Dispose();
input.Dispose();
proxyObj.Dispose();
clientBus.Dispose();
testBusListener.Dispose();
busObj.Dispose();
serviceBus.Dispose();
}