protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        // Initialize Automapper
        AutomapBootstrap.InitializeMap();
        var host = new ServiceHost(serviceType, baseAddresses);

        return(host);
    }
        public ServerSideMultithreadBuilder(Guid loaderId, Action finishAction
                                            , Action <string> onCriticalError, CancellationToken cancellationToken
                                            , Func <object> buildAction)
        {
            _finishAction         = finishAction;
            _onCriticalError      = onCriticalError;
            LoaderId              = loaderId;
            _cancellationToken    = cancellationToken;
            CompressedProtoResult = new ConcurrentStack <MemoryStream>();

            AutomapBootstrap.InitializeMap();

            Task.Factory.StartNew(() =>
            {
                try
                {
                    var compressed = buildAction() as MemoryStream;
                    if (compressed == null || !compressed.CanRead)
                    {
                        return;
                    }

                    var lenght = compressed.Length;

                    //Делим готовый отчет на равные партии, ждем запросов партий от клиента
                    foreach (var range in Partitioner.Create(0, lenght, packetSize).GetDynamicPartitions())
                    {
                        var bufferResult = new byte[range.Item2 - range.Item1];
                        compressed.Read(bufferResult, 0, (int)(range.Item2 - range.Item1));

                        CompressedProtoResult.Push(new MemoryStream(bufferResult));
                    }
                }
                catch (Exception ex)
                {
                    if (_onCriticalError != null)
                    {
                        _onCriticalError(ex.Message);
                    }
                }
                finally
                {
                    try
                    {
                        if (_finishAction != null)
                        {
                            _finishAction();
                        }
                    }
                    catch
                    {
                    }

                    _finishAction = null;
                }
            },
                                  _cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Default);
        }
    public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection <ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
    {
        if (_initialised)      // already init'd per this AppDomain
        {
            return;
        }

        AutomapBootstrap.InitializeMap();
        _initialised = true;
    }
예제 #4
0
 public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase,
                                  Collection <ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
 {
     AutomapBootstrap.InitializeMap();
 }