Пример #1
0
 def firstsynch(self):
     """
     Sinkronisasi pertama kali saat aplikasi ini dijalankan. Sinkronisasi ini adalah membaca semua
     data yang sebelumnya sudah dibaca ( field status = read )
     """
     logging.info('Sinkronisasi pertama kali table advContent')
     tbladvcontent = TableAdvContent(self.mysqldb.GetConnector())
     inmemconnector = InMemdbConnector()
     inmemconnector.connect()        
     inmemtbldefrid = inmemorydb.TableDefaultRID(inmemconnector) 
     
     listrid = tbladvcontent.GetReadContentID()
     for content in listrid :
         logging.info('inserting inmemdb.tbl_default_contentid, rid(%s)',content)            
         inmemtbldefrid.Insert(content)
     
     logging.info('Sinkronisasi pertama kali table Profile')
     tblprofile = TableProfileRBT(self.mysqldb.GetConnector())
     tbl_inmem = inmemorydb.TableProfile(inmemconnector)
     listresult = tblprofile.GetReadProfile()
     for mdn,contentid in listresult:
         logging.info('inserting inmemdb.tbl_profile, mdn(%s),contentid(%s)',mdn,contentid)            
         tbl_inmem.InsertProfileInfo(mdn,contentid,'0')
         
     inmemconnector.closeconnector()
Пример #2
0
 def __synch_table_rid__(self):
     tbladvcontent = TableAdvContent(self.mysqldb.GetConnector())
     inmemconnector = InMemdbConnector()
     inmemconnector.connect()        
     inmemtbldefrid = inmemorydb.TableDefaultRID(inmemconnector) 
     listresult = tbladvcontent.GetDeletedContentID()
     logging.info('sinkronisasi default_content terdelete')
     for rid in listresult:
         logging.info('deleting inmemdb.tbl_default_contentid, rid(%s)',rid)
         inmemtbldefrid.Delete(str(rid))
     
     logging.info('sinkronisasi default_content terbaru')            
     listresult = tbladvcontent.GetNewContentID()
     for rid in listresult:
         logging.info('inserting inmemdb.tbl_default_contentid, rid(%s)',rid)            
         inmemtbldefrid.Insert(str(rid))
     inmemconnector.closeconnector()
Пример #3
0
 def __synch_table_profile__(self):
     profilerbt = TableProfileRBT(self.mysqldb.GetConnector())
     inmemconnector = InMemdbConnector()
     inmemconnector.connect()
     inmemdbtblprof = inmemorydb.TableProfile(inmemconnector)
     listresult = profilerbt.GetUpdatedProfile()
     logging.info('sinkronisasi profile ter-update')
     for mdn, rid in listresult :
         logging.info('updating inmemdb.tbl_profile, mdn(%s),rid(%s)',mdn,rid)
         inmemdbtblprof.Update(mdn, rid)
     
     logging.info('sinkronisasi profile terdelete')
     listresult = profilerbt.GetDeletedProfile()
     for mdn,rid in listresult:
         logging.info('deleting inmemdb.tbl_profile, mdn(%s)',mdn)            
         inmemdbtblprof.Delete(str(mdn))
     
     logging.info('sinkronisasi profile baru')
     listresult = profilerbt.GetNewProfile()
     for mdn, rid in listresult:
         logging.info('inserting inmemdb.tbl_profile, mdn(%s),rid(%s)',mdn,rid)            
         inmemdbtblprof.InsertProfileInfo(str(mdn), str(rid),'0x00')
     inmemconnector.closeconnector()
Пример #4
0
    def handle(self,stream):
        # Stream request yang masuk langsung diredirect ke RBT server, lalu ambil response
        # rbt server, stream response inilah yang nantinya akan diolah
        self.reqhandler.SendServerData(stream)
        # Terima response dari server 
        response = self.reqhandler.ReceiveServerData()
        rbtadsdata = RBTPlayer2RBTServer()
        # Decode response dari server 
        rbtadsdata.Decode(response)

        # Check apakah destination MDN ada didalam table profile, jika tidak ada 
        # teruskan ke server
        connector = InMemdbConnector()
        connector.connect()
        tblprofile = inmemorydb.TableProfile(connector)
        dstmsisdn = rbtadsdata.GetDstMSISDN()
        if(tblprofile.IsMDNExist(dstmsisdn) == False):
            logging.info('Tidak menemukan dest_msisdn(%s) redirect ke RBT Server',dstmsisdn)
            self.reqhandler.SendPlayerData(response)
            connector.closeconnector()
            return        
        else:

            # Check apakah source dest ada didalam table profile, jika tidak ada maka ambil 
            # dengan cara round robin data content id di table default content.
            # Jika ada mainkan default content sesuai dengan content ID di table profile
            srcmsisdn = rbtadsdata.GetSrcMSISDN()
            if(tblprofile.IsMDNExist(srcmsisdn) == True):
                logging.info('src_msisdn(%s) ada di table profile',srcmsisdn)
                rid,cid = tblprofile.GetProfileInfo(srcmsisdn)
                rbtadsdata.SetSndCode1(str(rid))
                rbtadsdata.SetSndCode2(str(rid))                
            else:
                logging.info('src_msisdn(%s)tak terdapat di table profile,mainkan content default',srcmsisdn)
                contentdef =  inmemorydb.TableDefaultRID(connector)
                sndcodedata = contentdef.GetRID(self._defcontentnum)
                logging.info('contentid=%s',sndcodedata)
                rbtadsdata.SetSndCode1(str(sndcodedata))
                rbtadsdata.SetSndCode2(str(sndcodedata))
                self._defcontentnum+=1
                self._defcontentnum = (self._defcontentnum % contentdef.GetMaxNumberRow())
            
            # Encode kembali data response dari server yang isinya sudah dirubah
            # lalu kirim ke RBT Player    
            logging.info("encoding data response")
            response = rbtadsdata.Encode()
            self.reqhandler.SendPlayerData(response)
            connector.closeconnector()