/// <summary> /// Terminates the service application by discarding the alljoyn object /// </summary> private async void TearDown() { try { await busAtt.DisconnectAsync(BasicServiceGlobals.ConnectSpec); await busAtt.StopAsync(); this.OutputLine("Basic Service has been exited."); this.OutputLine(string.Empty); } catch (Exception ex) { this.OutputLine("An error was produced while closing the service: " + ex.Message.ToString()); } busObject = null; busAtt = null; }
/// <summary> /// Established the service functionality of the application by creating and registering /// </summary> /// <param name="sender">UI control which signaled the click event</param> /// <param name="e">arguments associated with the click event</param> private void Button_RunClick(object sender, RoutedEventArgs e) { if (busObject == null && busAtt == null) { Task task = new Task(async () => { try { busAtt = new BusAttachment("ServiceApp", true, 4); busObject = new BasicServiceBusObject(busAtt); BasicServiceBusListener busListener = new BasicServiceBusListener(busAtt); OutputLine("BusAttachment, BusListener and BusObject Created."); busAtt.RegisterBusListener(busListener); OutputLine("BusListener Registered."); busAtt.Start(); await busAtt.ConnectAsync(BasicServiceGlobals.ConnectSpec); OutputLine("Bundled Daemon Registered."); OutputLine("BusAttachment Connected to " + BasicServiceGlobals.ConnectSpec + "."); SessionOpts sessionOpts = new SessionOpts( BasicServiceGlobals.SessionProps.TrType, BasicServiceGlobals.SessionProps.IsMultiPoint, BasicServiceGlobals.SessionProps.PrType, BasicServiceGlobals.SessionProps.TmType); try { ushort[] portOut = new ushort[1]; busAtt.BindSessionPort(BasicServiceGlobals.SessionProps.SessionPort, portOut, sessionOpts, busListener); busAtt.RequestName(BasicServiceGlobals.WellKnownServiceName, (int)RequestNameType.DBUS_NAME_DO_NOT_QUEUE); busAtt.AdvertiseName(BasicServiceGlobals.WellKnownServiceName, TransportMaskType.TRANSPORT_ANY); OutputLine("Name is Being Advertised as: " + BasicServiceGlobals.WellKnownServiceName); } catch (COMException ce) { QStatus s = AllJoynException.GetErrorCode(ce.HResult); OutputLine("Error occurred while trying to establish the service over the bus."); TearDown(); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("Errors were produced while trying to establish the service."); QStatus status = AllJoynException.GetErrorCode(ex.HResult); busObject = null; busAtt = null; } }); task.Start(); } }