protected virtual void Dispose(bool disposing) { if (!this.disposed) { // additional clean up before disposing // make sure the ObjectName is not advertised or owned by the bus // between runs these are run regardless we actually don't expect // these names to be owned between runs this is here just in case // a test fails we want to make sure the names are cleared from // the daemon AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); bus.ReleaseName(ObjectName); if (disposing) { busListener.Dispose(); bus.Dispose(); } disposed = true; } }
public void TestFoundLostAdvertisedName() { listenerRegistered = false; foundAdvertisedName = false; lostAdvertisedName = false; // register the bus listener bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); // advertise the name, & see if we find it status = bus.FindAdvertisedName(ObjectName); Assert.Equal(AllJoyn.QStatus.OK, status); AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, foundAdvertisedName); // stop advertising the name, & see if we lose it status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, lostAdvertisedName); }
public bool Connect() { if (sJoinComplete) { return(sJoinComplete); } sJoinCalled = true; // We found a remote bus that is advertising basic service's well-known name so connect to it AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); uint sessionId; Debug.Log("kcwon Client JoinSession sFoundName = " + sFoundName); Debug.Log("kcwon Client JoinSession SERVICE_PORT = " + SERVICE_PORT); AllJoyn.QStatus status = msgBus.JoinSession(sFoundName, SERVICE_PORT, sessionListener, out sessionId, opts); if (status) { serverText += "Client JoinSession SUCCESS (Session id=" + sessionId + ")\n"; Debug.Log("Client JoinSession SUCCESS (Session id=" + sessionId + ")"); sJoinComplete = true; theSessionId = sessionId; } else { serverText += "Client JoinSession failed (status=" + status.ToString() + ")\n"; Debug.Log("Client JoinSession failed (status=" + status.ToString() + ")"); ajNet.manager.connectFail(); } return(sJoinComplete); }
public void TestFoundNameByTransport() { // create bus attachment AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // 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); listenerRegistered = false; foundAdvertisedName = false; nameOwnerChanged = false; transportFound = AllJoyn.TransportMask.None; // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); // advertise the name, & see if we find it status = bus.FindAdvertisedNameByTransport(ObjectName, AllJoyn.TransportMask.Local); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, foundAdvertisedName); Assert.Equal(AllJoyn.TransportMask.Local, transportFound); status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.CancelFindAdvertisedNameByTransport(ObjectName, AllJoyn.TransportMask.Local); Assert.Equal(AllJoyn.QStatus.OK, status); foundAdvertisedName = false; status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(TimeSpan.FromSeconds(1)); Assert.Equal(false, foundAdvertisedName); busListener.Dispose(); bus.Dispose(); }
public void TestSessionJoined() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); /////////////////////////////////////////////////////////// foundAdvertisedNameFlag = false; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; // try to join the session & verify callbacks are called // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); memberOneBus.RegisterBusListener(busListener); // find the advertised name from the "servicebus" status = memberOneBus.FindAdvertisedName(OBJECT_NAME); Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); // try to join & verify that the sessionedJoined callback was called uint sSessionId; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, null, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); hostBus.ReleaseName(OBJECT_NAME); }
public void createAndAdvertiseSession(string name) { AllJoyn.QStatus status = AllJoyn.QStatus.OK; myAdvertisedName = SERVICE_NAME + "._" + name + "_" + msgBus.GlobalGUIDString; 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 " + name + " (" + status + ")\n" + chatText; Debug.Log("Chat Failed to advertise name " + name + " (" + 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."); } }
public void TestFoundLostAdvertisedName() { // create bus attachment AllJoyn.BusAttachment bus = new AllJoyn.BusAttachment("BusListenerTest", true); AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; // 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); listenerRegistered = false; foundAdvertisedName = false; lostAdvertisedName = false; // register the bus listener AllJoyn.BusListener busListener = new TestBusListener(this); bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); // advertise the name, & see if we find it status = bus.FindAdvertisedName(ObjectName); Assert.Equal(AllJoyn.QStatus.OK, status); AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, foundAdvertisedName); // stop advertising the name, & see if we lose it status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, lostAdvertisedName); // TODO: move these into a teardown method? busListener.Dispose(); bus.Dispose(); }
public void AccessorFunctions() { AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); Assert.Equal(AllJoyn.SessionOpts.TrafficType.Messages, opts.Traffic); Assert.False(opts.IsMultipoint); Assert.Equal(AllJoyn.SessionOpts.ProximityType.Any, opts.Proximity); Assert.Equal(AllJoyn.TransportMask.Any, opts.Transports); opts.Traffic = AllJoyn.SessionOpts.TrafficType.RawReliable; Assert.Equal(AllJoyn.SessionOpts.TrafficType.RawReliable, opts.Traffic); opts.IsMultipoint = true; Assert.True(opts.IsMultipoint); opts.Proximity = AllJoyn.SessionOpts.ProximityType.Network; Assert.Equal(AllJoyn.SessionOpts.ProximityType.Network, opts.Proximity); }
public void ConnectToFoundName() { sJoinCalled = true; // We found a remote bus that is advertising basic service's well-known name so connect to it AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); AllJoyn.QStatus status = sMsgBus.JoinSession(sFoundName, SERVICE_PORT, null, out sSessionId, opts); if (status) { clientText += "Client JoinSession SUCCESS (Session id=" + sSessionId + ")\n"; Debug.Log("Client JoinSession SUCCESS (Session id=" + sSessionId + ")"); sJoinComplete = true; } else { clientText += "Client JoinSession failed (status=" + status.ToString() + ")\n"; Debug.Log("Client JoinSession failed (status=" + status.ToString() + ")"); } }
protected override void FoundAdvertisedName(string name, AllJoyn.TransportMask transport, string namePrefix) { Console.WriteLine("FoundAdvertisedName(name=" + name + ", prefix=" + namePrefix + ")"); if (string.Compare(SERVICE_NAME, name) == 0) { // We found a remote bus that is advertising basic service's well-known name so connect to it AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); AllJoyn.QStatus status = sMsgBus.JoinSession(name, SERVICE_PORT, null, out sSessionId, opts); if (status) { Console.WriteLine("JoinSession SUCCESS (Session id={0})", sSessionId); } else { Console.WriteLine("JoinSession failed (status={0})", status.ToString()); } } sJoinComplete = true; }
public void TestFoundNameByTransport() { listenerRegistered = false; foundAdvertisedName = false; nameOwnerChanged = false; transportFound = AllJoyn.TransportMask.None; // register the bus listener bus.RegisterBusListener(busListener); Wait(MaxWaitTime); Assert.Equal(true, listenerRegistered); AllJoyn.SessionOpts sessionOpts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); // advertise the name, & see if we find it status = bus.FindAdvertisedNameByTransport(ObjectName, AllJoyn.TransportMask.Local); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(MaxWaitTime); Assert.Equal(true, foundAdvertisedName); Assert.Equal(AllJoyn.TransportMask.Local, transportFound); status = bus.CancelAdvertisedName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); status = bus.CancelFindAdvertisedNameByTransport(ObjectName, AllJoyn.TransportMask.Local); Assert.Equal(AllJoyn.QStatus.OK, status); foundAdvertisedName = false; status = bus.AdvertiseName(ObjectName, sessionOpts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); Wait(TimeSpan.FromSeconds(1)); Assert.Equal(false, foundAdvertisedName); }
public static void Main(string[] args) { Console.WriteLine("AllJoyn Library version: " + AllJoyn.GetVersion()); Console.WriteLine("AllJoyn Library buildInfo: " + AllJoyn.GetBuildInfo()); // Create message bus sMsgBus = new AllJoyn.BusAttachment("myApp", true); // Add org.alljoyn.Bus.method_sample interface AllJoyn.InterfaceDescription testIntf; AllJoyn.QStatus status = sMsgBus.CreateInterface(INTERFACE_NAME, out testIntf); if (status) { Console.WriteLine("Interface Created."); testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "cat", "ss", "s", "inStr1,inStr2,outStr"); testIntf.Activate(); } else { Console.WriteLine("Failed to create interface 'org.alljoyn.Bus.method_sample'"); } // Create a bus listener sBusListener = new MyBusListener(); if (status) { sMsgBus.RegisterBusListener(sBusListener); Console.WriteLine("BusListener Registered."); } // Set up bus object TestBusObject testObj = new TestBusObject(sMsgBus, SERVICE_PATH); // Start the msg bus if (status) { status = sMsgBus.Start(); if (status) { Console.WriteLine("BusAttachment started."); sMsgBus.RegisterBusObject(testObj); for (int i = 0; i < connectArgs.Length; ++i) { status = sMsgBus.Connect(connectArgs[i]); if (status) { Console.WriteLine("BusAttchement.Connect(" + connectArgs[i] + ") SUCCEDED."); break; } else { Console.WriteLine("BusAttachment.Connect(" + connectArgs[i] + ") failed."); } } if (!status) { Console.WriteLine("BusAttachment.Connect failed."); } } else { Console.WriteLine("BusAttachment.Start failed."); } } // Request name if (status) { status = sMsgBus.RequestName(SERVICE_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); if (!status) { Console.WriteLine("RequestName({0}) failed (status={1})", SERVICE_NAME, status); } } // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, false, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); if (status) { ushort sessionPort = SERVICE_PORT; sSessionPortListener = new MySessionPortListener(); status = sMsgBus.BindSessionPort(ref sessionPort, opts, sSessionPortListener); if (!status) { Console.WriteLine("BindSessionPort failed ({0})", status); } } // Advertise name if (status) { status = sMsgBus.AdvertiseName(SERVICE_NAME, opts.Transports); if (!status) { Console.WriteLine("Failed to advertise name {0} ({1})", SERVICE_NAME, status); } } if (status) { while (true) { System.Threading.Thread.Sleep(1); } } // Dispose of objects now sMsgBus.Dispose(); sBusListener.Dispose(); Console.WriteLine("basic server exiting with status {0} ({1})", status, status.ToString()); }
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."); } }
protected override bool AcceptSessionJoiner(ushort sessionPort, string joiner, AllJoyn.SessionOpts opts) { _sessionTest.acceptSessionJoinerFlag = true; return(true); }
public void RemoveSessionMember() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; /////////////////////////////////////////////////////////// // Setup the session host /////////////////////////////////////////////////////////// SetupHost(); // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, true, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); /////////////////////////////////////////////////////////// // Setup session member one /////////////////////////////////////////////////////////// SetupMemberOne(); // register sessionMemberOne's bus listener AllJoyn.BusListener busListenerMemberOne = new TestBusListener(this); memberOneBus.RegisterBusListener(busListenerMemberOne); // create the session listener AllJoyn.SessionListener sessionListener = new TestSessionListener2(this); /////////////////////////////////////////////////////////// // have sessionMemberOne find and join the session foundAdvertisedNameFlag = false; status = memberOneBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); uint sSessionId; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, sessionListener, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberOne joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // Now have the host leave & verify SessionLost callback is triggered sessionLostReasonFlag = false; reasonMarker = AllJoyn.SessionListener.SessionLostReason.ALLJOYN_SESSIONLOST_INVALID; sessionMemberRemovedFlag = false; hostBus.RemoveSessionMember(sSessionId, memberOneBus.UniqueName); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionLostReason"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionLostReasonFlag); Assert.Equal(AllJoyn.SessionListener.SessionLostReason.ALLJOYN_SESSIONLOST_REMOVED_BY_BINDER, reasonMarker); // SessionMemberRemoved should also be triggered ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberRemoved"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberRemovedFlag); hostBus.Stop(); hostBus.Join(); hostBus.ReleaseName(OBJECT_NAME); memberOneBus.Stop(); memberOneBus.Join(); memberOneBus.Dispose(); hostBus.Dispose(); }
public void TestSessionMemberAddRemove() { AllJoyn.QStatus status = AllJoyn.QStatus.FAIL; sessionMemberAddedFlag = false; // Create session AllJoyn.SessionOpts opts = new AllJoyn.SessionOpts( AllJoyn.SessionOpts.TrafficType.Messages, true, AllJoyn.SessionOpts.ProximityType.Any, AllJoyn.TransportMask.Any); ushort sessionPort = SERVICE_PORT; // create the session port listener AllJoyn.SessionPortListener sessionPortListener = new TestSessionPortListener(this); // bind to the session port status = hostBus.BindSessionPort(ref sessionPort, opts, sessionPortListener); Assert.Equal(AllJoyn.QStatus.OK, status); // request name status = hostBus.RequestName(OBJECT_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); Assert.Equal(AllJoyn.QStatus.OK, status); // Advertise name status = hostBus.AdvertiseName(OBJECT_NAME, opts.Transports); Assert.Equal(AllJoyn.QStatus.OK, status); // register sessionMemberOne's bus listener AllJoyn.BusListener busListenerMemberOne = new TestBusListener(this); memberOneBus.RegisterBusListener(busListenerMemberOne); // create the session listener AllJoyn.SessionListener sessionListener = new TestSessionListener2(this); AllJoyn.BusListener busListenerMemberTwo = new TestBusListener(this); memberTwoBus.RegisterBusListener(busListenerMemberTwo); /////////////////////////////////////////////////////////// // have sessionMemberOne find and join the session foundAdvertisedNameFlag = false; status = memberOneBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); uint sSessionId; acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberOneBus.JoinSession(OBJECT_NAME, SERVICE_PORT, sessionListener, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberOne joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // have session member two find and join the session sessionMemberAddedFlag = false; foundAdvertisedNameFlag = false; status = memberTwoBus.FindAdvertisedName(OBJECT_NAME); // find the advertised name from the "hostbus" Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "FoundAdvertisedName"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, foundAdvertisedNameFlag); acceptSessionJoinerFlag = false; sessionJoinedFlag = false; status = memberTwoBus.JoinSession(OBJECT_NAME, SERVICE_PORT, null, out sSessionId, opts); Assert.Equal(AllJoyn.QStatus.OK, status); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionJoined"); ewh.WaitOne(MaxWaitTime); // verify that sessionMemberTwo joined by checking that the sessionedJoined callback was called Assert.Equal(true, acceptSessionJoinerFlag); Assert.Equal(true, sessionJoinedFlag); /////////////////////////////////////////////////////////// // Now that sessionMemberTwo has joined, the SessionMemberAdded callback should have been triggered ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberAdded"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberAddedFlag); /////////////////////////////////////////////////////////// // Now have sessionMemberTwo leave & verify SessionMemberRemoved callback is triggered sessionMemberRemovedFlag = false; memberTwoBus.LeaveSession(sSessionId); ewh = new EventWaitHandle(false, EventResetMode.AutoReset, "SessionMemberRemoved"); ewh.WaitOne(MaxWaitTime); Assert.Equal(true, sessionMemberRemovedFlag); hostBus.ReleaseName(OBJECT_NAME); }
public BasicServer() { serverText = ""; // Create message bus msgBus = new AllJoyn.BusAttachment("myApp", true); // Add org.alljoyn.Bus.method_sample interface AllJoyn.QStatus status = msgBus.CreateInterface(INTERFACE_NAME, false, out testIntf); if (status) { serverText += "Server Interface Created.\n"; Debug.Log("Server Interface Created."); testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "cat", "ss", "s", "inStr1,inStr2,outStr"); testIntf.Activate(); } else { serverText += "Failed to create interface 'org.alljoyn.Bus.method_sample'\n"; Debug.Log("Failed to create interface 'org.alljoyn.Bus.method_sample'"); } // Create a bus listener busListener = new MyBusListener(); if (status) { msgBus.RegisterBusListener(busListener); serverText += "Server BusListener Registered.\n"; Debug.Log("Server BusListener Registered."); } // Set up bus object testObj = new TestBusObject(msgBus, SERVICE_PATH); // Start the msg bus if (status) { status = msgBus.Start(); if (status) { serverText += "Server BusAttachment started.\n"; Debug.Log("Server BusAttachment started."); msgBus.RegisterBusObject(testObj); for (int i = 0; i < connectArgs.Length; ++i) { status = msgBus.Connect(connectArgs [i]); if (status) { serverText += "BusAttchement.Connect(" + connectArgs [i] + ") SUCCEDED.\n"; Debug.Log("BusAttchement.Connect(" + connectArgs [i] + ") SUCCEDED."); break; } else { serverText += "BusAttachment.Connect(" + connectArgs [i] + ") failed.\n"; Debug.Log("BusAttachment.Connect(" + connectArgs [i] + ") failed."); } } if (!status) { serverText += "BusAttachment.Connect failed.\n"; Debug.Log("BusAttachment.Connect failed."); } } else { serverText += "Server BusAttachment.Start failed.\n"; Debug.Log("Server BusAttachment.Start failed."); } } // Request name if (status) { status = msgBus.RequestName(SERVICE_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); if (!status) { serverText += "Server RequestName(" + SERVICE_NAME + ") failed (status=" + status + ")\n"; Debug.Log("Server RequestName(" + SERVICE_NAME + ") failed (status=" + status + ")"); } } // Create session opts = new AllJoyn.SessionOpts(AllJoyn.SessionOpts.TrafficType.Messages, true, 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) { serverText += "Server BindSessionPort failed (" + status + ")\n"; Debug.Log("Server BindSessionPort failed (" + status + ")"); } } // Advertise name if (status) { status = msgBus.AdvertiseName(SERVICE_NAME, opts.Transports); if (!status) { serverText += "Server Failed to advertise name " + SERVICE_NAME + " (" + status + ")\n"; Debug.Log("Server Failed to advertise name " + SERVICE_NAME + " (" + status + ")"); } } serverText += "Completed BasicService Constructor\n"; Debug.Log("Completed BasicService Constructor"); }
protected override bool AcceptSessionJoiner(ushort sessionPort, string joiner, AllJoyn.SessionOpts opts) { if (sessionPort != SERVICE_PORT) { //Debug.LogError("Rejecting join attempt on unexpected session port " + sessionPort); return(false); } //Debug.LogError("Accepting join session request from " + joiner + //" (opts.proximity=" + opts.Proximity + ", opts.traffic=" + opts.Traffic + //", opts.transports=" + opts.Transports + ")"); return(true); }
protected override bool AcceptSessionJoiner(ushort sessionPort, string joiner, AllJoyn.SessionOpts opts) { if (sessionPort != SERVICE_PORT) { Console.WriteLine("Server Rejecting join attempt on unexpected session port {0}", sessionPort); return(false); } Console.WriteLine("Server Accepting join session request from {0} (opts.proximity={1}, opts.traffic={2}, opts.transports={3})", joiner, opts.Proximity, opts.Traffic, opts.Transports); return(true); }
public void CloseDown() { if (msgBus == null) { return; //no need to clean anything up } AllJoynStarted = false; LeaveSession(); AllJoyn.QStatus status = msgBus.CancelFindAdvertisedName(SERVICE_NAME); if (!status) { chatText = "CancelAdvertisedName failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("CancelAdvertisedName failed status(" + status.ToString() + ")"); } status = msgBus.CancelAdvertisedName(myAdvertisedName, opts.Transports); if (!status) { chatText = "CancelAdvertisedName failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("CancelAdvertisedName failed status(" + status.ToString() + ")"); } status = msgBus.ReleaseName(myAdvertisedName); if (!status) { chatText = "ReleaseName failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("ReleaseName status(" + status.ToString() + ")"); } status = msgBus.UnbindSessionPort(SERVICE_PORT); if (!status) { chatText = "UnbindSessionPort failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("UnbindSessionPort status(" + status.ToString() + ")"); } status = msgBus.Disconnect(connectedVal); if (!status) { chatText = "Disconnect failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("Disconnect status(" + status.ToString() + ")"); } AllJoyn.InterfaceDescription.Member chatMember = testIntf.GetMember("chat"); status = msgBus.UnregisterSignalHandler(this.ChatSignalHandler, chatMember, null); chatMember = null; if (!status) { chatText = "UnregisterSignalHandler failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("UnregisterSignalHandler status(" + status.ToString() + ")"); } if (sessionListener != null) { status = msgBus.SetSessionListener(null, currentSessionId); sessionListener = null; if (!status) { chatText = "SetSessionListener failed status(" + status.ToString() + ")\n" + chatText; Debug.Log("SetSessionListener status(" + status.ToString() + ")"); } } chatText = "No Exceptions(" + status.ToString() + ")\n" + chatText; Debug.Log("No Exceptions(" + status.ToString() + ")"); currentSessionId = 0; currentJoinedSession = null; sFoundName.Clear(); connectedVal = null; msgBus = null; busListener = null; sessionPortListener = null; testObj = null; testIntf = null; opts = null; myAdvertisedName = null; AllJoynStarted = false; AllJoyn.StopAllJoynProcessing(); //Stop processing alljoyn callbacks }
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 BasicServer() { // Create message bus msgBus = new AllJoyn.BusAttachment("myApp", true); // Add org.alljoyn.Bus.method_sample interface AllJoyn.QStatus status = msgBus.CreateInterface(INTERFACE_NAME, false, out testIntf); if (status) { Console.WriteLine("Server Interface Created."); testIntf.AddMember(AllJoyn.Message.Type.MethodCall, "cat", "ss", "s", "inStr1,inStr2,outStr"); testIntf.Activate(); } else { Console.WriteLine("Failed to create interface 'org.alljoyn.Bus.method_sample'"); } // Create a bus listener busListener = new MyBusListener(); if (status) { msgBus.RegisterBusListener(busListener); Console.WriteLine("Server BusListener Registered."); } // Set up bus object testObj = new TestBusObject(msgBus, SERVICE_PATH); // Start the msg bus if (status) { status = msgBus.Start(); if (status) { Console.WriteLine("Server BusAttachment started."); msgBus.RegisterBusObject(testObj); status = msgBus.Connect(connectArgs); if (status) { Console.WriteLine("Server BusAttchement connected to " + connectArgs); } else { Console.WriteLine("Server BusAttachment::Connect(" + connectArgs + ") failed."); } } else { Console.WriteLine("Server BusAttachment.Start failed."); } } // Request name if (status) { status = msgBus.RequestName(SERVICE_NAME, AllJoyn.DBus.NameFlags.ReplaceExisting | AllJoyn.DBus.NameFlags.DoNotQueue); if (!status) { Console.WriteLine("Server RequestName({0}) failed (status={1})", SERVICE_NAME, status); } } // Create session AllJoyn.SessionOpts 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) { Console.WriteLine("Server BindSessionPort failed ({0})", status); } } // Advertise name if (status) { status = msgBus.AdvertiseName(SERVICE_NAME, opts.Transports); if (!status) { Console.WriteLine("Server Failed to advertise name {0} ({1})", SERVICE_NAME, status); } } }
protected override bool AcceptSessionJoiner(ushort sessionPort, string joiner, AllJoyn.SessionOpts opts) { if (sessionPort != SERVICE_PORT) { serverText += "Server Rejecting join attempt on unexpected session port " + sessionPort + "\n"; Debug.Log("Server Rejecting join attempt on unexpected session port " + sessionPort); return(false); } serverText += "Server Accepting join session request from " + joiner + " (opts.proximity=" + opts.Proximity + ", opts.traffic=" + opts.Traffic + ", opts.transports=" + opts.Transports + ")\n"; Debug.Log("Server Accepting join session request from " + joiner + " (opts.proximity=" + opts.Proximity + ", opts.traffic=" + opts.Traffic + ", opts.transports=" + opts.Transports + ")"); return(true); }