Search in sources :

Example 1 with AsynchContext

use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.

the class DistributedSharedContextService method keySet.

public Set keySet(long timeout) throws SharedContextSendException, SharedContextTimeoutException {
    Set result = new HashSet();
    if (parallelRequestQueueHandlerContainer == null) {
        for (int i = 0; i < sharedContextArray.length; i++) {
            long start = System.currentTimeMillis();
            final boolean isNoTimeout = timeout <= 0;
            timeout = isNoTimeout ? timeout : timeout - (System.currentTimeMillis() - start);
            if (!isNoTimeout && timeout < 0) {
                throw new SharedContextTimeoutException("nodeSize=" + sharedContextArray.length + ", responseCount=" + i);
            }
            result.addAll(sharedContextArray[i].keySet(timeout));
        }
    } else {
        DefaultQueueService responseQueue = new DefaultQueueService();
        try {
            responseQueue.create();
            responseQueue.start();
        } catch (Exception e) {
        }
        responseQueue.accept();
        for (int i = 0; i < sharedContextArray.length; i++) {
            AsynchContext asynchContext = new AsynchContext(new KeySetParallelRequest(sharedContextArray[i], timeout), responseQueue);
            parallelRequestQueueHandlerContainer.push(asynchContext);
        }
        for (int i = 0; i < sharedContextArray.length; i++) {
            AsynchContext asynchContext = (AsynchContext) responseQueue.get();
            if (asynchContext == null) {
                break;
            } else {
                try {
                    asynchContext.checkError();
                } catch (SharedContextSendException e) {
                    throw e;
                } catch (SharedContextTimeoutException e) {
                    throw e;
                } catch (Error e) {
                    throw e;
                } catch (Throwable th) {
                    // 起きないはず
                    throw new SharedContextSendException(th);
                }
                result.addAll((Set) asynchContext.getOutput());
            }
        }
    }
    return result;
}
Also used : HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) Set(java.util.Set) DefaultQueueService(jp.ossc.nimbus.service.queue.DefaultQueueService) MessageSendException(jp.ossc.nimbus.service.publish.MessageSendException) EvaluateException(jp.ossc.nimbus.service.interpreter.EvaluateException) RequestTimeoutException(jp.ossc.nimbus.service.publish.RequestTimeoutException) IndexNotFoundException(jp.ossc.nimbus.beans.IndexNotFoundException) MessageException(jp.ossc.nimbus.service.publish.MessageException) IndexPropertyAccessException(jp.ossc.nimbus.beans.IndexPropertyAccessException) AsynchContext(jp.ossc.nimbus.service.queue.AsynchContext) HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet)

Example 2 with AsynchContext

use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.

the class DistributedSharedContextService method putAll.

public void putAll(Map t, long timeout) throws SharedContextSendException, SharedContextTimeoutException {
    final long start = System.currentTimeMillis();
    Map distMap = new HashMap();
    Iterator entries = t.entrySet().iterator();
    while (entries.hasNext()) {
        Map.Entry entry = (Map.Entry) entries.next();
        SharedContext context = selectDistributeContext(entry.getKey());
        Map map = (Map) distMap.get(context);
        if (map == null) {
            map = new HashMap();
            distMap.put(context, map);
        }
        map.put(entry.getKey(), entry.getValue());
    }
    if (parallelRequestQueueHandlerContainer == null) {
        int completed = 0;
        entries = distMap.entrySet().iterator();
        while (entries.hasNext()) {
            Map.Entry entry = (Map.Entry) entries.next();
            if (timeout > 0) {
                final long currentTimeout = timeout - (start - System.currentTimeMillis());
                if (currentTimeout > 0) {
                    ((SharedContext) entry.getKey()).putAll((Map) entry.getValue(), currentTimeout);
                } else {
                    throw new SharedContextTimeoutException("There is a node that is not possible yet putAll. completed=" + completed + "notCompleted=" + (distMap.size() - completed));
                }
            } else {
                ((SharedContext) entry.getKey()).putAll((Map) entry.getValue(), timeout);
            }
            completed++;
        }
    } else {
        DefaultQueueService responseQueue = new DefaultQueueService();
        try {
            responseQueue.create();
            responseQueue.start();
        } catch (Exception e) {
        }
        responseQueue.accept();
        while (entries.hasNext()) {
            Map.Entry entry = (Map.Entry) entries.next();
            AsynchContext asynchContext = new AsynchContext(new PutAllParallelRequest((SharedContext) entry.getKey(), (Map) entry.getValue(), timeout), responseQueue);
            parallelRequestQueueHandlerContainer.push(asynchContext);
        }
        for (int i = 0; i < sharedContextArray.length; i++) {
            AsynchContext asynchContext = (AsynchContext) responseQueue.get();
            if (asynchContext == null) {
                break;
            } else {
                try {
                    asynchContext.checkError();
                } catch (SharedContextSendException e) {
                    throw e;
                } catch (SharedContextTimeoutException e) {
                    throw e;
                } catch (Error e) {
                    throw e;
                } catch (Throwable th) {
                    // 起きないはず
                    throw new SharedContextSendException(th);
                }
            }
        }
    }
}
Also used : HashMap(java.util.HashMap) DefaultQueueService(jp.ossc.nimbus.service.queue.DefaultQueueService) MessageSendException(jp.ossc.nimbus.service.publish.MessageSendException) EvaluateException(jp.ossc.nimbus.service.interpreter.EvaluateException) RequestTimeoutException(jp.ossc.nimbus.service.publish.RequestTimeoutException) IndexNotFoundException(jp.ossc.nimbus.beans.IndexNotFoundException) MessageException(jp.ossc.nimbus.service.publish.MessageException) IndexPropertyAccessException(jp.ossc.nimbus.beans.IndexPropertyAccessException) Iterator(java.util.Iterator) AsynchContext(jp.ossc.nimbus.service.queue.AsynchContext) CacheMap(jp.ossc.nimbus.service.cache.CacheMap) HashMap(java.util.HashMap) Map(java.util.Map)

Example 3 with AsynchContext

use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.

the class DistributedSharedContextService method clearAsynch.

public void clearAsynch() throws SharedContextSendException {
    if (parallelRequestQueueHandlerContainer == null) {
        for (int i = 0; i < sharedContextArray.length; i++) {
            sharedContextArray[i].clearAsynch();
        }
    } else {
        DefaultQueueService responseQueue = new DefaultQueueService();
        try {
            responseQueue.create();
            responseQueue.start();
        } catch (Exception e) {
        }
        responseQueue.accept();
        for (int i = 0; i < sharedContextArray.length; i++) {
            AsynchContext asynchContext = new AsynchContext(new ClearAsynchParallelRequest(sharedContextArray[i]), responseQueue);
            parallelRequestQueueHandlerContainer.push(asynchContext);
        }
        for (int i = 0; i < sharedContextArray.length; i++) {
            AsynchContext asynchContext = (AsynchContext) responseQueue.get();
            if (asynchContext == null) {
                break;
            } else {
                try {
                    asynchContext.checkError();
                } catch (SharedContextSendException e) {
                    throw e;
                } catch (Error e) {
                    throw e;
                } catch (Throwable th) {
                    // 起きないはず
                    throw new SharedContextSendException(th);
                }
            }
        }
    }
}
Also used : AsynchContext(jp.ossc.nimbus.service.queue.AsynchContext) DefaultQueueService(jp.ossc.nimbus.service.queue.DefaultQueueService) MessageSendException(jp.ossc.nimbus.service.publish.MessageSendException) EvaluateException(jp.ossc.nimbus.service.interpreter.EvaluateException) RequestTimeoutException(jp.ossc.nimbus.service.publish.RequestTimeoutException) IndexNotFoundException(jp.ossc.nimbus.beans.IndexNotFoundException) MessageException(jp.ossc.nimbus.service.publish.MessageException) IndexPropertyAccessException(jp.ossc.nimbus.beans.IndexPropertyAccessException)

Example 4 with AsynchContext

use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.

the class DistributedSharedContextService method save.

public synchronized void save(long timeout) throws Exception {
    if (isMain()) {
        if (contextStore != null) {
            if (isClearBeforeSave) {
                contextStore.clear();
            }
            if (parallelRequestQueueHandlerContainer == null) {
                for (int i = 0; i < sharedContextArray.length; i++) {
                    sharedContextArray[i].save(timeout);
                }
            } else {
                DefaultQueueService responseQueue = new DefaultQueueService();
                try {
                    responseQueue.create();
                    responseQueue.start();
                } catch (Exception e) {
                }
                responseQueue.accept();
                for (int i = 0; i < sharedContextArray.length; i++) {
                    AsynchContext asynchContext = new AsynchContext(new SaveParallelRequest(sharedContextArray[i], timeout), responseQueue);
                    parallelRequestQueueHandlerContainer.push(asynchContext);
                }
                for (int i = 0; i < sharedContextArray.length; i++) {
                    AsynchContext asynchContext = (AsynchContext) responseQueue.get();
                    if (asynchContext == null) {
                        break;
                    } else {
                        try {
                            asynchContext.checkError();
                        } catch (Exception e) {
                            throw e;
                        } catch (Error e) {
                            throw e;
                        } catch (Throwable th) {
                            // 起きないはず
                            throw new SharedContextSendException(th);
                        }
                    }
                }
            }
        } else {
            throw new UnsupportedOperationException();
        }
    } else {
        try {
            Message message = serverConnection.createMessage(subject, null);
            Set receiveClients = serverConnection.getReceiveClientIds(message);
            if (receiveClients.size() != 0) {
                message.setObject(new DistributedSharedContextEvent(DistributedSharedContextEvent.EVENT_SAVE, new Long(timeout)));
                try {
                    Message[] responses = serverConnection.request(message, isClient ? clientSubject : subject, null, 1, timeout);
                    Object ret = responses[0].getObject();
                    responses[0].recycle();
                    if (ret instanceof Throwable) {
                        throw new SharedContextSendException((Throwable) ret);
                    }
                } catch (RequestTimeoutException e) {
                    throw new SharedContextTimeoutException(e);
                }
            }
        } catch (MessageException e) {
            throw new SharedContextSendException(e);
        } catch (MessageSendException e) {
            throw new SharedContextSendException(e);
        }
    }
}
Also used : HashSet(java.util.HashSet) LinkedHashSet(java.util.LinkedHashSet) Set(java.util.Set) Message(jp.ossc.nimbus.service.publish.Message) DefaultQueueService(jp.ossc.nimbus.service.queue.DefaultQueueService) MessageSendException(jp.ossc.nimbus.service.publish.MessageSendException) EvaluateException(jp.ossc.nimbus.service.interpreter.EvaluateException) RequestTimeoutException(jp.ossc.nimbus.service.publish.RequestTimeoutException) IndexNotFoundException(jp.ossc.nimbus.beans.IndexNotFoundException) MessageException(jp.ossc.nimbus.service.publish.MessageException) IndexPropertyAccessException(jp.ossc.nimbus.beans.IndexPropertyAccessException) RequestTimeoutException(jp.ossc.nimbus.service.publish.RequestTimeoutException) MessageSendException(jp.ossc.nimbus.service.publish.MessageSendException) MessageException(jp.ossc.nimbus.service.publish.MessageException) AsynchContext(jp.ossc.nimbus.service.queue.AsynchContext)

Example 5 with AsynchContext

use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.

the class ServerConnectionImpl method createAsynchContext.

protected AsynchContext createAsynchContext(SendRequest input, Queue queue) {
    AsynchContext result = null;
    if (asynchContextBuffer.size() != 0) {
        synchronized (asynchContextBuffer) {
            if (asynchContextBuffer.size() != 0) {
                result = (AsynchContext) asynchContextBuffer.remove(0);
                result.setInput(input);
                result.setResponseQueue(queue);
            }
        }
    }
    if (result == null) {
        result = new AsynchContext(input, queue);
    }
    return result;
}
Also used : AsynchContext(jp.ossc.nimbus.service.queue.AsynchContext)

Aggregations

AsynchContext (jp.ossc.nimbus.service.queue.AsynchContext)25 DefaultQueueService (jp.ossc.nimbus.service.queue.DefaultQueueService)20 MessageSendException (jp.ossc.nimbus.service.publish.MessageSendException)13 MessageException (jp.ossc.nimbus.service.publish.MessageException)11 IndexNotFoundException (jp.ossc.nimbus.beans.IndexNotFoundException)10 IndexPropertyAccessException (jp.ossc.nimbus.beans.IndexPropertyAccessException)10 EvaluateException (jp.ossc.nimbus.service.interpreter.EvaluateException)10 RequestTimeoutException (jp.ossc.nimbus.service.publish.RequestTimeoutException)10 UnknownHostException (java.net.UnknownHostException)8 HashMap (java.util.HashMap)4 Iterator (java.util.Iterator)4 Map (java.util.Map)4 ArrayList (java.util.ArrayList)3 HashSet (java.util.HashSet)3 LinkedHashSet (java.util.LinkedHashSet)3 List (java.util.List)3 Set (java.util.Set)3 CacheMap (jp.ossc.nimbus.service.cache.CacheMap)2 QueueHandlerContainerService (jp.ossc.nimbus.service.queue.QueueHandlerContainerService)2 IOException (java.io.IOException)1