private boolean deleteStorage(TrackerServer trackerServer,String groupName,String storageIpAddr) throws IOException {
  byte[] header;
  byte[] bGroupName;
  byte[] bs;
  int len;
  Socket trackerSocket;
  trackerSocket=trackerServer.getSocket();
  OutputStream out=trackerSocket.getOutputStream();
  bs=groupName.getBytes(ClientGlobal.g_charset);
  bGroupName=new byte[ProtoCommon.FDFS_GROUP_NAME_MAX_LEN];
  if (bs.length <= ProtoCommon.FDFS_GROUP_NAME_MAX_LEN) {
    len=bs.length;
  }
 else {
    len=ProtoCommon.FDFS_GROUP_NAME_MAX_LEN;
  }
  Arrays.fill(bGroupName,(byte)0);
  System.arraycopy(bs,0,bGroupName,0,len);
  int ipAddrLen;
  byte[] bIpAddr=storageIpAddr.getBytes(ClientGlobal.g_charset);
  if (bIpAddr.length < ProtoCommon.FDFS_IPADDR_SIZE) {
    ipAddrLen=bIpAddr.length;
  }
 else {
    ipAddrLen=ProtoCommon.FDFS_IPADDR_SIZE - 1;
  }
  header=ProtoCommon.packHeader(ProtoCommon.TRACKER_PROTO_CMD_SERVER_DELETE_STORAGE,ProtoCommon.FDFS_GROUP_NAME_MAX_LEN + ipAddrLen,(byte)0);
  byte[] wholePkg=new byte[header.length + bGroupName.length + ipAddrLen];
  System.arraycopy(header,0,wholePkg,0,header.length);
  System.arraycopy(bGroupName,0,wholePkg,header.length,bGroupName.length);
  System.arraycopy(bIpAddr,0,wholePkg,header.length + bGroupName.length,ipAddrLen);
  out.write(wholePkg);
  ProtoCommon.RecvPackageInfo pkgInfo=ProtoCommon.recvPackage(trackerSocket.getInputStream(),ProtoCommon.TRACKER_PROTO_CMD_RESP,0);
  this.errno=pkgInfo.errno;
  return pkgInfo.errno == 0;
}

private boolean deleteStorage ( TrackerServer trackerServer , String groupName , String storageIpAddr ) throws IOException { byte [ ] header ; byte [ ] bGroupName ; byte [ ] bs ; int len ; Socket trackerSocket ; trackerSocket = trackerServer . getSocket ( ) ; OutputStream out = trackerSocket . getOutputStream ( ) ; bs = groupName . getBytes ( ClientGlobal . g_charset ) ; bGroupName = new byte [ ProtoCommon . FDFS_GROUP_NAME_MAX_LEN ] ; if ( bs . length <= ProtoCommon . FDFS_GROUP_NAME_MAX_LEN ) { len = bs . length ; } else { len = ProtoCommon . FDFS_GROUP_NAME_MAX_LEN ; } Arrays . fill ( bGroupName , ( byte ) 0 ) ; System . arraycopy ( bs , 0 , bGroupName , 0 , len ) ; int ipAddrLen ; byte [ ] bIpAddr = storageIpAddr . getBytes ( ClientGlobal . g_charset ) ; if ( bIpAddr . length < ProtoCommon . FDFS_IPADDR_SIZE ) { ipAddrLen = bIpAddr . length ; } else { ipAddrLen = ProtoCommon . FDFS_IPADDR_SIZE - 1 ; } header = ProtoCommon . packHeader ( ProtoCommon . TRACKER_PROTO_CMD_SERVER_DELETE_STORAGE , ProtoCommon . FDFS_GROUP_NAME_MAX_LEN + ipAddrLen , ( byte ) 0 ) ; byte [ ] wholePkg = new byte [ header . length + bGroupName . length + ipAddrLen ] ; System . arraycopy ( header , 0 , wholePkg , 0 , header . length ) ; System . arraycopy ( bGroupName , 0 , wholePkg , header . length , bGroupName . length ) ; System . arraycopy ( bIpAddr , 0 , wholePkg , header . length + bGroupName . length , ipAddrLen ) ; out . write ( wholePkg ) ; ProtoCommon . RecvPackageInfo pkgInfo = ProtoCommon . recvPackage ( trackerSocket . getInputStream ( ) , ProtoCommon . TRACKER_PROTO_CMD_RESP , 0 ) ; this . errno = pkgInfo . errno ; return pkgInfo . errno == 0 ; }
delete a storage server from the tracker server
