public static byte[] Serialize(object obj) { if (obj == null) { throw new ArgumentNullException("obj"); } byte[] bytes; if (obj is BsonDocument) { bytes = fastBinaryJSON.BJSON.ToBJSON(((BsonDocument)obj).RawValue); } else { // add parameters on serialization to ignore BsonIgnoreAttribute + Id attribute var param = new fastBinaryJSON.BJSONParameters { UseExtensions = false, UsingGlobalTypes = false, IgnoreAttributes = new List <Type> { typeof(BsonIgnoreAttribute) }, IgnoreProperty = GetIdProperty(obj.GetType()) }; bytes = fastBinaryJSON.BJSON.ToBJSON(obj, param); } if (bytes.Length > BsonDocument.MAX_DOCUMENT_SIZE) { throw new LiteException("Document size too long"); } return(bytes); }
/// <summary> /// опубликовать информация об обновлении книги /// </summary> /// <param name="authorUrl">урл автора</param> /// <param name="book">книга</param> /// <param name="authorName">имя автора</param> public void PublishMessageUpdatedBook(AuthorText book, string authorUrl, string authorName) { var paramJson = new fastJSON.JSONParameters { UsingGlobalTypes = false, EnableAnonymousTypes = true, UseExtensions = false }; var paramBJson = new fastBinaryJSON.BJSONParameters { UsingGlobalTypes = false, EnableAnonymousTypes = true, UseExtensions = false }; try { if (_settings.UseMessageBroker) { var transportBookInfo = new TransportBookInfo() { AuthorLink = authorUrl, AuthorName = authorName, Description = book.Description, Genres = book.Genres, Link = book.Link, Name = book.Name, SectionName = book.SectionName, Size = book.Size, UpdateDate = DateTime.Now.ToUniversalTime().Ticks }; var jsonTransportBookInfo = fastBinaryJSON.BJSON.Instance.ToBJSON(transportBookInfo, paramBJson);// fastJSON.JSON.Instance.ToJSON(transportBookInfo); var command = new SubscriptionMessageCommand() { JsonObjectBytes = jsonTransportBookInfo }; PublishMessageUpdatedBook(fastJSON.JSON.Instance.ToJSON(command, paramJson)); } } catch (Exception ex) { //_logger.Add("Остановлен сервис подписки на push-уведомления об обновлениях."); } }
public void PublishMessageUpdatedBook(Logger logger, Setting settings, AuthorText book, string authorUrl, string authorName) { if (!settings.UseMessageBroker) { return; } CheckProxy(settings); var paramBJson = new fastBinaryJSON.BJSONParameters { UsingGlobalTypes = false, EnableAnonymousTypes = true, UseExtensions = false }; try { var transportBookInfo = new TransportBookInfo() { AuthorLink = authorUrl, AuthorName = authorName, Description = book.Description, Genres = book.Genres, Link = book.Link, Name = book.Name, SectionName = book.SectionName, Size = book.Size, UpdateDate = DateTime.Now.ToUniversalTime().Ticks }; var jsonTransportBookInfo = fastBinaryJSON.BJSON.Instance.ToBJSON(transportBookInfo, paramBJson); var rpc = new JsonRpcClient(_proxy) { Url = _apiUrl }; rpc.Invoke <BooleanOperationResult>( new RpcCommand() { Method = "SetUpdateInfo", ParametersArray = new object[] { "clientId", SubscriptionManager.CurrentClientId, "jsonObjectBytes", jsonTransportBookInfo, "appId", "slkdjfhsjdfks928347832940hfjdsf982738r9" } }, (data) => GetUiControl().InvokeIfRequired(() => { if (data == null) { logger.Add("Не удалось отослать информацию об обновлении серверу статистики SIInformer", true); } else if (data.Result) { // ну, отослали успешно, чо делать-то? Да ничего. :-) } else { logger.Add("Не удалось отослать информацию об обновлении серверу статистики SIInformer: " + data.Error, true); } }, DispatcherPriority.Normal), (error) => GetUiControl().InvokeIfRequired(() => logger.Add("Не удалось отослать информацию об обновлении серверу статистики SIInformer: " + error.Message, true), DispatcherPriority.Normal)); } catch (Exception ex) { logger.Add("Ошибка работы модуля общения с сервером статистики SIInformer: " + ex.Message, true); } }