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()
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()
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()
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()