/// <summary> /// Запуск приложения-сервера передачи котировок. /// </summary> internal void Run() { UdpClient sender = new UdpClient(); IPAddress remoteAddress = IPAddress.Parse(_endPointSettings.IPAddress); IPEndPoint endPoint = new IPEndPoint(remoteAddress, _endPointSettings.Port); int counter = 0; while (true) { //получаем цену котировок double price = _quotesService.GetPrice(); //отправляемая информацию о котировке QuoteDTO package = new QuoteDTO() { Price = price, Index = counter++ }; byte[] buffer = JsonDataSerializer.Serialize(package); sender.Send(buffer, buffer.Length, endPoint); } }
private void SerializeHeader(MemoryStream fileHeaderStream, IBlobFileMetadata fileMetadata, long contentLength, DateTime versionTimeCreated) { if (fileHeaderStream == null) { throw new ArgumentNullException("fileHeaderStream"); } if (fileMetadata == null) { throw new ArgumentNullException("fileMetadata"); } //текущая версия заголовка = BlobConsts.BlobFile.FileHeaderCurrentVersion JsonBlobFileHeaderV1 header = new JsonBlobFileHeaderV1() { ContentAbsoluteStartPosition = this.BlobStream.Position, ContentLength = contentLength, FileName = fileMetadata.Name, FolderUrl = fileMetadata.FolderMetadata.Url, UniqueID = fileMetadata.UniqueID, TimeCreated = versionTimeCreated, VersionUniqueID = fileMetadata.VersionUniqueID, }; JsonDataSerializer.Serialize(fileHeaderStream, header); }
public TestRuntimeManager(JsonDataSerializer dataSerializer, IProcessHelper processHelper, JSProcess process) { this.dataSerializer = dataSerializer; this.jsProcess = process; this.versionCheckComplete = new ManualResetEventSlim(); this.executionComplete = new ManualResetEventSlim(); }
public void TestSerialization() { var resources = new List <LocalizationResource> { new LocalizationResource() { Id = 1, Author = "migration-tool", ResourceKey = "test-key", ModificationDate = new DateTime(2016, 1, 1), Translations = new List <LocalizationResourceTranslation> { new LocalizationResourceTranslation { Id = 11, Language = "en", Value = "test value" } } } }; var serializer = new JsonDataSerializer(); var result = serializer.Serialize(resources); Assert.NotNull(result); }
public void TestSerialization() { var resources = new List<LocalizationResource> { new LocalizationResource() { Id = 1, Author = "migration-tool", ResourceKey = "test-key", ModificationDate = new DateTime(2016, 1, 1), Translations = new List<LocalizationResourceTranslation> { new LocalizationResourceTranslation { Id = 11, Language = "en", Value = "test value" } } } }; var serializer = new JsonDataSerializer(); var result = serializer.Serialize(resources); Assert.NotNull(result); }
public SerializationHelper(GetSerializer getSerializer) { _bonsaiSerializer = getSerializer(SerializeConstantFactory, DeserializeConstantFactory); _dataSerializer = (JsonDataSerializer)DataSerializer.Create(_bonsaiSerializer); _genericSerialize = _dataSerializer.GetType().GetMethod(nameof(DataSerializer.Serialize)); _genericDeserialize = _dataSerializer.GetType().GetMethod(nameof(DataSerializer.Deserialize)); }
private Blob CreateBlob() { //создание нового блоба string name = string.Format("{0}_{1}", BlobConsts.Blobs.Name, Guid.NewGuid().ToString(), BlobConsts.Blobs.Extension); IBlobMetadata blobMetadata = this.DataAdapter.BlobMetadataAdapter.CreateBlob(name, this.ID); this.DataAdapter.BlobMetadataAdapter.SaveBlob(blobMetadata); Blob newBlob = new Blob(this, blobMetadata); DateTime timeCreated = DateTime.Now; //создаем физический файл блоба //т.к. это первичное созадние файла, то "шарить" файл не нужно //пишем в него заголовок и закрываем поток using (FileStream fs = newBlob.File.Open(FileMode.Append, FileAccess.Write, FileShare.None)) { if (fs.Position != 0) { throw new Exception(string.Format("Невозможно записать заголовок блоба в непустой блоб. Заголовок блоба должен быть записан в начало блоба!")); } //записываем заголовок в начало блоба byte[] allBlobHeaderBytes = new byte[BlobConsts.Blobs.BlobHeaderSize]; //фиксированные байты заголовка блоба byte[] fixedHeaderBytes = Encoding.UTF8.GetBytes(BlobConsts.Blobs.BlobSystemHeader); Array.Copy(fixedHeaderBytes, 0, allBlobHeaderBytes, 0, fixedHeaderBytes.Length); int destinationOffset = fixedHeaderBytes.Length; //версия блоба int blobHeaderVersion = BlobConsts.Blobs.BlobHeaderCurrentVersion; byte[] blobHeaderVersionBytes = BitConverter.GetBytes(blobHeaderVersion); Array.Copy(blobHeaderVersionBytes, 0, allBlobHeaderBytes, destinationOffset, blobHeaderVersionBytes.Length); destinationOffset += blobHeaderVersionBytes.Length; BlobeHeaderV1 blobHeader = new BlobeHeaderV1() { ID = newBlob.ID, Name = newBlob.File.Name, FullName = newBlob.File.FullName, ContainerID = newBlob.Metadata.ContainerID, MachineName = Environment.MachineName, TimeCreated = timeCreated }; string blobHeaderJson = JsonDataSerializer.SerializeJson(blobHeader); byte[] blobHeaderBytes = Encoding.UTF8.GetBytes(blobHeaderJson); Array.Copy(blobHeaderBytes, 0, allBlobHeaderBytes, destinationOffset, blobHeaderBytes.Length); //запись всего заголовка блоба в файл блоба fs.Write(allBlobHeaderBytes, 0, allBlobHeaderBytes.Length); } return(newBlob); }
internal object GetFileHeader(long startPosition) { if (startPosition < 0) { throw new ArgumentNullException("startPosition"); } //читаем системный заголовок this.BlobStream.Seek(startPosition, SeekOrigin.Begin); byte[] systemHeaderBytes = new byte[BlobStreamAdapter.SystemHeaderLength]; this.BlobStream.Read(systemHeaderBytes, 0, BlobStreamAdapter.SystemHeaderLength); //проверка целостности системного заголовка for (int i = 0; i < SystemHeaderFixedBytes.Length; i++) { if (SystemHeaderFixedBytes[i] != systemHeaderBytes[i]) { throw new Exception(string.Format("Битый заголовок файла (позиция {0}). Не удалось прочитать системный заголовок файла.", i)); } } //целостность системного заголовока не нарушена, значит можно поднять заголовок файла //сразу за фиксированной частью системного заголовка есть 4 байта, в которых указана длина заголовка файла //длина заголовка файла int headerLength = BitConverter.ToInt32(systemHeaderBytes, SystemHeaderFixedBytes.Length); if (headerLength < 1) { throw new Exception(string.Format("Не удалось считать длину заголовка файла")); } byte[] headerBytes = new byte[headerLength]; this.BlobStream.Seek(startPosition + BlobStreamAdapter.SystemHeaderLength, SeekOrigin.Begin); this.BlobStream.Read(headerBytes, 0, headerBytes.Length); int headerVersionNumber = BitConverter.ToInt32(systemHeaderBytes, SystemHeaderFixedBytes.Length + BlobConsts.BlobFile.HeaderSizeBytesLength + BlobConsts.BlobFile.AllHashBytesLength); object header = null; using (MemoryStream headerStream = new MemoryStream(headerBytes)) { headerStream.Position = 0; JsonBlobFileHeaderV1 typedHeader = JsonDataSerializer.Deserialize <JsonBlobFileHeaderV1>(headerStream); typedHeader.HeaderLength = headerLength; if (typedHeader.ContentLength == 0) { //длина на момент записи заголовка не была вычислина (потоковая передача) //смотрим эту длину по системному заголовку long contentLengBytesAbsolutePosition = FileStructure.GetContentLengBytesAbsolutePosition(); typedHeader.ContentLength = BitConverter.ToInt64(systemHeaderBytes, (int)contentLengBytesAbsolutePosition); } header = typedHeader; } return(header); }
static AssetManager() { DataSerializer = new JsonDataSerializer(); LoadedAudioFiles = new Dictionary <string, AudioClip>(); LoadedTextures = new Dictionary <string, Texture2D>(); LoadedSprites = new Dictionary <string, Sprite>(); LoadedAnimations = new Dictionary <string, Data.Animation>(); }
//http://stackoverflow.com/questions/12739114/asp-net-mvc-4-async-child-action private TResponse Send <TResponse>(object request, string operationType) { HttpResponseMessage response = SendOneWay(request, operationType); using (Stream stream = response.Content.ReadAsStreamAsync().Result) { return(JsonDataSerializer.ToValue <TResponse>(stream)); } }
public ViewResult ImportResources(bool?previewImport, HttpPostedFileBase importFile, bool?showMenu) { var model = new ImportResourcesViewModel { ShowMenu = showMenu ?? false }; if (importFile == null || importFile.ContentLength == 0) { return(View("ImportResources", model)); } var fileInfo = new FileInfo(importFile.FileName); if (fileInfo.Extension.ToLower() != ".json") { ModelState.AddModelError("file", "Uploaded file has different extension. Json file expected"); return(View("ImportResources", model)); } var importer = new ResourceImporter(); var serializer = new JsonDataSerializer(); var streamReader = new StreamReader(importFile.InputStream); var fileContent = streamReader.ReadToEnd(); try { var newResources = serializer.Deserialize <IEnumerable <LocalizationResource> >(fileContent); if (previewImport.HasValue && previewImport.Value) { var changes = importer.DetectChanges(newResources, new GetAllResources.Query().Execute()); var availableLanguagesQuery = new AvailableLanguages.Query(); var languages = availableLanguagesQuery.Execute(); var previewModel = new PreviewImportResourcesViewModel(changes, showMenu ?? false, languages); return(View("ImportPreview", previewModel)); } var result = importer.Import(newResources, previewImport ?? true); ViewData["LocalizationProvider_ImportResult"] = result; } catch (Exception e) { ModelState.AddModelError("importFailed", $"Import failed! Reason: {e.Message}"); } return(View("ImportResources", model)); }
public FileResult ExportResources() { var stream = new MemoryStream(); var writer = new StreamWriter(stream, Encoding.UTF8); var serializer = new JsonDataSerializer(); var resources = new GetAllResources.Query().Execute(); writer.Write(serializer.Serialize(resources)); writer.Flush(); stream.Position = 0; return(File(stream, "application/json", $"localization-resources-{DateTime.Now.ToString("yyyyMMdd")}.json")); }
private async Task <TResponse> ProcessWithResponseAsync <TResponse>( object request, string operationType) { string urlRequest = request.ToUrl(_serviceAddress, operationType); using (HttpClient client = CreateHttpClient()) { HttpResponseMessage response; switch (operationType) { case OperationType.Get: response = await client.GetAsync(urlRequest); break; case OperationType.Post: response = await client.PostAsync(urlRequest, CreateContent(request)); break; case OperationType.Put: response = await client.PutAsync(urlRequest, CreateContent(request)); break; case OperationType.Delete: response = await client.DeleteAsync(urlRequest); break; default: string errorMessage = string.Format("OperationType {0} with Response return is absent", operationType); throw Error.InvalidOperation(errorMessage); } if (!response.IsSuccessStatusCode) { throw new WebFaultException(response.StatusCode); } using (Stream stream = await response.Content.ReadAsStreamAsync()) { return(JsonDataSerializer.ToValue <TResponse>(stream)); } } }
public void JsonSerializationAndDeserlializationTest() { DataContext dataContext = new DataContext(); IDataFiller dataFiller = new DataManualFiller(); dataFiller.InsertData(dataContext); JsonDataSerializer.Serialize(dataContext, pathToFile); DataContext deserializedDataContext = JsonDataSerializer.Deserialize <DataContext>(pathToFile); CollectionAssert.AreEqual(dataContext.Clients, deserializedDataContext.Clients); CollectionAssert.AreEqual(dataContext.Cars, deserializedDataContext.Cars); CollectionAssert.AreEqual(dataContext.WarehouseItems, deserializedDataContext.WarehouseItems); CollectionAssert.AreEqual(dataContext.BoughtCars, deserializedDataContext.BoughtCars); CollectionAssert.AreEqual(dataContext.SoldCars, deserializedDataContext.SoldCars); }
protected IDataSerializer CreateDataSerializer() { // choose what serializer you want to use IDataSerializer dataSerializer = null; switch (m_serializerType) { case DataSerializerType.JsonUtility: dataSerializer = new JsonDataSerializer(); m_adapterType = DataSerializationAdapterType.Concrete; break; case DataSerializerType.Odin: dataSerializer = new OdinDataSerializer(m_dataFormat); break; } return(dataSerializer); }
public void Initialize() { var serializer = new JsonDataSerializer(); var persistence = new PlayFabPersistence(_key, serializer); _dataLayer = new PersistenceDataLayer(persistence); Deferred def = GameFoundationSdk.Initialize(_dataLayer); if (def.isDone) { if (def.isFulfilled) { _onInitOrLoadComplete?.Invoke(); OnInitOrLoadComplete?.Invoke(); } else { Debug.LogError(def.error.Message); _onInitOrLoadFail?.Invoke(); } } else { IEnumerator Routine(Deferred aDef) { yield return(aDef.Wait()); if (aDef.isFulfilled) { _onInitOrLoadComplete?.Invoke(); OnInitOrLoadComplete?.Invoke(); } else { Debug.LogError(aDef.error.Message); _onInitOrLoadFail?.Invoke(); } } StartCoroutine(Routine(def)); } }
private object GetFileHeader(byte[] contentWithHeadersData) { if (contentWithHeadersData == null) { throw new ArgumentNullException("fileData"); } object header = null; //сразу за системным заголовком 4 байта, в которых указана длина заголовка файла //длина заголовка файла int headerLength = BitConverter.ToInt32(contentWithHeadersData, SystemHeaderFixedBytes.Length); if (headerLength < 1) { throw new Exception(string.Format("Не удалось считать длину заголовка файла")); } byte[] headerBytes = new byte[headerLength]; Array.Copy(contentWithHeadersData, BlobStreamAdapter.SystemHeaderLength, headerBytes, 0, headerLength); int headerVersionNumber = BitConverter.ToInt32(contentWithHeadersData, SystemHeaderFixedBytes.Length + BlobConsts.BlobFile.HeaderSizeBytesLength + BlobConsts.BlobFile.AllHashBytesLength); using (MemoryStream headerStream = new MemoryStream(headerBytes)) { headerStream.Position = 0; JsonBlobFileHeaderV1 typedHeader = JsonDataSerializer.Deserialize <JsonBlobFileHeaderV1>(headerStream); typedHeader.HeaderLength = headerLength; if (typedHeader.ContentLength == 0) { //длина на момент записи заголовка не была вычислина (потоковая передача) //смотрим эту длину по системному заголовку long contentLengBytesAbsolutePosition = FileStructure.GetContentLengBytesAbsolutePosition(); typedHeader.ContentLength = BitConverter.ToInt64(contentWithHeadersData, (int)contentLengBytesAbsolutePosition); } header = typedHeader; } return(header); }
/// <summary> /// Получение котировок. /// </summary> /// <param name="state"></param> private void GetQuotes(object state) { try { IPEndPoint endPoint = null; byte[] result = _client.Receive(ref endPoint); QuoteDTO quote = JsonDataSerializer.Deserialize <QuoteDTO>(result); //обновление статистики Statistics.UpdateStatistics(quote.Price); } catch (SocketException ex) { OnSocketError(ex.SocketErrorCode); } catch (Exception ex) { throw new Exception($"В процессе получения котировок произошла неожиданная ошибка: {ex}"); } }
private Task <TResponse> SendAsync4 <TResponse>(object request, string operationType) { string urlRequest = request.ToUrl(_serviceAddress, operationType); Task <HttpResponseMessage> response; switch (operationType) { case OperationType.Get: response = _httpClient.GetAsync(urlRequest); break; case OperationType.Post: response = _httpClient.PostAsync(urlRequest, CreateContent(request)); break; case OperationType.Put: response = _httpClient.PutAsync(urlRequest, CreateContent(request)); break; case OperationType.Delete: response = _httpClient.DeleteAsync(urlRequest); break; default: string errorMessage = string.Format("OperationType {0} with Response return is absent", operationType); throw Error.InvalidOperation(errorMessage); } return(response.ContinueWith(x => { HttpResponseMessage responseMessage = x.Result; if (responseMessage.IsSuccessStatusCode == false) { throw new WebFaultException(responseMessage.StatusCode); } using (Stream stream = responseMessage.Content.ReadAsStreamAsync().Result) { return JsonDataSerializer.ToValue <TResponse>(stream); } })); }
public ViewResult ImportResources(bool?importOnlyNewContent, HttpPostedFileBase importFile, bool?showMenu) { var model = new ImportResourcesViewModel { ShowMenu = showMenu ?? false }; if (importFile == null || importFile.ContentLength == 0) { return(View("ImportResources", model)); } var fileInfo = new FileInfo(importFile.FileName); if (fileInfo.Extension.ToLower() != ".json") { ModelState.AddModelError("file", "Uploaded file has different extension. Json file expected"); return(View("ImportResources", model)); } var importer = new ResourceImporter(); var serializer = new JsonDataSerializer(); var streamReader = new StreamReader(importFile.InputStream); var fileContent = streamReader.ReadToEnd(); try { var newResources = serializer.Deserialize <IEnumerable <LocalizationResource> >(fileContent); var result = importer.Import(newResources, importOnlyNewContent ?? true); ViewData["LocalizationProvider_ImportResult"] = result; } catch (Exception e) { ModelState.AddModelError("importFailed", $"Import failed! Reason: {e.Message}"); } return(View("ImportResources", model)); }
public void TestDeserialization() { string input = @"[ { ""id"": 1, ""resourceKey"": ""test-key"", ""modificationDate"": ""2016-01-01T00:00:00Z"", ""author"": ""migration-tool"", ""translations"": [ { ""id"": 11, ""language"": ""en"", ""value"": ""test value"" } ] } ]"; var serializer = new JsonDataSerializer(); var result = serializer.Deserialize<List<LocalizationResource>>(input); Assert.NotNull(result); Assert.Equal(1, result.Count); }
public void TestDeserialization() { string input = @"[ { ""id"": 1, ""resourceKey"": ""test-key"", ""modificationDate"": ""2016-01-01T00:00:00Z"", ""author"": ""migration-tool"", ""translations"": [ { ""id"": 11, ""language"": ""en"", ""value"": ""test value"" } ] } ]"; var serializer = new JsonDataSerializer(); var result = serializer.Deserialize <List <LocalizationResource> >(input); Assert.NotNull(result); Assert.Equal(1, result.Count); }
public JsonDataSerializerTests() { _sut = new JsonDataSerializer <MockCountry>(); }
private static StringContent CreateContent(object value) { string content = JsonDataSerializer.ToString(value); return(new StringContent(content, Encoding.UTF8, "application/json")); }
public static void Main(string[] args) { _settings = ParseArguments(args); if (_settings.ShowHelp) { ShowHelp(_settings.OptionSet); return; } if (string.IsNullOrEmpty(_settings.SourceDirectory)) { Console.WriteLine("ERROR: Source directory parameter is missing!"); Console.WriteLine(); ShowHelp(_settings.OptionSet); return; } if (!Directory.Exists(_settings.SourceDirectory)) { throw new IOException($"Source directory {_settings.SourceDirectory} does not exist!"); } Directory.SetCurrentDirectory(_settings.SourceDirectory); ReadConnectionString(_settings); AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(_settings.SourceDirectory, "App_Data")); if (_settings.ExportResources) { try { Console.WriteLine("Export started."); var extractor = new ResourceExtractor(); var resources = extractor.Extract(_settings); string generatedScript; if (_settings.Json) { var serializer = new JsonDataSerializer(); generatedScript = serializer.Serialize(resources); } else { var scriptGenerator = new SqlScriptGenerator(); generatedScript = scriptGenerator.Generate(resources, _settings.ScriptUpdate); } var scriptFileWriter = new ResultFileWriter(); var outputFile = scriptFileWriter.Write(generatedScript, _settings.TargetDirectory, _settings.Json); Console.WriteLine($"Output file: {outputFile}"); Console.WriteLine("Export completed!"); } catch (Exception e) { Console.WriteLine($"Error running tool: {e.Message}"); return; } } if (_settings.ImportResources) { Console.WriteLine("Import started!"); var importer = new ResourceImporter(); importer.Import(_settings); Console.WriteLine("Import completed!"); } if (!_settings.ExportResources && !_settings.ImportResources) { Console.WriteLine("No command specified."); Console.WriteLine("Try 'DbLocalizationProvider.MigrationTool.exe --help' for more information."); } if (Debugger.IsAttached) { Console.ReadLine(); } }
public JsonDataSerializerTests() { this.jsonDataSerializer = JsonDataSerializer.Instance; }
public static void Main(string[] args) { _settings = ParseArguments(args); if (_settings.ShowHelp) { ShowHelp(_settings.OptionSet); return; } if (string.IsNullOrEmpty(_settings.SourceDirectory)) { Console.WriteLine("ERROR: Source directory parameter is missing!"); Console.WriteLine(); ShowHelp(_settings.OptionSet); return; } if (!Directory.Exists(_settings.SourceDirectory)) { throw new IOException($"Source directory `{_settings.SourceDirectory}` does not exist!"); } if (!File.Exists(Path.Combine(_settings.SourceDirectory, "web.config"))) { throw new IOException($"File `web.config` file not found in `{_settings.SourceDirectory}`!"); } Directory.SetCurrentDirectory(_settings.SourceDirectory); ReadConnectionString(_settings); AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(_settings.SourceDirectory, "App_Data")); if (_settings.ExportResources) { try { Console.WriteLine("Export started."); var extractor = new ResourceExtractor(); var resources = extractor.Extract(_settings); string generatedScript; if (_settings.Json) { var serializer = new JsonDataSerializer(); generatedScript = serializer.Serialize(resources); } else { var scriptGenerator = new SqlScriptGenerator(); generatedScript = scriptGenerator.Generate(resources, _settings.ScriptUpdate); } var scriptFileWriter = new ResultFileWriter(); var outputFile = scriptFileWriter.Write(generatedScript, _settings.TargetDirectory, _settings.Json); Console.WriteLine($"Output file: {outputFile}"); Console.WriteLine("Export completed!"); } catch (Exception e) { Console.WriteLine($"Error running tool: {e.Message}"); return; } } if (_settings.ImportResources) { Console.WriteLine("Import started!"); var importer = new ResourceImporter(); importer.Import(_settings); Console.WriteLine("Import completed!"); } if (!_settings.ExportResources && !_settings.ImportResources) { Console.WriteLine("No command specified."); Console.WriteLine("Try 'DbLocalizationProvider.MigrationTool.exe --help' for more information."); } if (Debugger.IsAttached) { Console.ReadLine(); } }