コード例 #1
0
 /// <summary>
 /// Marks this Object to be inserted upon next flush
 /// </summary>
 public void Insert(IDataHolder obj)
 {
     lock (m_toInsert)
     {
         m_toInsert.Add(obj);
     }
 }
コード例 #2
0
ファイル: LightDBMapper.cs プロジェクト: uvbs/Asda2-Server
 private void Flush(List <IDataHolder> list, Action <IDataHolder> callback)
 {
     lock (list)
     {
         int count = 0;
         try
         {
             for (; count < list.Count; ++count)
             {
                 IDataHolder dataHolder = list[count];
                 callback(dataHolder);
             }
         }
         finally
         {
             if (count < list.Count)
             {
                 list.RemoveRange(0, count);
             }
             else
             {
                 list.Clear();
             }
         }
     }
 }
コード例 #3
0
 /// <summary>
 /// Marks this Object to be deleted upon next flush
 /// </summary>
 public void Delete(IDataHolder obj)
 {
     lock (m_toDelete)
     {
         m_toDelete.Add(obj);
     }
 }
コード例 #4
0
        List <T> GetKeyValuePairs <T>(IDataHolder obj, Func <TableDefinition, T> listCreator)
            where T : KeyValueListBase
        {
            var dataHolderDef = m_mapping.GetDataHolderDefinition(obj.GetType());
            var lists         = new List <T>(m_mapping.TableDefinitions.Length);

            for (var i = 0; i < m_mapping.TableDefinitions.Length; i++)
            {
                var table = m_mapping.TableDefinitions[i];
                for (var j = 0; j < table.ColumnDefinitions.Length; j++)
                {
                    var col = table.ColumnDefinitions[j];
                    for (var k = 0; k < col.FieldList.Count; k++)
                    {
                        var field = col.FieldList[k];
                        var def   = field.DataHolderDefinition;
                        if (def == dataHolderDef)
                        {
                            var list = lists.FirstOrDefault(l => l.TableName == table.Name);
                            if (list == null)
                            {
                                lists.Add(list = listCreator(table));
                            }

                            var value = field.Get(obj);
                            list.AddPair(col.ColumnName, value.ToString());
                        }
                    }
                }
            }
            return(lists);
        }
コード例 #5
0
 public void SetSingleValue(object value, IDataHolder holder)
 {
     for (int index = 0; index < FieldList.Count; ++index)
     {
         FieldList[index].Set(holder, value);
     }
 }
コード例 #6
0
        public IDataHolder Read(BinaryReader reader)
        {
            object      firstValue = this.m_persistors[0].Read(reader);
            IDataHolder holder     = (IDataHolder)this.m_Def.CreateHolder(firstValue);

            this.m_fields[0].Accessor.Set((object)holder, firstValue);
            for (int index = 1; index < this.m_persistors.Length; ++index)
            {
                IBinaryPersistor persistor = this.m_persistors[index];
                try
                {
                    object obj = persistor.Read(reader);
                    this.m_fields[index].Accessor.Set((object)holder, obj);
                }
                catch (Exception ex)
                {
                    throw new DataHolderException(ex,
                                                  "Failed to read DataHolder \"{0}\" (Persistor #{1} {2} for: {3}).", new object[4]
                    {
                        (object)holder,
                        (object)index,
                        (object)persistor,
                        (object)this.m_fields[index]
                    });
                }
            }

            return(holder);
        }
コード例 #7
0
ファイル: HCellData.cs プロジェクト: janproch/datadmin
 public static void CallShowData(object sender, IDataHolder data)
 {
     if (ShowData != null)
     {
         ShowData(sender, data);
     }
 }
コード例 #8
0
    public void Start()
    {
        //provider = new FileDatabase();
        //provider = new MysqlDatabase.Database();
        provider = new Unturned.RemoteDatabase();
        provider.Init();


        connectionGuard = new GameObject();
        UnityEngine.Object.DontDestroyOnLoad(Database.connectionGuard);
        connectionGuard.name = "Connection Guard";
        connectionGuard.AddComponent <ConnectionGuard>();

        if (!Database.welcomed)
        {
            StartCoroutine(fixFrameRate());
            Database.welcomed = true;

            PlayerSettings.id     = "Server";
            PlayerSettings.status = 21;
            if (Epoch.serverTime == -1)
            {
                Epoch.serverTime = (int)(GetServerTime() - 1401854099);
            }

            ServerSettings.cycle  = (int)(GetServerTime() - 1401854099);
            ServerSettings.offset = 0f;
            ServerSettings.time   = (int)((float)ServerSettings.cycle % Sun.COURSE);
            Sun.tick     = 0f;
            Sun.lastTick = Time.realtimeSinceStartup;
            Sun.tool.cycle();
        }
    }
コード例 #9
0
ファイル: LightDBMapper.cs プロジェクト: uvbs/Asda2-Server
        private List <T> GetKeyValuePairs <T>(IDataHolder obj, Func <TableDefinition, T> listCreator)
            where T : KeyValueListBase
        {
            DataHolderDefinition holderDefinition = this.m_mapping.GetDataHolderDefinition(obj.GetType());
            List <T>             source           = new List <T>(this.m_mapping.TableDefinitions.Length);

            for (int index1 = 0; index1 < this.m_mapping.TableDefinitions.Length; ++index1)
            {
                TableDefinition table = this.m_mapping.TableDefinitions[index1];
                for (int index2 = 0; index2 < table.ColumnDefinitions.Length; ++index2)
                {
                    SimpleDataColumn columnDefinition = table.ColumnDefinitions[index2];
                    for (int index3 = 0; index3 < columnDefinition.FieldList.Count; ++index3)
                    {
                        IFlatDataFieldAccessor field = columnDefinition.FieldList[index3];
                        if (field.DataHolderDefinition == holderDefinition)
                        {
                            T obj1 = source.FirstOrDefault <T>((Func <T, bool>)(l => l.TableName == table.Name));
                            if ((object)obj1 == null)
                            {
                                source.Add(obj1 = listCreator(table));
                            }
                            object obj2 = field.Get(obj);
                            obj1.AddPair(columnDefinition.ColumnName, (object)obj2.ToString());
                        }
                    }
                }
            }

            return(source);
        }
コード例 #10
0
 /// <summary>
 /// Marks this Object to be updated upon next flush
 /// </summary>
 public void Update(IDataHolder obj)
 {
     lock (m_toUpdate)
     {
         m_toUpdate.Add(obj);
     }
 }
コード例 #11
0
 void HCellData_InvalidateData(object sender)
 {
     if (Sender == sender)
     {
         Data   = null;
         Sender = null;
     }
 }
コード例 #12
0
 public override int SupportLevel(IDataHolder data, IBedValueReader holder)
 {
     if (holder.GetFieldType().IsDateRelated())
     {
         return(10);
     }
     return(0);
 }
コード例 #13
0
ファイル: DataFieldProxy.cs プロジェクト: 0xFh/Asda2-Project
 public object Get(IDataHolder obj)
 {
     if (Field == null)
     {
         return(null);
     }
     return(Field.Accessor.Get(obj));
 }
コード例 #14
0
 public override int SupportLevel(IDataHolder data, IBedValueReader holder)
 {
     if (data.LookupInfo != null)
     {
         return(10);
     }
     return(0);
 }
コード例 #15
0
ファイル: PSTFileFactoryForMisc.cs プロジェクト: phx255/PST
 private static IEncoder <string> CreateHeaderBasedStringEncoder(
     Stream dataStream,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new HeaderBasedStringEncoder(
              CreateHeaderUsageProvider(dataStream, cachedHeaderHolder)));
 }
コード例 #16
0
ファイル: DataFieldProxy.cs プロジェクト: uvbs/Asda2-Server
 public object Get(IDataHolder obj)
 {
     if (this.Field == null)
     {
         return((object)null);
     }
     return(this.Field.Accessor.Get((object)obj));
 }
コード例 #17
0
 void HCellData_ShowData(object sender, IDataHolder data)
 {
     m_data   = data;
     m_sender = sender;
     if (m_visible)
     {
         m_frame.Data = data;
     }
 }
コード例 #18
0
ファイル: SimpleDataColumn.cs プロジェクト: pallmall/WCell
		public void SetSingleValue(object value, IDataHolder holder)
		{
			for (var i = 0; i < FieldList.Count; i++)
			{
				var dataField = FieldList[i];
				// set value
				dataField.Set(holder, value);
			}
		}
コード例 #19
0
 public void SetSingleValue(object value, IDataHolder holder)
 {
     for (var i = 0; i < FieldList.Count; i++)
     {
         var dataField = FieldList[i];
         // set value
         dataField.Set(holder, value);
     }
 }
コード例 #20
0
 public HeaderUsageProvider(
     IDataReader dataReader,
     IDecoder <Header> headerDecoder,
     IDataHolder <Header> cachedHeaderHolder)
 {
     this.dataReader         = dataReader;
     this.headerDecoder      = headerDecoder;
     this.cachedHeaderHolder = cachedHeaderHolder;
 }
コード例 #21
0
ファイル: PSTFileFactoryForMisc.cs プロジェクト: phx255/PST
 private static IHeaderUsageProvider CreateHeaderUsageProvider(
     Stream dataStream,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new HeaderUsageProvider(
              new DataReader(dataStream),
              CreateHeaderDecoder(),
              cachedHeaderHolder));
 }
コード例 #22
0
 private static IRawDataAllocator CreateRawDataAllocator(
     Stream dataStream,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new RawDataAllocator(
              CreateAllocationFinder(dataStream),
              CreateAMapBasedStreamExtender(dataStream, cachedHeaderHolder),
              CreateAMapBasedAllocationReserver(dataStream, cachedHeaderHolder)));
 }
コード例 #23
0
        internal void LoadAll(BinaryReader reader, List <Action> initors)
        {
            int num = reader.ReadInt32();

            for (int index = 0; index < num; ++index)
            {
                IDataHolder dataHolder = this.Read(reader);
                initors.Add(new Action(dataHolder.FinalizeDataHolder));
            }
        }
コード例 #24
0
 private static IDataBlockReader CreateDataBlockReader(
     Stream dataReader,
     ICache <BID, BTPage> cachedBTPages,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new BlockIdBasedDataBlockReader(
              new DataReader(dataReader),
              CreateHeaderUsageProvider(dataReader, cachedHeaderHolder),
              CreateBlockBTreeEntryFinder(dataReader, cachedBTPages)));
 }
コード例 #25
0
 private static IPropertyNameToIdMap CreatePropertyIdToNameMap(
     Stream dataStream,
     ICache <BID, BTPage> cachedBTPages,
     ICache <BID, SubnodeBlock> cachedSubnodeBlocks,
     ICache <BID, InternalDataBlock> cachedInternalDataBlocks,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new PropertyNameToIdMap(
              CreatePropertyContextBasedPropertyReader(dataStream, cachedBTPages, cachedSubnodeBlocks, cachedInternalDataBlocks, cachedHeaderHolder)));
 }
コード例 #26
0
ファイル: PSTFileFactoryForMisc.cs プロジェクト: phx255/PST
 private static IEncoding CreateBlockEncoding(
     Stream dataStream,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new EncodingThatDetectsTypeFromTheHeader(
              CreateHeaderUsageProvider(dataStream, cachedHeaderHolder),
              new PermutativeEncoding(),
              new CyclicEncoding(),
              new NoEncoding()));
 }
コード例 #27
0
 private static IDataTreeAllocator CreateDataTreeAllocator(
     Stream dataStream,
     List <LBBTEntry> allocatedBlockBTreeEntries,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new DataTreeAllocator(
              CreateExternalDataBlockAllocator(dataStream, allocatedBlockBTreeEntries, cachedHeaderHolder),
              CreateInternalDataBlockAllocator(dataStream, allocatedBlockBTreeEntries, cachedHeaderHolder, internalBlockLevel: 0x01),
              CreateInternalDataBlockAllocator(dataStream, allocatedBlockBTreeEntries, cachedHeaderHolder, internalBlockLevel: 0x02)));
 }
コード例 #28
0
ファイル: PSTFileFactoryForBTH.cs プロジェクト: phx255/PST
 private static IBTreeOnHeapReader <PropertyId> CreatePropertyIdBasedBTreeOnHeapReader(
     Stream dataStream,
     ICache <BID, BTPage> cachedBBTNodes,
     ICache <BID, SubnodeBlock> cachedSubnodeBlocks,
     ICache <BID, InternalDataBlock> cachedInternalDataBlocks,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new BTreeOnHeapReader <PropertyId>(
              new PropertyIdDecoder(),
              CreateHeapOnNodeReader(dataStream, cachedBBTNodes, cachedSubnodeBlocks, cachedInternalDataBlocks, cachedHeaderHolder)));
 }
コード例 #29
0
ファイル: PSTFileFactoryForBTH.cs プロジェクト: phx255/PST
 private static IBTreeOnHeapReader <int> CreateInt32BasedBTreeOnHeapReader(
     Stream dataStream,
     ICache <BID, BTPage> cachedBBTNodes,
     ICache <BID, SubnodeBlock> cachedSubnodeBlocks,
     ICache <BID, InternalDataBlock> cachedInternalDataBlocks,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new BTreeOnHeapReader <int>(
              new FuncBasedDecoder <int>(d => BitConverter.ToInt32(d.Value, 0)),
              CreateHeapOnNodeReader(dataStream, cachedBBTNodes, cachedSubnodeBlocks, cachedInternalDataBlocks, cachedHeaderHolder)));
 }
コード例 #30
0
 private static INodeEntryFinder CreateNodeEntryFinder(
     Stream dataStream,
     ICache <BID, BTPage> cachedBTPages,
     ICache <BID, SubnodeBlock> cachedSubnodeBlocks,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new NodeEntryFinder(
              CreateHeaderUsageProvider(dataStream, cachedHeaderHolder),
              CreateNodeBTreeEntryFinder(dataStream, cachedBTPages),
              CreateSubNodesEnumerator(dataStream, cachedBTPages, cachedSubnodeBlocks, cachedHeaderHolder)));
 }
コード例 #31
0
ファイル: PSTFileFactoryForBTH.cs プロジェクト: phx255/PST
 private static IHeapOnNodeReader CreateHeapOnNodeReader(
     Stream dataStream,
     ICache <BID, BTPage> cachedBBTNodes,
     ICache <BID, SubnodeBlock> cachedSubnodeBlocks,
     ICache <BID, InternalDataBlock> cachedInternalDataBlocks,
     IDataHolder <Header> cachedHeaderHolder)
 {
     return
         (new HeapOnNodeReader(
              new HeapOnNodeItemsLoader(),
              CreateDataTreeReader(dataStream, cachedBBTNodes, cachedInternalDataBlocks, cachedSubnodeBlocks, cachedHeaderHolder)));
 }
コード例 #32
0
ファイル: InputDataInTables.cs プロジェクト: fanatt20/SA_lab2
 public InputDataInTables(IDataHolder dataHolder)
 {
     InitializeComponent();
     var varNamelst = new List<string>();
     for (int i = 0; i < dataHolder.AllVariables.Length; i++)
     {
         varNamelst.Add("Переменная " + (i + 1));
     }
     gridViewVariables.DataSource = dataHolder.AllVariables.GetDataTableFromMatrix(varNamelst.ToArray());
     var funcNamelst = new List<string>();
     for (int i = 0; i < dataHolder.Y.Length; i++)
     {
         funcNamelst.Add("Функция " + (i + 1));
     }
     gridViewFunctions.DataSource =
         dataHolder.Y.GetDataTableFromMatrix(funcNamelst.ToArray());
 }
コード例 #33
0
ファイル: BinaryContentStream.cs プロジェクト: pallmall/WCell
		void Write(BinaryWriter writer, IDataHolder holder)
		{
			for (var i = 0; i < m_persistors.Length; i++)
			{
				var persistor = m_persistors[i];
				try
				{
					var val = m_fields[i].Accessor.Get(holder);
					persistor.Write(writer, val);
				}
				catch (Exception e)
				{
					throw new DataHolderException(e, "Failed to write DataHolder \"{0}\" (Persistor #{1} {2} for: {3}).",
						holder, i, persistor, m_fields[i]);
				}
			}
		}
コード例 #34
0
ファイル: DataFieldProxy.cs プロジェクト: KroneckerX/WCell
 public void Set(IDataHolder obj, object value)
 {
     //throw new DataHolderException("Proxy field is not settable.");
 }
コード例 #35
0
ファイル: DataFieldProxy.cs プロジェクト: KroneckerX/WCell
 public object Get(IDataHolder obj)
 {
     return Field.Accessor.Get(obj);
 }
コード例 #36
0
ファイル: DataFields.cs プロジェクト: Algorithman/TestCellAO
        /// <summary>
        /// 
        /// </summary>
        /// <param name="rootObject"></param>
        /// <returns></returns>
        public object GetTargetObject(IDataHolder rootObject)
        {
            if (m_parent == null)
            {
                return rootObject;
            }

            var targetObj = m_parent.GetTargetObject(rootObject);

            var obj = m_parent.Accessor.Get(targetObj);
            if (obj == null)
            {
                obj = m_parent.Producer.Produce();
                m_parent.Accessor.Set(rootObject, obj);
            }
            return obj;
        }
コード例 #37
0
ファイル: DataFields.cs プロジェクト: Algorithman/TestCellAO
 public object Get(IDataHolder obj)
 {
     var targetObj = m_ArrayField.GetTargetObject(obj);
     return m_ArrayField.Get(targetObj, m_Index);
 }
コード例 #38
0
ファイル: DataFields.cs プロジェクト: Algorithman/TestCellAO
 public void Set(IDataHolder obj, object value)
 {
     var targetObj = m_ArrayField.GetTargetObject(obj);
     m_ArrayField.Set(targetObj, m_Index, value);
 }
コード例 #39
0
ファイル: DataFields.cs プロジェクト: Algorithman/TestCellAO
 public object Get(IDataHolder obj)
 {
     var targetObj = GetTargetObject(obj);
     return m_accessor.Get(targetObj);
 }
コード例 #40
0
ファイル: DataFields.cs プロジェクト: Algorithman/TestCellAO
 public void Set(IDataHolder obj, object value)
 {
     var targetObj = GetTargetObject(obj);
     m_accessor.Set(targetObj, value);
     if (targetObj.GetType().IsValueType)
     {
         var parent = m_parent;
         object parentTarget;
         while (parent != null)
         {
             parentTarget = parent.GetTargetObject(obj);
             parent.Accessor.Set(parentTarget, targetObj);
             targetObj = parentTarget;
             parent = parent.Parent;
             if (!parentTarget.GetType().IsValueType)
             {
                 break;
             }
         }
     }
 }
コード例 #41
0
ファイル: DataFields.cs プロジェクト: Algorithman/TestCellAO
 public object GetTargetObject(IDataHolder rootObject)
 {
     return m_ArrayField.GetTargetObject(rootObject);
 }
コード例 #42
0
 // TODO: Fix up default values
 internal void SetDefaults(object id, IDataHolder holder)
 {
     if (id is object[])
     {
         var ids = (object[])id;
         for (var i = 0; i < PrimaryColumns.Length; i++)
         {
             var col = PrimaryColumns[i].DataColumn;
             col.SetSingleValue(ids[i], holder);
         }
     }
     else
     {
         PrimaryColumns[0].DataColumn.SetSingleValue(id, holder);
     }
 }