Oss2FileQueue.java 源代码


package com.hichip.data;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class Oss2FileQueue implements Serializable {
    private volatile LinkedList<Oss2File> listData = new LinkedList<>();
    private volatile int mSize = 0;
    private volatile int FQNum = 100;
    private volatile boolean isaddend = false;
    Lock lock = new ReentrantLock(true);

    public synchronized void setmSize(int i) {
        this.FQNum = i;
    }

    public synchronized int GetmSize() {
        return this.FQNum;
    }

    public synchronized int getCountData() {
        return this.listData.size();
    }

    public synchronized int getCount() {
        return this.mSize;
    }

    public synchronized void addLast(Oss2File oss2File) {
        if (oss2File.head.u32Start == oss2File.head.u32End) {
            return;
        }
        this.lock.lock();
        Oss2File oss2File2 = null;
        this.isaddend = false;
        int i = 0;
        while (i < this.listData.size()) {
            oss2File2 = this.listData.get(i);
            if (oss2File2.head.u32Start >= oss2File.head.u32Start) {
                break;
            } else {
                i++;
            }
        }
        if (oss2File2 != null && oss2File2.head.u32Start == oss2File.head.u32Start) {
            this.isaddend = true;
            this.lock.unlock();
            return;
        }
        if (i == this.listData.size()) {
            this.listData.add(oss2File);
        } else if (i != 0) {
            this.listData.add(i, oss2File);
        } else {
            this.listData.add(0, oss2File);
        }
        this.mSize++;
        this.isaddend = true;
        this.lock.unlock();
    }

    public synchronized Oss2File Findindexdata(int i, int i2) {
        Oss2File oss2File;
        this.lock.lock();
        oss2File = null;
        if (this.isaddend && this.mSize > 0 && this.listData.size() > 0) {
            Oss2File oss2File2 = null;
            for (int i3 = 0; i3 < this.listData.size(); i3++) {
                oss2File2 = this.listData.get(i3);
                if (i2 == 0) {
                    if (oss2File2.head.u32Start <= i && oss2File2.head.u32End > i) {
                        break;
                    }
                    if (oss2File2.head.u32End <= i) {
                        int i4 = i3 + 1;
                        if (i4 != this.listData.size()) {
                            oss2File2 = this.listData.get(i4);
                            if (oss2File2.head.u32Start > i) {
                                break;
                            }
                        } else {
                            oss2File2 = null;
                        }
                    } else {
                        continue;
                    }
                } else {
                    if (oss2File2.head.u32Start >= i) {
                        break;
                        break;
                    }
                }
            }
            oss2File = oss2File2;
        }
        this.lock.unlock();
        return oss2File;
    }

    public synchronized Oss2File getindexdata(int i) {
        Oss2File oss2File;
        this.lock.lock();
        oss2File = null;
        if (this.isaddend && this.mSize > 0 && this.listData.size() > 0 && i <= this.listData.size() && i >= 0) {
            oss2File = this.listData.get(i);
        }
        this.lock.unlock();
        return oss2File;
    }

    public synchronized Oss2File removeindexdata(int i) {
        Oss2File oss2File;
        this.lock.lock();
        oss2File = null;
        if (this.isaddend && this.mSize > 0 && this.listData.size() > 0 && i <= this.listData.size() && i >= 0) {
            oss2File = this.listData.remove(i);
            this.mSize--;
        }
        this.lock.unlock();
        return oss2File;
    }

    public synchronized boolean removeindexdata(Oss2File oss2File) {
        boolean z;
        this.lock.lock();
        z = false;
        if (this.isaddend && this.mSize > 0 && this.listData.size() > 0) {
            z = this.listData.remove(oss2File);
            this.mSize--;
        }
        this.lock.unlock();
        return z;
    }

    public synchronized void removeAll() {
        this.lock.lock();
        if (!this.listData.isEmpty()) {
            this.listData.clear();
        }
        this.mSize = 0;
        this.lock.unlock();
    }
}