Exemplo n.º 1
0
 public EStore(object obj, ushort tpk, uint rfk, StoreDelegate sd, RestoreDelegate rd)
 {
     this.val             = obj;
     this.typKey          = tpk;
     this.refKey          = rfk;
     this.storeDelegate   = sd;
     this.restoreDelegate = rd;
 }
Exemplo n.º 2
0
 public void WriteEStore(object val, ushort typKey, StoreDelegate sd, RestoreDelegate rd)
 {
     if (val != null)
     {
         uint refKey = this.GetRefKey(val);
         this.WriteUInt32(refKey);
         if (refKey < uint.MaxValue)
         {
             if (this._objMask.Add(refKey))
             {
                 EStore item = new EStore(val, typKey, refKey, sd, rd);
                 this._esQueue.Enqueue(item);
             }
         }
         else
         {
             sd(val, this);
         }
     }
     else
     {
         this.WriteUInt32(0);
     }
 }
 public static void RegisterHandler <T>(TranslateDelegate <T> translate, string mark, int searchLength = -1, Encoding markEncoding = null, IEnumerable <string> searchPaths = null, CanHandleTypeDelegate canHandleType = null, LoadDelegate <T> load = null, StoreDelegate <T> store = null) where T : class
 {
     RegisterHandler(
         translate,
         MakeStandardCanHandleAsset(mark, searchLength, markEncoding, searchPaths),
         canHandleType,
         load,
         store);
 }
        public void Import(string conn, string table, int start, int count, bool force, StoreDelegate store)
        {
            MySqlConnection importConn;

            try
            {
                importConn = new MySqlConnection(conn);

                importConn.Open();
            }
            catch (MySqlException e)
            {
                m_log.ErrorFormat("[FSASSETS]: Can't connect to database: {0}",
                        e.Message.ToString());

                return;
            }

            int imported = 0;

            MySqlCommand cmd = importConn.CreateCommand();

            string limit = String.Empty;
            if (count != -1)
            {
                limit = String.Format(" limit {0},{1}", start, count);
            }

            cmd.CommandText = String.Format("select * from {0}{1}", table, limit);

            MainConsole.Instance.Output("Querying database");
            IDataReader reader = cmd.ExecuteReader();

            MainConsole.Instance.Output("Reading data");

            while (reader.Read())
            {
                if ((imported % 100) == 0)
                {
                    MainConsole.Instance.Output(String.Format("{0} assets imported so far", imported));
                }

                AssetBase asset = new AssetBase();
                AssetMetadata meta = new AssetMetadata();

                meta.ID = reader["id"].ToString();
                meta.FullID = new UUID(meta.ID);

                meta.Name = reader["name"].ToString();
                meta.Description = reader["description"].ToString();
                meta.Type = (sbyte)Convert.ToInt32(reader["assetType"]);
                meta.ContentType = SLUtil.SLAssetTypeToContentType(meta.Type);
                meta.CreationDate = Util.ToDateTime(Convert.ToInt32(reader["create_time"]));

                asset.Metadata = meta;
                asset.Data = (byte[])reader["data"];

                store(asset, force);

                imported++;
            }

            reader.Close();
            cmd.Dispose();
            importConn.Close();

            MainConsole.Instance.Output(String.Format("Import done, {0} assets imported", imported));
        }
        public static void RegisterHandler <T>(TranslateDelegate <T> translate, CanHandleAssetDelegate canHandleAsset, CanHandleTypeDelegate canHandleType = null, LoadDelegate <T> load = null, StoreDelegate <T> store = null) where T : class
        {
            Handlers.Add(new Handler <T>(
                             translate,
                             canHandleAsset,
                             canHandleType ?? MakeStandardCanHandleType <T>(),
                             load ?? MakeStandardLoad <T>(),
                             store ?? MakeStandardStore <T>()));

            Enabled = Handlers.Count > 0;
            if (Enabled && TextAssetMessagePackHandler is null)
            {
                // don't create until needed to improve performance
                TextAssetMessagePackHandler = new TextAssetMessagePackHandler();
            }
        }