Пример #1
0
        /// <summary>
        /// Write the relevant extra data to the packet
        /// </summary>
        public void WriteExtraData(IMessageComposer composer, Item item, bool inventoryView = false)
        {
            var interactor = item.Interactor;

            composer.Data.Add((int)interactor.ExtraDataType);

            switch (interactor.ExtraDataType)
            {
            case ExtraDataType.StringData:
                composer.Data.Add((string)interactor.GetExtraData(inventoryView));
                break;

            case ExtraDataType.StringArrayData:
                var values = (Dictionary <string, string>)interactor.GetExtraData(inventoryView);
                composer.Data.Add(values.Count);

                foreach (var kvp in values)
                {
                    composer.Data.Add(kvp.Key);
                    composer.Data.Add(kvp.Value);
                }

                break;
            }
        }
Пример #2
0
 public static void Compose(IMessageComposer messageComposer, RoomData room)
 {
     messageComposer.Data.Add(room.Id);
     messageComposer.Data.Add(room.Name);
     messageComposer.Data.Add(true);
     messageComposer.Data.Add(room.OwnerId);
     messageComposer.Data.Add(room.OwnerData == null ? string.Empty : room.OwnerData.Name);
     messageComposer.Data.Add((int)room.Status);
     messageComposer.Data.Add(room.UsersNow);
     messageComposer.Data.Add(room.UsersMax);
     messageComposer.Data.Add(room.Description);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(room.Category.IsTradingAllowed ? 2 : 0); // can category trade?
     messageComposer.Data.Add(room.Rating);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(room.Category.Id);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add("");
     messageComposer.Data.Add(0); // tags
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(true);
     messageComposer.Data.Add(true);
     messageComposer.Data.Add(0);
     messageComposer.Data.Add(0);
 }
Пример #3
0
        public static void Compose(IMessageComposer messageComposer, RoomData room)
        {
            messageComposer.Data.Add(room.Id);
            messageComposer.Data.Add(room.Name);
            messageComposer.Data.Add(true);
            messageComposer.Data.Add(room.OwnerId);
            messageComposer.Data.Add(room.OwnerData == null ? string.Empty : room.OwnerData.Name);
            messageComposer.Data.Add((int)room.Status);
            messageComposer.Data.Add(room.UsersNow);
            messageComposer.Data.Add(room.UsersMax);
            messageComposer.Data.Add(room.Description);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add(room.TradeSetting);// room.TradeSetting);
            messageComposer.Data.Add(room.Rating);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add(room.Category.Id);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add("");
            messageComposer.Data.Add(room.Tags.Count);

            foreach (var tag in room.Tags)
            {
                messageComposer.Data.Add(tag.Text);
            }

            messageComposer.Data.Add(0);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add(true);
            messageComposer.Data.Add(true);
            messageComposer.Data.Add(0);
            messageComposer.Data.Add(0);
        }
Пример #4
0
 internal static void Compose(Effect effect, IMessageComposer composer)
 {
     composer.Data.Add(effect.Id);
     composer.Data.Add(effect.IsCostume ? 1 : 0);
     composer.Data.Add(effect.Duration);
     composer.Data.Add(effect.Data.IsActivated ? effect.Data.Quantity - 1 : effect.Data.Quantity);
     composer.Data.Add(effect.Data.IsActivated ? effect.TimeLeft : -1);
 }
Пример #5
0
        public static void HandleComposer(Session Session, IMessageComposer Composer, params object[] Parameters)
        {
            var Bytes = Composer.Invoke(Parameters).Result;

            if (Bytes.Count() > 0)
            {
                Session.Send(Bytes);
            }
        }
Пример #6
0
 public static void Serialize(IMessageComposer composer, Item item)
 {
     composer.Data.Add(item.Id.ToString());
     composer.Data.Add(item.Definition.Data.SpriteId);
     composer.Data.Add(item.Data.WallPosition);
     composer.Data.Add((string)item.Interactor.GetExtraData());
     composer.Data.Add(-1);
     composer.Data.Add(item.Definition.Data.MaxStatus > 1 ? 1 : 0);
 }
Пример #7
0
        public static void HandleComposer(Session Session, IMessageComposer Composer, params object[] Parameters)
        {
            var Bytes = Composer.Invoke(Parameters).Result;

            if (Bytes.Count() > 0)
            {
                Session.Send(Bytes);
            }
        }
        public ZeroFormatterImpl(List <InternalPayloadDefinition> payloadTypes, IMessageComposer composer)
        {
            payloadDefinitions = new InternalPayloadDefinition[payloadTypes.Count];
            for (int i = 0; i < payloadDefinitions.Length; i++)
            {
                payloadDefinitions[i] = payloadTypes[i];
            }

            this.MessageComposer = composer;
        }
Пример #9
0
        /// <summary>
        /// Send packet to entire player list in room
        /// </summary>
        public void Send(IMessageComposer composer, List <Player> specificUsers = null)
        {
            if (specificUsers == null)
            {
                specificUsers = EntityManager.GetEntities <Player>();
            }

            foreach (var player in specificUsers)
            {
                player.Send(composer);
            }
        }
Пример #10
0
        /// <summary>
        /// Send message composer
        /// </summary>
        public void Send(IMessageComposer composer)
        {
            if (!composer.Composed)
            {
                composer.Composed = true;
                composer.Write();
            }

            try
            {
                Channel.WriteAndFlushAsync(composer);
            }
            catch { }
        }
Пример #11
0
        public static void Serialize(IMessageComposer composer, Item item)
        {
            composer.Data.Add(item.Id);
            composer.Data.Add(item.Definition.Type.ToUpper());
            composer.Data.Add(item.Id);
            composer.Data.Add(item.Definition.Data.SpriteId);

            switch (item.Definition.Data.Sprite)
            {
            case "landscape":
                composer.Data.Add(4);
                break;

            case "wallpaper":
                composer.Data.Add(2);
                break;

            case "floor":
                composer.Data.Add(3);
                break;

            case "poster":
                composer.Data.Add(6);
                break;

            default:
                composer.Data.Add(1);
                break;
            }

            InteractionManager.Instance.WriteExtraData(composer, item, true);

            composer.Data.Add(item.Definition.Data.IsRecyclable);
            composer.Data.Add(item.Definition.Data.IsTradable);
            composer.Data.Add(item.Definition.InteractorType == InteractorType.DECORATION ? true : item.Definition.Data.IsStackable);
            composer.Data.Add(item.Definition.Data.IsSellable);

            composer.Data.Add(-1);    // timer
            composer.Data.Add(false); // hasRentPeriodStarted():Boolean
            composer.Data.Add(-1);    // embed room id

            if (!item.Definition.HasBehaviour(ItemBehaviour.WALL_ITEM))
            {
                composer.Data.Add("");
                composer.Data.Add(0); // todo: sprite code for wrapping
            }
        }
Пример #12
0
        public static void Compose(IMessageComposer messageComposer, PublicItemData publicItem)
        {
            messageComposer.Data.Add(publicItem.BannerId);
            messageComposer.Data.Add(publicItem.BannerType != BannerType.PUBLIC_FLAT ? publicItem.Label : string.Empty);
            messageComposer.Data.Add(publicItem.Description);
            messageComposer.Data.Add((int)publicItem.ImageType);
            messageComposer.Data.Add(publicItem.BannerType != BannerType.PUBLIC_FLAT ? publicItem.Label : string.Empty);
            messageComposer.Data.Add(publicItem.Image);
            messageComposer.Data.Add(publicItem.ParentId);
            messageComposer.Data.Add(publicItem.Room != null ? publicItem.Room.UsersNow : 0);
            messageComposer.Data.Add((int)publicItem.BannerType);

            if (publicItem.BannerType == BannerType.TAG)
            {
                messageComposer.Data.Add(string.Empty); // Tag to search
            }
            if (publicItem.BannerType == BannerType.CATEGORY)
            {
                messageComposer.Data.Add(true); // is open
            }
            if (publicItem.BannerType == BannerType.FLAT)
            {
                FlatListComposer.Compose(messageComposer, publicItem.Room);
            }

            if (publicItem.BannerType == BannerType.PUBLIC_FLAT)
            {
                /*
                 * public function _SafeStr_3944(k:_SafeStr_2170)
                 * {
                 *  this._SafeStr_10591 = k.readString();
                 *  this._SafeStr_10175 = k.readInt();
                 *  this._SafeStr_10592 = k.readInt();
                 *  this._SafeStr_10174 = k.readString();
                 *  this._SafeStr_10658 = k.readInt();
                 *  this._SafeStr_10173 = k.readInt();
                 * }
                 */
                messageComposer.Data.Add(publicItem.Description);
                messageComposer.Data.Add(0);
                messageComposer.Data.Add(publicItem.DescriptionEntry);
                messageComposer.Data.Add(publicItem.Room.CCTs);
                messageComposer.Data.Add(publicItem.Room.UsersMax);
                messageComposer.Data.Add(publicItem.Room.Id);
            }
        }
 private void ComposeAndDeliverMessage(MailboxSession session, StoreObjectId draftsFolderId, IMailboxLocator recipient, IMailboxAssociationPerformanceTracker performanceTracker, IExtensibleLogger logger)
 {
     EmailNotificationHandler.Tracer.TraceDebug <IMailboxLocator, string>((long)this.GetHashCode(), "EmailNotificationHandler.ComposeAndDeliverMessage: Processing recipient {0}. Group {1}.", recipient, this.groupMailbox.ExternalDirectoryObjectId);
     using (MessageItem messageItem = MessageItem.Create(session, draftsFolderId))
     {
         ADUser           recipient2      = recipient.FindAdUser();
         IMessageComposer messageComposer = this.messageComposerBuilder.Build(recipient2);
         messageComposer.WriteToMessage(messageItem);
         bool flag = false;
         if (this.groupMailbox.WhenCreatedUTC != null)
         {
             TimeSpan timeSpan = DateTime.UtcNow - this.groupMailbox.WhenCreatedUTC.Value;
             if (timeSpan < EmailNotificationHandler.DelaySendTime)
             {
                 messageItem[MessageItemSchema.DeferredSendTime] = DateTime.UtcNow + EmailNotificationHandler.DelaySendTime - timeSpan;
                 flag = true;
             }
         }
         else
         {
             messageItem[MessageItemSchema.DeferredSendTime] = DateTime.UtcNow + EmailNotificationHandler.DelaySendTime;
             flag = true;
         }
         if (flag)
         {
             logger.LogEvent(new SchemaBasedLogEvent <MailboxAssociationLogSchema.Warning>
             {
                 {
                     MailboxAssociationLogSchema.Warning.Context,
                     "EmailNotificationHandler"
                 },
                 {
                     MailboxAssociationLogSchema.Warning.Message,
                     string.Format("Welcome email for recipient {0}, Group {1} is delayed to send", recipient, this.groupMailbox.ExternalDirectoryObjectId)
                 }
             });
             EmailNotificationHandler.Tracer.TraceDebug <IMailboxLocator, string>((long)this.GetHashCode(), "EmailNotificationHandler.ComposeAndDeliverMessage: Welcome email for recipient {0}, Group {1} is delayed to send.", recipient, this.groupMailbox.ExternalDirectoryObjectId);
         }
         StoreObjectId saveSentMessageFolder = session.GetDefaultFolderId(DefaultFolderType.TemporarySaves) ?? session.CreateDefaultFolder(DefaultFolderType.TemporarySaves);
         messageItem.Send(saveSentMessageFolder, SubmitMessageFlags.IgnoreSendAsRight);
         performanceTracker.IncrementAssociationsUpdated();
     }
 }
Пример #14
0
        private static void SimpleContextListener()
        {
            IContext context = CreateContext("TestContext");

            IDispatcher      dispatcher = context.Dispatcher;
            IMessageComposer composer   = context.MessageComposer;

            ListenerA listener = new ListenerA();

            dispatcher.RegisterListenerForAll(listener);


            PayloadA plA = new PayloadA();
            PayloadB plB = new PayloadB();

            var message = composer.Compose(plA, plB);

            dispatcher.Send(message);
            dispatcher.DispatchMessages();
        }
Пример #15
0
        internal static void SerialiseOffer(IMessageComposer composer, CatalogueItem item)//, bool spriteAsSaleCode = false)
        {
            composer.Data.Add(item.Data.Id);
            composer.Data.Add(item.Data.SaleCode);//composer.Data.Add(spriteAsSaleCode ? ItemManager.Instance.GetDefinition(item.Packages[0].Data.DefinitionId).Data.Sprite : item.Data.SaleCode);
            composer.Data.Add(item.Data.PriceCoins);
            composer.Data.Add(item.Data.PriceSeasonal);
            composer.Data.Add((int)item.Data.SeasonalType);
            composer.Data.Add(false);
            composer.Data.Add(item.Packages.Count);

            foreach (CataloguePackage package in item.Packages)
            {
                composer.Data.Add(package.Definition.Type);
                composer.Data.Add(package.Definition.Data.SpriteId);
                composer.Data.Add(package.Data.SpecialSpriteId); // extra data
                composer.Data.Add(package.Data.Amount);
                composer.Data.Add(false);
            }

            composer.Data.Add(0);
            composer.Data.Add(item.AllowBulkPurchase);
        }
Пример #16
0
 public SmtpMailer(IMessageComposer composer, ILogger logger, IFailedMessageDumper dumper)
 {
     this.composer = composer;
     this.logger   = logger;
     this.dumper   = dumper;
 }
Пример #17
0
 /// <summary>
 /// Send message composer
 /// </summary>
 public void Send(IMessageComposer composer)
 {
     Connection.Send(composer);
 }
Пример #18
0
 public bool sendUnencrypted(IMessageComposer arg1)
 {
     throw new NotImplementedException();
 }
Пример #19
0
 public NullMailer(IMessageComposer composer, ILogger logger)
 {
     this.composer = composer;
     this.logger   = logger;
 }