[Gelistirici] Re: [Uludag-commits] r6535 - repos/pisi-x/src

Eray Ozkural eray at uludag.org.tr
16 Mar 2006 Per 19:28:49 EET


demin ozel olarak bir cache mekanizmasi uretmeye
calismamak gerektigini bunun dogru yolunun gereksiz
db lookuplarini ilk basta yapmamak oldugunu soylemistim
ama sanirim umursamadin?

lutfen db'yi cache etmeye calistigin yeri cikarir misin,
tekrar tekrar yapman gerekiyor db lookup'lari, yalniz db
lookup'larini ilk basta gerekmedikce yapmaman gerekiyor yani bir
paket secilmedigi muddetce onu lookup etmezsen en
efficient yolu budur, lazy access yapmak lazim yani database'e
bir de gereksiz database'lere hic erismemek lazim.

bu sekilde degistirilmesi gerektigini pisi-kga'nin bir bug'la
girecektim, sana da soylemistim bir bug tartismasinda ama
unutuldu muhtemelen.

sevgiler,

svn-uludag at uludag.org.tr wrote:
> Author: cartman
> Date: Thu Mar 16 18:42:36 2006
> New Revision: 6535
>
> Modified:
>    repos/pisi-x/src/PisiKga.py
>    repos/pisi-x/src/ThreadRunner.py
> Log:
> cache mekanizması koyalım ki gerekmediği sürece database'den lookup yapmasın
>
>
> Modified: repos/pisi-x/src/PisiKga.py
> =================================================================
> --- repos/pisi-x/src/PisiKga.py	(original)
> +++ repos/pisi-x/src/PisiKga.py	Thu Mar 16 18:42:36 2006
> @@ -127,7 +127,8 @@
>          # Check for empty repo.
>          self.initialCheck()
>  
> -    def updateListing(self,index):
> +    def updateListing(self):
> +        index = self.comboBox.currentItem()
>          if index == 0:
>              self.createComponentList(self.command.listPackages())
>          elif index == 1:
>
> Modified: repos/pisi-x/src/ThreadRunner.py
> =================================================================
> --- repos/pisi-x/src/ThreadRunner.py	(original)
> +++ repos/pisi-x/src/ThreadRunner.py	Thu Mar 16 18:42:36 2006
> @@ -31,6 +31,12 @@
>          self.updatingRepo = False
>          self.updatingAllRepos = False
>  
> +        # Caching mechanism
> +        self.databaseDirty = False
> +        self.allPackages = []
> +        self.newPackages = []
> +        self.upgrades = []
> +
>      def initDatabase(self):
>          try:
>              pisi.api.init(database=True, options=None, ui=self.ui, comar=True)
> @@ -39,47 +45,66 @@
>              self.postEvent(self.parent,event)
>      
>      def install(self,apps):
> +        self.databaseDirty = True
>          self.installing = True
>          self.appList = apps
>          self.start()
>  
>      def upgrade(self,apps):
> +        self.databaseDirty = True
>          self.upgrading = True
>          self.appList = apps
>          self.start()
>      
>      def remove(self,apps):
> +        self.databaseDirty = True
>          self.removing = True
>          self.appList = apps
>          self.start()
>  
>      def updateRepo(self, repo):
> +        self.databaseDirty = True
>          self.updatingRepo = True
>          self.repo = repo
>          self.start()
>      
>      def updateAllRepos(self):
> +        self.databaseDirty = True
>          self.updatingAllRepos = True
>          self.repoList = pisi.context.repodb.list()
>          self.start()
>  
>      def addRepo(self,repoName,repoAddress):
> +        self.databaseDirty = True
>          pisi.api.add_repo(repoName,repoAddress)
>          
>      def removeRepo(self, repoName):
> +        self.databaseDirty = True
>          pisi.api.remove_repo(repoName)
>         
>      def swapRepos(self, repo1, repo2):
>          pisi.api.ctx.repodb.swap(repo1, repo2)
>      
>      def listUpgradable(self):
> -        return pisi.api.list_upgradable()
> +        if not len(self.upgrades) or self.databaseDirty:
> +            self.upgrades = pisi.api.list_upgradable()
>  
> +        self.databaseDirty = False
> +        return self.upgrades
> +        
>      def listPackages(self):
> -        return pisi.packagedb.inst_packagedb.list_packages()
> +        if not len(self.allPackages) or self.databaseDirty:
> +            self.allPackages = pisi.packagedb.inst_packagedb.list_packages()
> +
> +        self.databaseDirty = False
> +        return self.allPackages
>  
>      def listAvailable(self):
> -        return list(pisi.api.list_available()-set(self.listPackages()))
> +        if not len(self.newPackages) or self.databaseDirty:
> +            self.newPackages = list(pisi.api.list_available()-set(self.listPackages()))
> +
> +        self.databaseDirty = False
> +        return self.newPackages
>  
>      def searchPackage(self,query,language='tr'):
>          return pisi.api.search_package(query,language)
>   
> ------------------------------------------------------------------------
>
> _______________________________________________
> Uludag-commits mailing list
> Uludag-commits at uludag.org.tr
> http://liste.uludag.org.tr/mailman/listinfo/uludag-commits
>   




Gelistirici mesaj listesiyle ilgili daha fazla bilgi