Package org.apache.ace.range

Examples of org.apache.ace.range.SortedRangeSet


        }
        return false;
    }

    public SortedRangeSet getRange() throws IOException {
        return new SortedRangeSet(new long[] {currentVersion});
    }
View Full Code Here


        MockLogSyncTask task = new MockLogSyncTask("mocklog", "mocklog");
        // compare two empty lists
        task.writeDelta(task.calculateDelta(src, dest), null);
        assert task.m_calledWith.isEmpty() : "Delta of two empty lists should be empty";
        // add something to the source
        src.add(new LogDescriptor("gwid", 1, new SortedRangeSet("1-5")));
        task.writeDelta(task.calculateDelta(src, dest), null);
        assert task.m_calledWith.size() == 1 : "Delta should be 1 instead of: " + task.m_calledWith.size();
        task.m_calledWith.clear();
        // add an overlapping destination
        dest.add(new LogDescriptor("gwid", 1, new SortedRangeSet("1-3")));
        task.writeDelta(task.calculateDelta(src, dest), null);
        assert task.m_calledWith.size() == 1 : "Delta should be 1 instead of: " + task.m_calledWith.size();
        RangeIterator i = task.m_calledWith.get(0).getRangeSet().iterator();
        assert i.next() == 4 : "Illegal value in SortedRangeSet";
        assert i.next() == 5 : "Illegal value in SortedRangeSet";
        assert !i.hasNext() : "Illegal value in SortedRangeSet";
        task.m_calledWith.clear();
        // add a non-overlapping destination
        dest.add(new LogDescriptor("gwid", 2, new SortedRangeSet("50-100")));
        task.writeDelta(task.calculateDelta(src, dest), null);
        assert task.m_calledWith.size() == 1 : "Delta should be 1 instead of: " + task.m_calledWith.size();
        i = task.m_calledWith.get(0).getRangeSet().iterator();
        assert i.next() == 4 : "Illegal value in SortedRangeSet";
        assert i.next() == 5 : "Illegal value in SortedRangeSet";
        assert !i.hasNext() : "Illegal value in SortedRangeSet";
        task.m_calledWith.clear();
        // add non-overlapping source
        src.add(new LogDescriptor("gwid", 2, new SortedRangeSet("1-49")));
        task.writeDelta(task.calculateDelta(src, dest), null);
        assert task.m_calledWith.size() == 2 : "Delta should be 2 instead of: " + task.m_calledWith.size();
        task.m_calledWith.clear();
        // add a source with gaps
        src.add(new LogDescriptor("gwid", 3, new SortedRangeSet("1-10")));
        dest.add(new LogDescriptor("gwid", 3, new SortedRangeSet("3,5-8")));
        task.writeDelta(task.calculateDelta(src, dest), null);
        assert task.m_calledWith.size() == 3 : "Delta should be 3 instead of: " + task.m_calledWith.size();
        for (LogDescriptor l : task.m_calledWith) {
            if (l.getLogID() == 3) {
                i = l.getRangeSet().iterator();
View Full Code Here

        TestUtils.configureObject(m_task, LogStore.class);
    }

    @Test(groups = { UNIT })
    public synchronized void getRange() throws Exception {
        final LogDescriptor range = new LogDescriptor(TARGET_ID, 1, new SortedRangeSet("1-10"));
        m_task.getDescriptor(new InputStream() {
            int m_count = 0;
            byte[] m_bytes = (range.toRepresentation() + "\n").getBytes();
            @Override
            public int read() throws IOException {
View Full Code Here

        });
    }

    @Test(groups = { UNIT })
    public synchronized void synchronizeLog() throws Exception {
        final LogDescriptor range = new LogDescriptor(TARGET_ID, 1, new SortedRangeSet(new long[] {0}));
        final LogEvent event = new LogEvent(TARGET_ID, 1, 1, 1, 1, new Properties());
        final List<LogEvent> events = new ArrayList<LogEvent>();
        events.add(event);

        InputStream input = new InputStream() {
View Full Code Here

            m_logID = Long.parseLong(st.nextToken());
            String rangeSet = "";
            if (st.hasMoreTokens()) {
                rangeSet = st.nextToken();
            }
            m_rangeSet = new SortedRangeSet(Codec.decode(rangeSet));
        }
        catch (NoSuchElementException e) {
            throw new IllegalArgumentException("Could not create range from: " + representation);
        }
    }
View Full Code Here

        if (highestLocal == 0) {
            // No events, no need to synchronize
            return;
        }

        SortedRangeSet localRange = new SortedRangeSet("1-" + highestLocal);
        SortedRangeSet remoteRange = getDescriptor(queryInput).getRangeSet();
        SortedRangeSet delta = remoteRange.diffDest(localRange);
        RangeIterator rangeIterator = delta.iterator();

        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(sendConnection.getOutputStream()));

        if (rangeIterator.hasNext()) {
            long lowest = rangeIterator.next();
            long highest = delta.getHigh();
            if (lowest <= highest) {
                List events = m_LogStore.get(logID, lowest, highestLocal > highest ? highest : highestLocal);
                Iterator iter = events.iterator();
                while (iter.hasNext()) {
                    LogEvent current = (LogEvent) iter.next();
View Full Code Here

    protected boolean handleReceive(String targetID, String logID, String range, String filter, ServletOutputStream output) throws IOException {
        if ((targetID != null) && (logID != null)) {
            // target and log id are specified, return only the events that are in the range that matches these id's
            if (range != null) {
                LogDescriptor storeDescriptor = m_store.getDescriptor(targetID, Long.parseLong(logID));
                outputRange(output, new LogDescriptor(storeDescriptor.getTargetID(), storeDescriptor.getLogID(), new SortedRangeSet(range)));
            }
            else {
                outputRange(output, m_store.getDescriptor(targetID, Long.parseLong(logID)));
            }
            return true;
View Full Code Here

     * @see org.apache.ace.log.server.store.LogStore#get(org.apache.ace.log.LogDescriptor)
     */
    public synchronized List<LogEvent> get(LogDescriptor descriptor)
            throws IOException {
        final List<LogEvent> result = new ArrayList<LogEvent>();
        final SortedRangeSet set = descriptor.getRangeSet();
        BufferedReader in = null;
        try {
            File log = new File(new File(m_dir,
                    targetIDToFilename(descriptor.getTargetID())),
                    String.valueOf(descriptor.getLogID()));
            if (!log.isFile()) {
                return result;
            }
            in = new BufferedReader(new FileReader(log));
            String file = log.getAbsolutePath();
            long counter = 0;
            for (String line = in.readLine(); line != null; line = in
                    .readLine()) {
                LogEvent event = new LogEvent(line);
                long id = event.getID();
                if ((counter != -1) && ++counter == id) {

                } else {
                    counter = -1;
                }
                if (set.contains(id)) {
                    result.add(event);
                }
            }
            if (counter < 1) {
                m_fileToID.remove(file);
View Full Code Here

        Long high = m_fileToID.get(new File(new File(m_dir,
                targetIDToFilename(targetID)), String.valueOf(logID))
                .getAbsolutePath());
        if (high != null) {
            Range r = new Range(1, high);
            return new LogDescriptor(targetID, logID, new SortedRangeSet(
                    r.toRepresentation()));
        }
        List<LogEvent> events = get(new LogDescriptor(targetID, logID,
                SortedRangeSet.FULL_SET));

        long[] idsArray = new long[events.size()];
        int i = 0;
        for (LogEvent e : events) {
            idsArray[i++] = e.getID();
        }
        return new LogDescriptor(targetID, logID, new SortedRangeSet(idsArray));
    }
View Full Code Here

        List<LogDescriptor> result = new ArrayList<LogDescriptor>();
        for (LogDescriptor s : source) {
            LogDescriptor diffs = s;
            for (LogDescriptor d : destination) {
                if ((s.getLogID() == d.getLogID()) && (s.getTargetID().equals(d.getTargetID()))) {
                    SortedRangeSet rangeDiff = d.getRangeSet().diffDest(s.getRangeSet());
                    if (!isEmptyRangeSet(rangeDiff)) {
                        diffs = new LogDescriptor(s.getTargetID(), s.getLogID(), rangeDiff);
                    }
                    else {
                        diffs = null;
View Full Code Here

TOP

Related Classes of org.apache.ace.range.SortedRangeSet

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.