Ejemplo n.º 1
0
        public void Load(string collectionName, CallbackFunction.Load<IList<JsonDocument>> callback)
        {
            Guard.Assert(() => !string.IsNullOrEmpty(collectionName));
            Guard.Assert(() => callback != null);

            SynchronizationContext context = SynchronizationContext.Current;

            IndexSession.Query("Raven/DocumentsByEntityName", new IndexQuery {Query = string.Format("Tag:{0}", collectionName)}, null, (result) =>
                                                                                                                                           {
                                                                                                                                               var documents = new List<JsonDocument>();

                                                                                                                                               if (result.IsSuccess)
                                                                                                                                               {
                                                                                                                                                   var jsonSerializer = new JsonSerializer();
                                                                                                                                                   documents =
                                                                                                                                                       result.Data.Results.Select(
                                                                                                                                                           document =>
                                                                                                                                                           (JsonDocument) jsonSerializer.Deserialize(document.CreateReader(), typeof (JsonDocument))).
                                                                                                                                                           ToList();
                                                                                                                                               }

                                                                                                                                               var loadResponse = new LoadResponse<IList<JsonDocument>>
                                                                                                                                                                      {
                                                                                                                                                                          Data = documents,
                                                                                                                                                                          Exception = result.Exception,
                                                                                                                                                                          StatusCode = result.StatusCode
                                                                                                                                                                      };

                                                                                                                                               context.Post(delegate { callback.Invoke(loadResponse); },
                                                                                                                                                            null);
                                                                                                                                           });
        }
Ejemplo n.º 2
0
        public static LoadResponse Load(BinaryReader reader, SaveType saveType)
        {
            /* 0 - Depersist object table. */
            uint rootId    = 0;
            bool rootFound = false;
            Dictionary <uint, ISaveable> objectTable = new Dictionary <uint, ISaveable>();

            int count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                uint   objectId = reader.ReadUInt32();
                String assemblyQualifiedTypeName = reader.ReadString();
                bool   isRoot = reader.ReadBoolean();
                if (isRoot && rootFound)
                {
                    throw new NotSupportedException("More than one root object defined in the save file!");
                }
                else if (isRoot)
                {
                    rootFound = true;
                    rootId    = objectId;
                }

                ISaveable loadedObject = constructType(assemblyQualifiedTypeName, objectId);
                loadedObject.Load(reader, saveType);

                objectTable.Add(loadedObject.GetId(), loadedObject);
            }

            if (rootFound == false)
            {
                throw new NotSupportedException("No root object defined in the save file!");
            }

            /* 1 - Inflate all objects */
            inflateObjects(objectTable, saveType);

            /* 2 - Construct the result object */
            List <ISaveable> values = new List <ISaveable>();

            foreach (ISaveable saveable in objectTable.Values)
            {
                values.Add(saveable);
            }

            LoadResponse response = new LoadResponse();

            response.root    = objectTable[rootId];
            response.objects = values;

            /* 3 - Return the response object */
            return(response);
        }
Ejemplo n.º 3
0
        public void LoadPackage(string package, string version, string tarballPath)
        {
            if (_loadedPackages.Contains(package))
            {
                return;
            }

            _logger.LogDebug($"Loading package {package}@{version}...");
            _loadedPackages.Add(package);

            LoadResponse response = Load(package, version, tarballPath);
        }
Ejemplo n.º 4
0
        protected override void Load(BusinessContext context)
        {
            LoadRequest loadRequest = context.Request as LoadRequest;
            bool        forceBase   = loadRequest.Parameters.GetValue <bool>(EventHelper.FORCE_BASE_PARAM, false);

            if (!forceBase)
            {
                LoadResponse response = new LoadResponse();
                EntityObject entity   = EventHelper.PrerpareLoadEventRequest(loadRequest);
                response.EntityObject = entity;
                context.SetResponse(response);
            }
            else
            {
                base.Load(context);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Executes the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        public void Execute(BusinessContext context)
        {
            switch (context.GetMethod())
            {
            case RequestMethod.Load:
                if (context.GetTargetPrimaryKeyId().HasValue)
                {
                    EntityObject item = LoadEntityObject(context.GetTargetMetaClassName(), context.GetTargetPrimaryKeyId().Value);

                    if (item != null)
                    {
                        LoadResponse response = new LoadResponse(item);

                        context.SetResponse(response);
                    }
                }
                break;

            case RequestMethod.List:
            {
                // Filters Not Implemented
                ListResponse response = context.Response as ListResponse;

                if (response != null)
                {
                    EntityObject[] items = LoadEntityObjects(context.GetTargetMetaClassName(), ((ListRequest)context.Request).Filters);

                    if (items.Length > 0)
                    {
                        List <EntityObject> newArray = new List <EntityObject>(response.EntityObjects.Length + items.Length);

                        newArray.AddRange(response.EntityObjects);
                        newArray.AddRange(items);

                        // TODO: Sorting Not Implemented

                        response.EntityObjects = newArray.ToArray();
                    }
                }
            }
            break;
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Executes the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        public void Execute(BusinessContext context)
        {
            switch (context.GetMethod())
            {
                case RequestMethod.Load:
                    if (context.GetTargetPrimaryKeyId().HasValue)
                    {
                        EntityObject item = LoadEntityObject(context.GetTargetMetaClassName(), context.GetTargetPrimaryKeyId().Value);

                        if (item != null)
                        {
                            LoadResponse response = new LoadResponse(item);

                            context.SetResponse(response);
                        }
                    }
                    break;
                case RequestMethod.List:
                    {
                        // Filters Not Implemented
                        ListResponse response = context.Response as ListResponse;

                        if (response != null)
                        {
                            EntityObject[] items = LoadEntityObjects(context.GetTargetMetaClassName(), ((ListRequest)context.Request).Filters);

                            if (items.Length > 0)
                            {
                                List<EntityObject> newArray = new List<EntityObject>(response.EntityObjects.Length + items.Length);

                                newArray.AddRange(response.EntityObjects);
                                newArray.AddRange(items);

                                // TODO: Sorting Not Implemented

                                response.EntityObjects = newArray.ToArray();
                            }
                        }
                    }
                    break;
            }
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Функция основной работы теста, передаваемая на поток
        /// </summary>
        public void Callback()
        {
            try
            {
                LoadRequest loader = new LoadRequest(1, LoadRequest.Controllers.acc);
                Random      rand   = new Random(DateTime.Now.Millisecond);
                double      number = rand.NextDouble();
                for (int i = 0; i < _entries; i++)
                {
                    if (number > 1)
                    {
                        number -= 1.0f;
                    }
                    else
                    {
                        number *= 1.073;
                    }
                    loader.AddData(DateTime.Now.AddSeconds(-i), number);
                    if (i % 100 == 0 && _verbose)
                    {
                        VerboseMessage(string.Format("datagen: RunId={2} TestId={1} Generated={0} Total={3}", i, TestId, RunId, _entries));
                    }
                }
                DateTime    startTime = DateTime.Now;
                HttpRequest http      = new HttpRequest(_host, _port, _chunked)
                {
                    Debug     = _debug,
                    KeepAlive = _keepAlive
                };

                http.Post("/api/v1/load", loader);
                http.SendHeader();
                while (true)
                {
                    bool flag = false;
                    if (_chunked)
                    {
                        int count = rand.Next(_minSendingData, _maxSendingData);
                        if (_verbose)
                        {
                            DebugMessage(string.Format("send: RunId={3} TestId={4} Sent={2} Current={0} Total={1}",
                                                       http.ChunkedPosition,
                                                       http.ContentLength,
                                                       count < http.ContentLength ? count : http.ContentLength,
                                                       RunId,
                                                       TestId));
                        }

                        flag = http.Send(count);
                    }
                    else
                    {
                        flag = http.Send();
                    }
                    if (flag)
                    {
                        break;
                    }
                    System.Threading.Thread.Sleep(rand.Next(_minSleepTime, _maxSleepTime));
                }

                LoadResponse loadResponse = http.Response <LoadResponse>();
                TimeSpan     endTime      = DateTime.Now - startTime;

                ResultMessage(string.Format("result: RunId={5} TestId={3} Success={0} StatusCode={1} Status={2} Time={4}ms",
                                            loadResponse.Success,
                                            (int)http.StatusCode,
                                            http.StatusCode,
                                            TestId,
                                            endTime.TotalMilliseconds,
                                            RunId));
            }
            catch (Exception e)
            {
                ExceptionMessage(e);
            }
        }
Ejemplo n.º 8
0
        private void StatisticsGet_Callback(HttpJsonRequest request, IAsyncResult result, CallbackFunction.Load<DatabaseStatistics> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;
            NameValueCollection headers;
            string json = GetResponseStream(request.HttpWebRequest, result, out statusCode, out exception, out headers);

            var statistics = this.StatisticsMapper.Map(json);

            var loadResponse = new LoadResponse<DatabaseStatistics>()
                                   {
                                       Data = statistics,
                                       Exception = exception,
                                       StatusCode = statusCode
                                   };

            context.Post(delegate { callback.Invoke(loadResponse); }, null);
        }
Ejemplo n.º 9
0
        private void AttachmentGetAll_Callback(HttpJsonRequest request, IAsyncResult result, CallbackFunction.Load<IList<KeyValuePair<string, Attachment>>> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;
            NameValueCollection headers;

            string json = GetResponseStream(request.HttpWebRequest, result, out statusCode, out exception, out headers);

            JArray array = JArray.Parse(json);

            var attachments = new List<KeyValuePair<string, Attachment>>();
            string key;

            foreach (JToken attachment in array)
            {
                attachments.Add(AttachmentMapper.Map(attachment));
            }

            var loadResponse = new LoadResponse<IList<KeyValuePair<string, Attachment>>>
                                   {
                                       Data = attachments,
                                       StatusCode = statusCode,
                                       Exception = exception
                                   };

            context.Post(
                delegate { callback.Invoke(loadResponse); },
                null);
        }
Ejemplo n.º 10
0
        private void AttachmentGet_Callback(string key, HttpJsonRequest request, IAsyncResult result,
                                            CallbackFunction.Load<KeyValuePair<string, Attachment>> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;

            Attachment attachment = AttachmentMapper.Map(key, request.HttpWebRequest, result, out statusCode,
                                                         out exception);

            var loadResponse = new LoadResponse<KeyValuePair<string, Attachment>>
                                   {
                                       Data = new KeyValuePair<string, Attachment>(key, attachment),
                                       StatusCode = statusCode,
                                       Exception = exception
                                   };

            context.Post(
                delegate { callback.Invoke(loadResponse); },
                null);
        }
Ejemplo n.º 11
0
        private void IndexGetAll_Callback(IDictionary<string, IndexDefinition> existingEntities, HttpJsonRequest request,
                                          IAsyncResult result,
                                          CallbackFunction.Load<IDictionary<string, IndexDefinition>> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;
            NameValueCollection headers;
            string json = GetResponseStream(request.HttpWebRequest, result, out statusCode, out exception, out headers);
            JArray array = JArray.Parse(json);

            var responseResult = new Dictionary<string, IndexDefinition>();
            if (exception == null)
            {
                var entities = array.Select(index => IndexMapper.Map(index.ToString()));

                responseResult = responseResult.Concat(entities).ToDictionary(x => x.Key, y => y.Value);

                if (existingEntities != null)
                {
                    responseResult.Concat(existingEntities);
                }
            }

            var loadResponse = new LoadResponse<IDictionary<string, IndexDefinition>>
                                   {
                                       Data = responseResult,
                                       StatusCode = statusCode,
                                       Exception = exception
                                   };

            context.Post(
                delegate { callback.Invoke(loadResponse); },
                null);
        }
Ejemplo n.º 12
0
        private void IndexGet_Callback(string name, HttpJsonRequest request, IAsyncResult result,
                                       CallbackFunction.Load<KeyValuePair<string, IndexDefinition>> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;
            NameValueCollection headers;
            string json = GetResponseStream(request.HttpWebRequest, result, out statusCode, out exception, out headers);

            var index = new KeyValuePair<string, IndexDefinition>();
            if (exception == null)
            {
                index = IndexMapper.Map(json);
            }

            var loadResponse = new LoadResponse<KeyValuePair<string, IndexDefinition>>
                                   {
                                       Data = index,
                                       StatusCode = statusCode,
                                       Exception = exception
                                   };

            context.Post(
                delegate { callback.Invoke(loadResponse); },
                null);
        }
Ejemplo n.º 13
0
        private void DocumentGetAll_Callback(HttpJsonRequest request, IAsyncResult result,
                                             CallbackFunction.Load<IList<JsonDocument>> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;
            NameValueCollection headers;
            string json = GetResponseStream(request.HttpWebRequest, result, out statusCode, out exception, out headers);
            JArray array = JArray.Parse(json);

            var responseResult = new List<JsonDocument>();

            if (exception == null)
            {
                responseResult = array.Select(jsonDocument => DocumentMapper.Map(jsonDocument.ToString())).ToList();
            }

            var loadResponse = new LoadResponse<IList<JsonDocument>>
                                   {
                                       Data = responseResult,
                                       StatusCode = statusCode,
                                       Exception = exception
                                   };

            context.Post(
                delegate { callback.Invoke(loadResponse); },
                null);
        }
Ejemplo n.º 14
0
        private void DocumentGet_Callback(string key, HttpJsonRequest request, IAsyncResult result,
                                          CallbackFunction.Load<JsonDocument> callback)
        {
            SynchronizationContext context = GetContext(request);
            DeleteContext(request);

            HttpStatusCode statusCode;
            Exception exception;
            NameValueCollection headers;
            string json = GetResponseStream(request.HttpWebRequest, result, out statusCode, out exception, out headers);

            JsonDocument document = null;
            if (exception == null)
            {
                document = DocumentMapper.Map(json);
                document.Metadata = headers.FilterHeaders(isServerDocument: false);
                document.Key = key;
            }

            var loadResponse = new LoadResponse<JsonDocument>
                                   {
                                       Data = document,
                                       StatusCode = statusCode,
                                       Exception = exception
                                   };

            context.Post(
                delegate { callback.Invoke(loadResponse); },
                null);
        }