Example #1
0
    public void PublishRichPresence([In] BattleNet.DllRichPresenceUpdate[] updates)
    {
        UpdateRequest updateRequest = new UpdateRequest {
            EntityId = base.m_battleNet.GameAccountId
        };
        FieldOperation val   = new FieldOperation();
        Field          field = new Field();
        FieldKey       key   = new FieldKey();

        key.SetProgram(BnetProgramId.BNET.GetValue());
        key.SetGroup(2);
        key.SetField(8);
        foreach (BattleNet.DllRichPresenceUpdate update in updates)
        {
            key.SetIndex(update.presenceFieldIndex);
            bnet.protocol.presence.RichPresence protobuf = new bnet.protocol.presence.RichPresence();
            protobuf.SetIndex(update.index);
            protobuf.SetProgramId(update.programId);
            protobuf.SetStreamId(update.streamId);
            bnet.protocol.attribute.Variant variant = new bnet.protocol.attribute.Variant();
            variant.SetMessageValue(ProtobufUtil.ToByteArray(protobuf));
            field.SetKey(key);
            field.SetValue(variant);
            val.SetField(field);
            updateRequest.SetEntityId(base.m_battleNet.GameAccountId);
            updateRequest.AddFieldOperation(val);
        }
        this.PublishField(updateRequest);
    }
Example #2
0
        public void PublishRichPresence([In] RichPresenceUpdate[] updates)
        {
            UpdateRequest updateRequest = new UpdateRequest()
            {
                EntityId = this.m_battleNet.GameAccountId
            };
            FieldOperation fieldOperation = new FieldOperation();
            Field          field          = new Field();
            FieldKey       fieldKey       = new FieldKey();

            fieldKey.SetProgram(BnetProgramId.BNET.GetValue());
            fieldKey.SetGroup(2);
            fieldKey.SetField(8);
            RichPresenceUpdate[] richPresenceUpdateArray = updates;
            for (int i = 0; i < (int)richPresenceUpdateArray.Length; i++)
            {
                RichPresenceUpdate richPresenceUpdate = richPresenceUpdateArray[i];
                fieldKey.SetIndex(richPresenceUpdate.presenceFieldIndex);
                RichPresence richPresence = new RichPresence();
                richPresence.SetIndex(richPresenceUpdate.index);
                richPresence.SetProgramId(richPresenceUpdate.programId);
                richPresence.SetStreamId(richPresenceUpdate.streamId);
                bnet.protocol.attribute.Variant variant = new bnet.protocol.attribute.Variant();
                variant.SetMessageValue(ProtobufUtil.ToByteArray(richPresence));
                field.SetKey(fieldKey);
                field.SetValue(variant);
                fieldOperation.SetField(field);
                updateRequest.SetEntityId(this.m_battleNet.GameAccountId);
                updateRequest.AddFieldOperation(fieldOperation);
            }
            this.PublishField(updateRequest);
        }
Example #3
0
        public void SetPresenceBlob(uint field, byte[] val)
        {
            UpdateRequest updateRequest = new UpdateRequest();

            updateRequest.EntityId = this.m_battleNet.GameAccountId;
            FieldOperation fieldOperation = new FieldOperation();
            Field          field2         = new Field();
            FieldKey       fieldKey       = new FieldKey();

            fieldKey.SetProgram(BnetProgramId.WOW.GetValue());
            fieldKey.SetGroup(2u);
            fieldKey.SetField(field);
            Variant variant = new Variant();

            if (val == null)
            {
                val = new byte[0];
            }
            variant.SetBlobValue(val);
            field2.SetKey(fieldKey);
            field2.SetValue(variant);
            fieldOperation.SetField(field2);
            updateRequest.SetEntityId(this.m_battleNet.GameAccountId);
            updateRequest.AddFieldOperation(fieldOperation);
            this.PublishField(updateRequest);
        }
 public override string Complete(string name, FieldOperation fop, string fieldcommand, DateTime ddefault)
 {
     /* [dlatikay 20111116] must inject the default into the field command:
      * ALTER TABLE bas02Project ADD (F NUMBER(9, 0) DEFAULT(-33) NOT NULL) */
     fieldcommand = fieldcommand.Replace("NOT NULL", String.Format("DEFAULT(sysdate) NOT NULL")); /* [dlatikay 20111124] ORA provider does so not actually provide a variable default */
     return String.Format(Template, name, sFOP(fop), fieldcommand);
 }
 public override string Complete(string name, FieldOperation fop, string fieldcommand, int idefault)
 {
     /* [dlatikay 20111116] must inject the default into the field command:
      * ALTER TABLE bas02Project ADD (F NUMBER(9, 0) DEFAULT(-33) NOT NULL) */
     fieldcommand = fieldcommand.Replace("NOT NULL", String.Format("DEFAULT({0}) NOT NULL", idefault.ToString()));
     return String.Format(Template, name, sFOP(fop), fieldcommand);
 }
Example #6
0
        public void PublishRichPresence([In] RichPresenceUpdate[] updates)
        {
            UpdateRequest updateRequest = new UpdateRequest();

            updateRequest.EntityId = this.m_battleNet.GameAccountId;
            FieldOperation fieldOperation = new FieldOperation();
            Field          field          = new Field();
            FieldKey       fieldKey       = new FieldKey();

            fieldKey.SetProgram(BnetProgramId.BNET.GetValue());
            fieldKey.SetGroup(2u);
            fieldKey.SetField(8u);
            foreach (RichPresenceUpdate richPresenceUpdate in updates)
            {
                fieldKey.SetIndex(richPresenceUpdate.presenceFieldIndex);
                RichPresence richPresence = new RichPresence();
                richPresence.SetIndex(richPresenceUpdate.index);
                richPresence.SetProgramId(richPresenceUpdate.programId);
                richPresence.SetStreamId(richPresenceUpdate.streamId);
                Variant variant = new Variant();
                variant.SetMessageValue(ProtobufUtil.ToByteArray(richPresence));
                field.SetKey(fieldKey);
                field.SetValue(variant);
                fieldOperation.SetField(field);
                updateRequest.SetEntityId(this.m_battleNet.GameAccountId);
                updateRequest.AddFieldOperation(fieldOperation);
            }
            this.PublishField(updateRequest);
        }
Example #7
0
        public void SetFieldValue(FieldKey key, FieldOperation operation)
        {
            if (!_changedFields.Contains(key))
                _changedFields.Add(key);

            _FieldValues[key] = operation;
        }
 public override string sFOP(FieldOperation fop)
 {
     switch (fop)
     {
         case FieldOperation.FOP_ALTER: return "MODIFY";
         default:
             return base.sFOP(fop);
     }
 }
Example #9
0
        public void SetFieldValue(FieldKey key, FieldOperation operation)
        {
            if (!_changedFields.Contains(key))
            {
                _changedFields.Add(key);
            }

            _FieldValues[key] = operation;
        }
Example #10
0
        public QueryRule(string field, FieldOperation fieldOperation, object value, LogicalOperation logicalOperation)
        {
            ConditionChecker.Requires(string.IsNullOrEmpty(field) == false);
            ConditionChecker.Requires(value != null);

            Field            = field;
            FieldOperation   = fieldOperation;
            Value            = value;
            LogicalOperation = logicalOperation;
        }
 public IActionResult Create(int fieldId, FieldOperation operation, int routineCustomActionId)
 {
     _context.RoutineCustomActionFields.Add(new Entities.RoutineCustomActionField
     {
         FieldId               = fieldId,
         Operation             = operation,
         RoutineCustomActionId = routineCustomActionId
     });
     _context.SaveChanges();
     return(RedirectToAction(nameof(Index), new { id = routineCustomActionId }));
 }
Example #12
0
        public virtual string sFOP(FieldOperation fop)
        {
            switch (fop)
            {
            case FieldOperation.FOP_ADD: return("ADD");

            case FieldOperation.FOP_ALTER: return("ALTER COLUMN");

            case FieldOperation.FOP_DROP: return("DROP COLUMN");

            default: throw new ArgumentOutOfRangeException("fop", fop, "ADD/ALTER/DROP");
            }
        }
Example #13
0
    public FieldOperation AddNextFieldOperation()
    {
        if (OperationStack == null)
        {
            return(null);
        }
        if (OperationStack.Count <= 0)
        {
            return(null);
        }
        FieldOperation result = GameData.Data.FieldOperations[OperationStack.Pop()];

        result.Initialize();
        CurrentOperations.Add(result);
        return(result);
    }
Example #14
0
        public void Update(FieldOperation operation)
        {
            switch (operation.Operation)
            {
            case FieldOperation.Types.OperationType.SET:
                DoSet(operation.Field);
                break;

            case FieldOperation.Types.OperationType.CLEAR:
                DoClear(operation.Field);
                break;

            default:
                Logger.Warn("No operation type.");
                break;
            }
        }
Example #15
0
        public void SetPresenceBool(uint field, bool val)
        {
            UpdateRequest  updateRequest  = new UpdateRequest();
            FieldOperation fieldOperation = new FieldOperation();
            Field          field1         = new Field();
            FieldKey       fieldKey       = new FieldKey();

            fieldKey.SetProgram(BnetProgramId.WOW.GetValue());
            fieldKey.SetGroup(2);
            fieldKey.SetField(field);
            bnet.protocol.attribute.Variant variant = new bnet.protocol.attribute.Variant();
            variant.SetBoolValue(val);
            field1.SetKey(fieldKey);
            field1.SetValue(variant);
            fieldOperation.SetField(field1);
            updateRequest.SetEntityId(this.m_battleNet.GameAccountId);
            updateRequest.AddFieldOperation(fieldOperation);
            this.PublishField(updateRequest);
        }
Example #16
0
 internal static string Get(FieldOperation fieldOperation)
 {
     return(FieldOperations[fieldOperation]);
 }
 public override string Complete(string name, FieldOperation fop, string fieldcommand)
 {
     if (fop != FieldOperation.FOP_DROP)
         fieldcommand = String.Format("({0})", fieldcommand); /* [dlatikay 20111007] since it is "ADD (TEST NUMBER(9, 0) NOT NULL);", but it is "DROP COLUMN ORGID_COSTCENTER;" */
     return base.Complete(name, fop, fieldcommand);
 }
Example #18
0
 public QueryRule(string field, FieldOperation fieldOperation, object value) : this(field, fieldOperation, value, LogicalOperation.And)
 {
 }
 internal FieldOperationNotAllowedException(string fieldName, FieldOperation operation)
     : base(ErrorStatus.Forbidden, GetMessage(fieldName, operation))
 {
 }
Example #20
0
        private string Compile(FieldOperation fieldOperation)
        {
            string value = GetValue(fieldOperation.Value);

            return(String.Format("{0}:{1}", fieldOperation.Field, value));
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="FieldListChangedEvent"/> class.
 /// </summary>
 /// <param name="operation">The operation.</param>
 /// <param name="fieldVM">The field vm.</param>
 /// <param name="propertyName">The property name.</param>
 public FieldListChangedEvent(FieldOperation operation, ProcessFieldViewModel fieldVM, string propertyName = null)
 {
     Operation = operation;
     FieldViewModel = fieldVM;
     PropertyName = propertyName;
 }
Example #22
0
 public virtual string Complete(string name, FieldOperation fop, string fieldcommand, DateTime ddefault)
 {
     return(String.Format(Template, name, sFOP(fop), fieldcommand, "GETUTCDATE()"));
 }
 private static string GetMessage(string fieldName, FieldOperation operation)
 {
     return("The '" + fieldName + "' field does not allow the " + operation.ToString().ToLowerInvariant() + " operation.");
 }
Example #24
0
        private void DoSet(Field field)
        {
            FieldOperation.Builder operation = FieldOperation.CreateBuilder();

            Field.Builder returnField = Field.CreateBuilder().SetKey(field.Key);

            switch ((FieldKeyHelper.Program)field.Key.Program)
            {
            case FieldKeyHelper.Program.D3:
                if (field.Key.Group == 2 && field.Key.Field == 3)     //CurrentActivity
                {
                    returnField.SetValue(field.Value);
                    Logger.Trace("{0} set CurrentActivity to {1}", this, field.Value.IntValue);
                }
                else if (field.Key.Group == 2 && field.Key.Field == 4)     //Unknown bool
                {
                    returnField.SetValue(field.Value);
                    Logger.Trace("{0} set CurrentActivity to {1}", this, field.Value.BoolValue);
                }
                else if (field.Key.Group == 4 && field.Key.Field == 1) //PartyId
                {
                    if (field.Value.HasMessageValue)                   //7727 Sends empty SET instead of a CLEAR -Egris
                    {
                        EntityId entityId = EntityId.ParseFrom(field.Value.MessageValue);
                        Channel  channel  = ChannelManager.GetChannelByEntityId(entityId);
                        if (LoggedInClient.CurrentChannel != channel)
                        {
                            LoggedInClient.CurrentChannel = channel;
                            returnField.SetValue(
                                Variant.CreateBuilder().SetMessageValue(channel.BnetEntityId.ToByteString()).Build());
                            Logger.Trace("{0} set channel to {1}", this, channel);
                        }
                    }
                    else
                    {
                        if (LoggedInClient.CurrentChannel != null)
                        {
                            returnField.SetValue(Variant.CreateBuilder().SetMessageValue(ByteString.Empty).Build());
                            Logger.Warn("Emtpy-field: {0}, {1}, {2}", field.Key.Program, field.Key.Group,
                                        field.Key.Field);
                        }
                    }
                }
                else if (field.Key.Group == 4 && field.Key.Field == 2)     //JoinPermission
                {
                    //catch to stop Logger.Warn spam on client start and exit
                    // should D3.4.2 int64 Current screen (0=in-menus, 1=in-menus, 3=in-menus); see ScreenStatus sent to ChannelService.UpdateChannelState call /raist
                    if (ScreenStatus.Screen != field.Value.IntValue)
                    {
                        ScreenStatus =
                            ScreenStatus.CreateBuilder().SetScreen((int)field.Value.IntValue).SetStatus(0).Build();
                        returnField.SetValue(Variant.CreateBuilder().SetIntValue(field.Value.IntValue).Build());
                        Logger.Trace("{0} set current screen to {1}.", this, field.Value.IntValue);
                    }
                }
                else if (field.Key.Group == 4 && field.Key.Field == 3)     //CallToArmsMessage
                {
                    returnField.SetValue(field.Value);
                }
                else if (field.Key.Group == 4 && field.Key.Field == 4)     //Party IsFull
                {
                    returnField.SetValue(field.Value);
                }
                else if (field.Key.Group == 5 && field.Key.Field == 5)     //Game IsPrivate
                {
                    returnField.SetValue(field.Value);
                }
                else
                {
                    Logger.Warn("GameAccount: Unknown set-field: {0}, {1}, {2} := {3}", field.Key.Program,
                                field.Key.Group, field.Key.Field, field.Value);
                }
                break;

            case FieldKeyHelper.Program.BNet:
                if (field.Key.Group == 2 && field.Key.Field == 2)     // SocialStatus
                {
                    AwayStatus = (AwayStatusFlag)field.Value.IntValue;
                    returnField.SetValue(Variant.CreateBuilder().SetIntValue((long)AwayStatus).Build());
                    Logger.Trace("{0} set AwayStatus to {1}.", this, AwayStatus);
                }
                else if (field.Key.Group == 2 && field.Key.Field == 8)
                {
                    returnField.SetValue((field.Value));
                }
                else if (field.Key.Group == 2 && field.Key.Field == 10)     // AFK
                {
                    returnField.SetValue(field.Value);
                    Logger.Trace("{0} set AFK to {1}.", this, field.Value.BoolValue);
                }
                else
                {
                    Logger.Warn("GameAccount: Unknown set-field: {0}, {1}, {2} := {3}", field.Key.Program,
                                field.Key.Group, field.Key.Field, field.Value);
                }
                break;
            }

            //We only update subscribers on fields that actually change values.
            if (returnField.HasValue)
            {
                operation.SetField(returnField);
                UpdateSubscribers(Subscribers, new List <FieldOperation> {
                    operation.Build()
                });
            }
        }
Example #25
0
 public virtual string Complete(string name, FieldOperation fop, string fieldcommand)
 {
     return(String.Format(Template, name, sFOP(fop), fieldcommand));
 }
Example #26
0
 public void Update(FieldOperation operation)
 {
     switch (operation.Operation)
     {
         case FieldOperation.Types.OperationType.SET:
             DoSet(operation.Field);
             break;
         case FieldOperation.Types.OperationType.CLEAR:
             DoClear(operation.Field);
             break;
         default:
             Logger.Warn("No operation type.");
             break;
     }
 }
Example #27
0
 public virtual string Complete(string name, FieldOperation fop, string fieldcommand, string sdefault)
 {
     return(String.Format(Template, name, sFOP(fop), fieldcommand, String.Format("N'{0}'", sdefault.Replace("'", "''"))));
 }
Example #28
0
 public virtual string Complete(string name, FieldOperation fop, string fieldcommand, int idefault)
 {
     return(String.Format(Template, name, sFOP(fop), fieldcommand, idefault.ToString()));
 }
Example #29
0
        public void HandlePresenceUpdates(ChannelState channelState, ChannelAPI.ChannelReferenceObject channelRef)
        {
            bgs.types.EntityId entityId;
            entityId.hi = channelRef.m_channelData.m_channelId.High;
            entityId.lo = channelRef.m_channelData.m_channelId.Low;
            FieldKey fieldKey = new FieldKey();

            fieldKey.SetProgram(BnetProgramId.BNET.GetValue());
            fieldKey.SetGroup(1u);
            fieldKey.SetField(3u);
            FieldKey fieldKey2         = fieldKey;
            List <PresenceUpdate> list = new List <PresenceUpdate>();

            using (List <FieldOperation> .Enumerator enumerator = channelState.FieldOperationList.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    FieldOperation current = enumerator.get_Current();
                    if (current.Operation == FieldOperation.Types.OperationType.CLEAR)
                    {
                        this.m_presenceCache.SetCache(entityId, current.Field.Key, null);
                    }
                    else
                    {
                        this.m_presenceCache.SetCache(entityId, current.Field.Key, current.Field.Value);
                    }
                    PresenceUpdate presenceUpdate = default(PresenceUpdate);
                    presenceUpdate.entityId   = entityId;
                    presenceUpdate.programId  = current.Field.Key.Program;
                    presenceUpdate.groupId    = current.Field.Key.Group;
                    presenceUpdate.fieldId    = current.Field.Key.Field;
                    presenceUpdate.index      = current.Field.Key.Index;
                    presenceUpdate.boolVal    = false;
                    presenceUpdate.intVal     = 0L;
                    presenceUpdate.stringVal  = string.Empty;
                    presenceUpdate.valCleared = false;
                    presenceUpdate.blobVal    = new byte[0];
                    if (current.Operation == FieldOperation.Types.OperationType.CLEAR)
                    {
                        presenceUpdate.valCleared = true;
                        bool flag  = fieldKey2.Program == current.Field.Key.Program;
                        bool flag2 = fieldKey2.Group == current.Field.Key.Group;
                        bool flag3 = fieldKey2.Field == current.Field.Key.Field;
                        if (flag && flag2 && flag3)
                        {
                            BnetEntityId entityId2 = BnetEntityId.CreateFromEntityId(presenceUpdate.entityId);
                            this.m_battleNet.Friends.RemoveFriendsActiveGameAccount(entityId2, current.Field.Key.Index);
                        }
                    }
                    else if (current.Field.Value.HasBoolValue)
                    {
                        presenceUpdate.boolVal = current.Field.Value.BoolValue;
                    }
                    else if (current.Field.Value.HasIntValue)
                    {
                        presenceUpdate.intVal = current.Field.Value.IntValue;
                    }
                    else if (current.Field.Value.HasStringValue)
                    {
                        presenceUpdate.stringVal = current.Field.Value.StringValue;
                    }
                    else if (current.Field.Value.HasFourccValue)
                    {
                        presenceUpdate.stringVal = new BnetProgramId(current.Field.Value.FourccValue).ToString();
                    }
                    else if (current.Field.Value.HasEntityidValue)
                    {
                        presenceUpdate.entityIdVal.hi = current.Field.Value.EntityidValue.High;
                        presenceUpdate.entityIdVal.lo = current.Field.Value.EntityidValue.Low;
                        bool flag4 = fieldKey2.Program == current.Field.Key.Program;
                        bool flag5 = fieldKey2.Group == current.Field.Key.Group;
                        bool flag6 = fieldKey2.Field == current.Field.Key.Field;
                        if (flag4 && flag5 && flag6)
                        {
                            BnetEntityId entityId3 = BnetEntityId.CreateFromEntityId(presenceUpdate.entityId);
                            this.m_battleNet.Friends.AddFriendsActiveGameAccount(entityId3, current.Field.Value.EntityidValue, current.Field.Key.Index);
                        }
                    }
                    else if (current.Field.Value.HasBlobValue)
                    {
                        presenceUpdate.blobVal = current.Field.Value.BlobValue;
                    }
                    else
                    {
                        if (!current.Field.Value.HasMessageValue)
                        {
                            continue;
                        }
                        if (current.Field.Key.Field == 8u)
                        {
                            this.FetchRichPresenceResource(current.Field.Value);
                            this.HandleRichPresenceUpdate(presenceUpdate, current.Field.Key);
                            continue;
                        }
                        continue;
                    }
                    list.Add(presenceUpdate);
                }
            }
            list.Reverse();
            this.m_presenceUpdates.AddRange(list);
        }