CQRSMicroservices.ServiceFabric.WebService.OwinCommunicationListener.OpenAsync C# (CSharp) Method

OpenAsync() public method

Opens the communication listener
public OpenAsync ( CancellationToken cancellationToken ) : Task
cancellationToken System.Threading.CancellationToken The cancellation token.
return Task
    public Task<string> OpenAsync(CancellationToken cancellationToken)
    {
      EndpointResourceDescription serviceEndpoint = _serviceInitializationParameters.CodePackageActivationContext.GetEndpoint(_endpointName);
      int port = serviceEndpoint.Port;
      string appRoot = string.IsNullOrWhiteSpace(_appRoot) ? string.Empty : _appRoot.TrimEnd('/') + '/';

      var statefulServiceInitializationParameters = _serviceInitializationParameters as StatefulServiceInitializationParameters;
      if(statefulServiceInitializationParameters != null)
      {
        _listeningAddress = string.Format(
          CultureInfo.InvariantCulture,
          "http://+:{0}/{1}{2}/{3}/{4}",
          port,
          appRoot,
          statefulServiceInitializationParameters.PartitionId,
          statefulServiceInitializationParameters.ReplicaId,
          Guid.NewGuid());
      }
      else if(_serviceInitializationParameters is StatelessServiceInitializationParameters)
      {
        _listeningAddress = string.Format(CultureInfo.InvariantCulture, "http://+:{0}/{1}", port, appRoot);
      }
      else
      {
        throw new InvalidOperationException();
      }

      _serverHandle = WebApp.Start(_listeningAddress, appBuilder => _startup.Configuration(appBuilder));

      string resultAddress = _listeningAddress.Replace("+", FabricRuntime.GetNodeContext().IPAddressOrFQDN);

      ServiceEventSource.Current.Message("Listening on {0}", resultAddress);
      return Task.FromResult(resultAddress);
    }