private static void Main(string[] args) { var calculatorImp = new CalculatorImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer <ICalculator>(calculatorImp, dispatcherThread.Dispatcher, IPAddress.Any, 62005, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); var multiCastAddress = IPAddress.Parse("239.0.0.222"); var advertiser = new ServiceAdvertiser <ICalculator>(multiCastAddress, 2222, TimeSpan.FromMilliseconds(1000)); advertiser.OnAdvertisement += dt => Console.WriteLine("[{0}]", dt); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; advertiser.Dispose(); }
public ServiceAdvertiser GetAdvertiser(WFDSvcWrapperHandle handle) { ThrowIfDisposed(); ServiceAdvertiser advertiser = advertiserCollection[handle]; if (advertiser == null) { throw new Exception(String.Format(CultureInfo.InvariantCulture, "Advertiser not found for handle={0}", handle)); } return(advertiser); }
public WFDSvcWrapperHandle GetLastAdvertiserSession( ServiceAdvertiser advertiser, bool autoAccept ) { WiFiDirectTestLogger.Log("Waiting for Advertiser to get session connection (Advertiser={0})", advertiser.Handle); if (autoAccept) { advertiser.WaitForAutoAcceptSessionConnected(); } else { advertiser.WaitForSessionRequested(); } WFDSvcWrapperHandle sessionHandle = advertiser.LastConnectedSession; return(sessionHandle); }
public void UnPublishService(ServiceAdvertiser advertiser, bool fRemove = false) { ThrowIfDisposed(); WFDSvcWrapperHandle handle = advertiser.Handle; WiFiDirectTestLogger.Log("Unpublishing advertiser (Advertiser={0} ServiceName={1})", handle, advertiser.Advertiser.ServiceName); advertiser.Advertiser.Stop(); if (fRemove) { WiFiDirectTestLogger.Log("Removing advertiser (Advertiser={0} ServiceName={1})", handle, advertiser.Advertiser.ServiceName); advertiser.Dispose(); advertiserCollection.Remove(handle); } WiFiDirectTestLogger.Log("Unpublish service done (Advertiser={0})", handle); }
/// <summary> /// Stop and deinitialize native Obj-C side gracefully. /// </summary> private static void StopAndDeinitializeNative() { #if (UNITY_IOS || UNITY_TVOS || UNITY_STANDALONE_OSX) && (!UNITY_EDITOR || UNITY_EDITOR_OSX || UNITY_EDITOR_OVERRIDE) if (_isDeinitialized) { return; } Session.StopSession(); ServiceAdvertiser.StopAdvertising(); CustomServiceAdvertiser.StopAdvertising(); PeerDiscovery.CloseBrowser(); CustomPeerDiscovery.StopDiscovery(); NativeMethods.Events.UMC_UMCUnityEvents_SetEventListener(null); IntPtr error; #if !UNITY_EDITOR_OSX && (UNITY_IOS || UNITY_TVOS) NativeMethods.UMCMediatorFacade.SetViewController(IntPtr.Zero, out error); #else NativeMethods.UMCMediatorFacade.SetMainWindow(IntPtr.Zero, out error); #endif _isDeinitialized = true; #endif }
private static void Main(string[] args) { var calculatorImp = new CalculatorImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer<ICalculator>(calculatorImp, dispatcherThread.Dispatcher, IPAddress.Any, 62005, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); var multiCastAddress = IPAddress.Parse("239.0.0.222"); var advertiser = new ServiceAdvertiser<ICalculator>(multiCastAddress, 2222, TimeSpan.FromMilliseconds(1000)); advertiser.OnAdvertisement += dt => Console.WriteLine("[{0}]", dt); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; advertiser.Dispose(); }
/// <summary> /// Start advertising a service /// </summary> /// <param name="serviceName"></param> /// <param name="autoAccept"></param> /// <param name="preferGO"></param> /// <param name="configMethods"></param> /// <param name="status"></param> /// <param name="customStatus"></param> /// <param name="serviceInfo"></param> /// <param name="deferredServiceInfo"></param> /// <returns></returns> public WFDSvcWrapperHandle PublishService( string serviceName, bool autoAccept = true, bool preferGO = true, List <WiFiDirectServiceConfigurationMethod> configMethods = null, WiFiDirectServiceStatus status = WiFiDirectServiceStatus.Available, uint customStatus = 0, string serviceInfo = "", string deferredServiceInfo = "", List <String> prefixList = null ) { ThrowIfDisposed(); WiFiDirectTestLogger.Log("Creating Service: \"{0}\"", serviceName); WiFiDirectServiceAdvertiser advertiser = new WiFiDirectServiceAdvertiser(serviceName); advertiser.AutoAcceptSession = autoAccept; advertiser.PreferGroupOwnerMode = preferGO; advertiser.ServiceStatus = status; advertiser.CustomServiceStatusCode = customStatus; if (serviceInfo != null && serviceInfo.Length > 0) { using (var serviceInfoDataWriter = new Windows.Storage.Streams.DataWriter(new Windows.Storage.Streams.InMemoryRandomAccessStream())) { serviceInfoDataWriter.WriteString(serviceInfo); advertiser.ServiceInfo = serviceInfoDataWriter.DetachBuffer(); } WiFiDirectTestLogger.Log("Included Service Info: \"{0}\"", WiFiDirectTestUtilities.GetTruncatedString(serviceInfo)); } else { advertiser.ServiceInfo = null; } if (deferredServiceInfo != null && deferredServiceInfo.Length > 0) { using (var deferredSessionInfoDataWriter = new Windows.Storage.Streams.DataWriter(new Windows.Storage.Streams.InMemoryRandomAccessStream())) { deferredSessionInfoDataWriter.WriteString(deferredServiceInfo); advertiser.DeferredSessionInfo = deferredSessionInfoDataWriter.DetachBuffer(); } WiFiDirectTestLogger.Log("Included Session Info: \"{0}\"", WiFiDirectTestUtilities.GetTruncatedString(deferredServiceInfo)); } else { advertiser.DeferredSessionInfo = null; } if (configMethods != null) { advertiser.PreferredConfigurationMethods.Clear(); foreach (var configMethod in configMethods) { advertiser.PreferredConfigurationMethods.Add(configMethod); WiFiDirectTestLogger.Log("Added config method {0}", configMethod.ToString()); } } if (prefixList != null && prefixList.Count > 0) { advertiser.ServiceNamePrefixes.Clear(); foreach (var prefix in prefixList) { advertiser.ServiceNamePrefixes.Add(prefix); WiFiDirectTestLogger.Log("Added prefix {0}", prefix); } } ServiceAdvertiser advertiserWrapper = new ServiceAdvertiser(advertiser, this, this, this); advertiserCollection.Add(advertiserWrapper.Handle, advertiserWrapper); WiFiDirectTestLogger.Log("Starting Service: \"{1}\" (Advertiser={0})", advertiserWrapper.Handle, serviceName); advertiser.Start(); return(advertiserWrapper.Handle); }