Esempio n. 1
0
    def Withdraw(self, request, context):
        """
        Implementation of withdraw money method.
        request: A WithdrawRequest (see dist_bank.proto)
        return: A BalanceRecord response (see dist_bank.proto)
        """
        print('Method Withdraw in main server get called:')
        stub.Withdraw(request)
        self.update_db()
        record = get_record(self.db, request)
        if record is None:
            return dist_bank_pb2.BalanceRecord(uid="0",
                                               balance=0,
                                               index=-1,
                                               res_info=_RECORD_NOT_EXIST)
        else:
            look_up_request = dist_bank_pb2.LookUpRequest(uid=request.uid)
            res_flag = dist_bank_resources.modify_dist_bank_database_withdraw(
                request, "main")

            if res_flag == _SUCCESS_MODIFIED:
                self.update_db()
                return get_record(self.db, look_up_request)
            else:
                print('res_flag: ', res_flag)
                # Return a not modified record:
                return dist_bank_pb2.BalanceRecord(
                    uid=look_up_request.uid,
                    balance=self.LookUpAccount(request, context).balance,
                    # index=self.LookUpAccount(request, context).index,
                    index=-1,  # it's just for now!
                    res_info=_RECORD_NOT_EXIST)
Esempio n. 2
0
 def Save(self, request, context):
     """
     Implementation of save money method.
     request: A SaveRequest (see dist_bank.proto)
     return: A BalanceRecord response (see dist_bank.proto)
     """
     print('Method Save in main server get called:')
     self.update_db()
     record = get_record(self.db, request)
     if record is None:
         return dist_bank_pb2.BalanceRecord(uid="0",
                                            balance=0,
                                            index=-1,
                                            res_info=_RECORD_NOT_EXIST)
     else:
         res_flag = dist_bank_resources.modify_dist_bank_database_save(
             request, "main")
         if res_flag == _SUCCESS_MODIFIED:
             self.update_db()
             # If res_flag is success, then construct a LookUpRequest to look up modified record:
             look_up_request = dist_bank_pb2.LookUpRequest(uid=request.uid)
             return get_record(self.db, look_up_request)
         else:
             print('res_flag: ', res_flag)
             raise DatabaseOptFailure
Esempio n. 3
0
 def LookUpAccount(self, request, context):
     """
     Implementation of look up account balance method.
     request: A LookUpRequest (see dist_bank.proto)
     return: A BalanceRecord response (see dist_bank.proto)
     """
     print('Method LookUpAccount in main server get called:')
     self.update_db()
     record = get_record(self.db, request)
     if record is None:
         return dist_bank_pb2.BalanceRecord(uid="0",
                                            balance=0,
                                            index=-1,
                                            res_info=_RECORD_NOT_EXIST)
     else:
         return record
def read_dist_bank_database(server):
    """
    Reads the dist bank database.

    Returns:
        he full contents of the dist bank database as a sequence of
        dist_bank_pb2.BalanceRecord.
    """
    record_list = []
    with open("dist_bank_db_%s.json" % server) as dist_bank_db_file:
        for item in json.load(dist_bank_db_file):
            record = dist_bank_pb2.BalanceRecord(
                uid=item["uid"],
                index=item["index"],
                # Balance field is a string in json, so change to float:
                balance=float(item["balance"]))
            record_list.append(record)
    return record_list