public void RegisterUnregisterSessionlessSignals() { AllJoyn.InterfaceDescription testIntf; Assert.Equal(AllJoyn.QStatus.OK, bus.CreateInterface("org.alljoyn.test.signalstest", out testIntf)); Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddSignal("testSignal", "s", "newName")); testIntf.Activate(); TestBusObject testObj = new TestBusObject("/org/alljoyn/test/signal"); Assert.Equal(AllJoyn.QStatus.OK, testObj.AddInterface(testIntf)); Assert.Equal(AllJoyn.QStatus.OK, bus.RegisterBusObject(testObj)); AllJoyn.InterfaceDescription.Member mySignalMember = testIntf.GetMember("testSignal"); Assert.Equal(AllJoyn.QStatus.OK, bus.AddMatch("type='signal',sessionless='t',interface='org.alljoyn.test.signalstest,member='testSignal'")); AllJoyn.Message msg = new AllJoyn.Message(bus); AllJoyn.MsgArg arg = new AllJoyn.MsgArg(); Assert.Equal(AllJoyn.QStatus.OK, arg.Set("s", "AllJoyn")); Assert.Equal(AllJoyn.QStatus.OK, testObj.SendTestSignal("", 0, mySignalMember, arg, 0, AllJoyn.ALLJOYN_FLAG_SESSIONLESS, msg)); Assert.Equal(AllJoyn.QStatus.OK, testObj.CancelSessionlessMessage(msg.CallSerial)); Assert.Equal(AllJoyn.QStatus.OK, testObj.SendTestSignal("", 0, mySignalMember, arg, 0, AllJoyn.ALLJOYN_FLAG_SESSIONLESS, msg)); Assert.Equal(AllJoyn.QStatus.OK, testObj.CancelSessionlessMessage(msg)); }
public void RegisterUnregisterSessionlessSignals() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // create+start+connect bus attachment AllJoyn.BusAttachment bus = null; bus = new AllJoyn.BusAttachment("SignalsTest", true); Assert.NotNull(bus); status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); AllJoyn.InterfaceDescription testIntf; Assert.Equal(AllJoyn.QStatus.OK, bus.CreateInterface("org.alljoyn.test.signalstest", out testIntf)); Assert.Equal(AllJoyn.QStatus.OK, testIntf.AddSignal("testSignal", "s", "newName")); testIntf.Activate(); TestBusObject testObj = new TestBusObject("/org/alljoyn/test/signal"); Assert.Equal(AllJoyn.QStatus.OK, testObj.AddInterface(testIntf)); Assert.Equal(AllJoyn.QStatus.OK, bus.RegisterBusObject(testObj)); AllJoyn.InterfaceDescription.Member mySignalMember = testIntf.GetMember("testSignal"); Assert.Equal(AllJoyn.QStatus.OK, bus.AddMatch("type='signal',sessionless='t',interface='org.alljoyn.test.signalstest,member='testSignal'")); AllJoyn.Message msg = new AllJoyn.Message(bus); AllJoyn.MsgArg arg = new AllJoyn.MsgArg(); Assert.Equal(AllJoyn.QStatus.OK, arg.Set("s", "AllJoyn")); Assert.Equal(AllJoyn.QStatus.OK, testObj.SendTestSignal("", 0, mySignalMember, arg, 0, AllJoyn.ALLJOYN_FLAG_SESSIONLESS, msg)); Assert.Equal(AllJoyn.QStatus.OK, testObj.CancelSessionlessMessage(msg.CallSerial)); Assert.Equal(AllJoyn.QStatus.OK, testObj.SendTestSignal("", 0, mySignalMember, arg, 0, AllJoyn.ALLJOYN_FLAG_SESSIONLESS, msg)); Assert.Equal(AllJoyn.QStatus.OK, testObj.CancelSessionlessMessage(msg)); }
public void UnregisterSignalHandler() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // create bus attachment AllJoyn.BusAttachment bus = null; bus = new AllJoyn.BusAttachment("BusAttachmentTest", true); Assert.NotNull(bus); // create the interface description AllJoyn.InterfaceDescription testIntf = null; status = bus.CreateInterface("org.alljoyn.test.BusAttachment", out testIntf); Assert.Equal(AllJoyn.QStatus.OK, status); Assert.NotNull(testIntf); // add the signal member to the interface status = testIntf.AddSignal("testSignal", "s", "msg", 0); Assert.Equal(AllJoyn.QStatus.OK, status); // activate the interface testIntf.Activate(); // start the bus attachment status = bus.Start(); Assert.Equal(AllJoyn.QStatus.OK, status); // connect to the bus status = bus.Connect(AllJoynTestCommon.GetConnectSpec()); Assert.Equal(AllJoyn.QStatus.OK, status); // create the bus object & // add the interface to the bus object TestBusObject testBusObject = new TestBusObject(bus, "/test"); bus.RegisterBusObject(testBusObject); // get the signal member from the interface description AllJoyn.InterfaceDescription.Member testSignalMember = testIntf.GetMember("testSignal"); // register both signal handlers status = bus.RegisterSignalHandler(this.TestSignalHandlerOne, testSignalMember, null); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.RegisterSignalHandler(this.TestSignalHandlerTwo, testSignalMember, null); Assert.Equal(AllJoyn.QStatus.OK, status); // add match for the signal status = bus.AddMatch("type='signal',member='testSignal'"); Assert.Equal(AllJoyn.QStatus.OK, status); handledSignalsOne = false; handledSignalsTwo = false; signalOneMsg = null; signalTwoMsg = null; // send a signal testBusObject.SendTestSignal("test msg"); WaitEventOne(TimeSpan.FromSeconds(2)); WaitEventTwo(TimeSpan.FromSeconds(2)); // make sure that both handlers got the signal Assert.Equal(true, handledSignalsOne); Assert.Equal("test msg", signalOneMsg); Assert.Equal(true, handledSignalsTwo); Assert.Equal("test msg", signalTwoMsg); // now unregister one handler & make sure it doesn't receive the signal handledSignalsOne = false; handledSignalsTwo = false; signalOneMsg = null; signalTwoMsg = null; status = bus.UnregisterSignalHandler(this.TestSignalHandlerOne, testSignalMember, null); Assert.Equal(AllJoyn.QStatus.OK, status); // send another signal testBusObject.SendTestSignal("test msg"); // wait to see if we receive the signal WaitEventTwo(TimeSpan.FromSeconds(2)); // make sure that only the second handler got the signal Assert.Equal(false, handledSignalsOne); Assert.Null(signalOneMsg); Assert.Equal(true, handledSignalsTwo); Assert.Equal("test msg", signalTwoMsg); // TODO: move these into a teardown method? bus.Dispose(); }
public void StartUp() { chatText = "Starting AllJoyn\n\n\n" + chatText; AllJoynStarted = true; AllJoyn.QStatus status = AllJoyn.QStatus.OK; { chatText = "Creating BusAttachment\n" + chatText; // Create message bus msgBus = new AllJoyn.BusAttachment("myApp", true); // Add org.alljoyn.Bus.method_sample interface status = msgBus.CreateInterface(INTERFACE_NAME, false, out testIntf); if (status) { chatText = "Chat Interface Created.\n" + chatText; Debug.Log("Chat Interface Created."); testIntf.AddSignal("chat", "s", "msg", 0); testIntf.Activate(); } else { chatText = "Failed to create interface 'org.alljoyn.Bus.chat'\n" + chatText; Debug.Log("Failed to create interface 'org.alljoyn.Bus.chat'"); } // Create a bus listener busListener = new MyBusListener(); if (status) { msgBus.RegisterBusListener(busListener); chatText = "Chat BusListener Registered.\n" + chatText; Debug.Log("Chat BusListener Registered."); } if (testObj == null) { testObj = new TestBusObject(msgBus, SERVICE_PATH); } // Start the msg bus if (status) { status = msgBus.Start(); if (status) { chatText = "Chat BusAttachment started.\n" + chatText; Debug.Log("Chat BusAttachment started."); msgBus.RegisterBusObject(testObj); for (int i = 0; i < connectArgs.Length; ++i) { chatText = "Chat Connect trying: " + connectArgs[i] + "\n" + chatText; Debug.Log("Chat Connect trying: " + connectArgs[i]); status = msgBus.Connect(connectArgs[i]); if (status) { chatText = "BusAttchement.Connect(" + connectArgs[i] + ") SUCCEDED.\n" + chatText; Debug.Log("BusAttchement.Connect(" + connectArgs[i] + ") SUCCEDED."); connectedVal = connectArgs[i]; break; } else { chatText = "BusAttachment.Connect(" + connectArgs[i] + ") failed.\n" + chatText; Debug.Log("BusAttachment.Connect(" + connectArgs[i] + ") failed."); } } if (!status) { chatText = "BusAttachment.Connect failed.\n" + chatText; Debug.Log("BusAttachment.Connect failed."); } } else { chatText = "Chat BusAttachment.Start failed.\n" + chatText; Debug.Log("Chat BusAttachment.Start failed."); } } myAdvertisedName = SERVICE_NAME + "._" + msgBus.GlobalGUIDString; AllJoyn.InterfaceDescription.Member chatMember = testIntf.GetMember("chat"); status = msgBus.RegisterSignalHandler(this.ChatSignalHandler, chatMember, null); if (!status) { chatText = "Chat Failed to add signal handler " + status + "\n" + chatText; Debug.Log("Chat Failed to add signal handler " + status); } else { chatText = "Chat add signal handler " + status + "\n" + chatText; Debug.Log("Chat add signal handler " + status); } status = msgBus.AddMatch("type='signal',member='chat'"); if (!status) { chatText = "Chat Failed to add Match " + status.ToString() + "\n" + chatText; Debug.Log("Chat Failed to add Match " + status.ToString()); } else { chatText = "Chat add Match " + status.ToString() + "\n" + chatText; Debug.Log("Chat add Match " + status.ToString()); } } // Request name if (status) { status = msgBus.RequestName(myAdvertisedName, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); if (!status) { chatText = "Chat RequestName(" + SERVICE_NAME + ") failed (status=" + status + ")\n" + chatText; Debug.Log("Chat RequestName(" + SERVICE_NAME + ") failed (status=" + status + ")"); } } // Create session opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); if (status) { ushort sessionPort = SERVICE_PORT; sessionPortListener = new MySessionPortListener(); status = msgBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); if (!status || sessionPort != SERVICE_PORT) { chatText = "Chat BindSessionPort failed (" + status + ")\n" + chatText; Debug.Log("Chat BindSessionPort failed (" + status + ")"); } chatText = "Chat BindSessionPort on port (" + sessionPort + ")\n" + chatText; Debug.Log("Chat BBindSessionPort on port (" + sessionPort + ")");; } // Advertise name if (status) { status = msgBus.AdvertiseName(myAdvertisedName, opts.Transports); if (!status) { chatText = "Chat Failed to advertise name " + myAdvertisedName + " (" + status + ")\n" + chatText; Debug.Log("Chat Failed to advertise name " + myAdvertisedName + " (" + status + ")"); } } status = msgBus.FindAdvertisedName(SERVICE_NAME); if (!status) { chatText = "Chat org.alljoyn.Bus.FindAdvertisedName failed.\n" + chatText; Debug.Log("Chat org.alljoyn.Bus.FindAdvertisedName failed."); } Debug.Log("Completed ChatService Constructor"); }
public void StartUp() { //Debug.LogError("Starting AllJoyn"); AllJoynStarted = true; AllJoyn.QStatus status = AllJoyn.QStatus.OK; { //Debug.LogError("Creating BusAttachment"); msgBus = new AllJoyn.BusAttachment("myApp", true); status = msgBus.CreateInterface(INTERFACE_NAME, false, out testIntf); if (status) { //Debug.LogError("Interface Created."); testIntf.AddSignal("player", "sddddbb", "playerPoints", 0); testIntf.AddSignal("enemyInit", "ssdddd", "enemyPoints", 0); testIntf.AddSignal("enemyAgro", "sss", "enemyPoints1", 0); testIntf.AddSignal("enemyHP", "ssd", "enemyPoints2", 0); testIntf.Activate(); } else { //Debug.LogError("Failed to create interface 'org.alljoyn.Bus.chat'"); } busListener = new MyBusListener(); if (status) { msgBus.RegisterBusListener(busListener); //Debug.LogError("BusListener Registered."); } if (testObj == null) { testObj = new TestBusObject(msgBus, SERVICE_PATH); } if (status) { status = msgBus.Start(); if (status) { //Debug.LogError("BusAttachment started."); msgBus.RegisterBusObject(testObj); for (int i = 0; i < connectArgs.Length; ++i) { //Debug.LogError("Connect trying: " + connectArgs[i]); status = msgBus.Connect(connectArgs[i]); if (status) { //Debug.LogError("BusAttchement.Connect(" + connectArgs[i] + ") SUCCEDED."); connectedVal = connectArgs[i]; break; } else { //Debug.LogError("BusAttachment.Connect(" + connectArgs[i] + ") failed."); } } if (!status) { //Debug.LogError("BusAttachment.Connect failed."); } } else { //Debug.LogError("BusAttachment.Start failed."); } } myAdvertisedName = SERVICE_NAME + "._" + msgBus.GlobalGUIDString + playerNick; AllJoyn.InterfaceDescription.Member playerMember = testIntf.GetMember("player"); status = msgBus.RegisterSignalHandler(this.PlayerSignalHandler, playerMember, null); if (!status) { //Debug.LogError("Failed to add vector signal handler " + status); } else { //Debug.LogError("add vector signal handler " + status); } AllJoyn.InterfaceDescription.Member enemyInitMember = testIntf.GetMember("enemyInit"); status = msgBus.RegisterSignalHandler(this.EnemyInitSignalHandler, enemyInitMember, null); if (!status) { Debug.LogError("Failed to add vector signal handler " + status); } else { //Debug.LogError("add vector signal handler " + status); } AllJoyn.InterfaceDescription.Member enemyAgroMember = testIntf.GetMember("enemyAgro"); status = msgBus.RegisterSignalHandler(this.EnemyAgroSignalHandler, enemyAgroMember, null); if (!status) { Debug.LogError("Failed to add vector signal handler " + status); } else { //Debug.LogError("add vector signal handler " + status); } AllJoyn.InterfaceDescription.Member enemyHPMember = testIntf.GetMember("enemyHP"); status = msgBus.RegisterSignalHandler(this.EnemyHPSignalHandler, enemyHPMember, null); if (!status) { Debug.LogError("Failed to add vector signal handler " + status); } else { //Debug.LogError("add vector signal handler " + status); } status = msgBus.AddMatch("type='signal',interface='org.alljoyn.bus.multi'"); if (!status) { Debug.LogError("Failed to add vector Match " + status.ToString()); } else { //Debug.LogError("add vector Match " + status.ToString()); } } if (status) { status = msgBus.RequestName(myAdvertisedName, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); if (!status) { Debug.LogError("RequestName(" + SERVICE_NAME + ") failed (status=" + status + ")"); } } opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); if (status) { ushort sessionPort = SERVICE_PORT; sessionPortListener = new MySessionPortListener(this); status = msgBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); if (!status || sessionPort != SERVICE_PORT) { Debug.LogError("BindSessionPort failed (" + status + ")"); } //Debug.LogError("BBindSessionPort on port (" + sessionPort + ")"); ; } if (status) { status = msgBus.AdvertiseName(myAdvertisedName, opts.Transports); if (!status) { Debug.LogError("Failed to advertise name " + myAdvertisedName + " (" + status + ")"); } } status = msgBus.FindAdvertisedName(SERVICE_NAME); if (!status) { Debug.LogError("org.alljoyn.Bus.FindAdvertisedName failed."); } }