Exemple #1
0
 public override void DeleteFromClientHandler(DeleteMessageReader request, DeleteResponceWriter response)
 {
     idDict.Clear();
     for (int i = 0; i < Global.ServerCount; i++)
     {
         //每个服务器挨个发送
         DeleteMessageWriter dmw = new DeleteMessageWriter(request.cellIds, request.columnTypeList, request.con);
         Global.CloudStorage.DeleteFromProxyToDatabaseServer(i, dmw);
     }
     sem.WaitOne();  //等待服务器全部返回信息
     response.cellIds = new List <List <long> >();
     //将信息合并
     for (int i = 0; i < Global.ServerCount; i++)
     {
         response.cellIds.AddRange(idDict[i]);
     }
 }
Exemple #2
0
        public void delete(string con)
        {
            if (!isSingle)
            {
                throw new Exception(String.Format("不可对多个表进行delete操作"));
            }
            DeleteMessageWriter dmw        = new DeleteMessageWriter(cellIds, this.columnTypes, con);
            List <List <long> > newCellIds = Global.CloudStorage.DeleteFromClientToDatabaseProxy(0, dmw).cellIds;

            foreach (List <long> ids in newCellIds)
            {
                this.cellIds.Remove(ids);
            }
            TableHeadCell thc   = new TableHeadCell(this.tableNames[0], this.columnNames, this.columnTypes, this.primaryIndexs, this.defaultValues, this.cellIds);
            long          thcId = Database.getCurrentDatabase().getTableIdList().ElementAt(Database.getCurrentDatabase().getTableNameList().IndexOf(tableNames
                                                                                                                                                    [0]));

            Global.CloudStorage.SaveTableHeadCell(thcId, thc);
        }