use of jp.ossc.nimbus.service.publish.MessageSendException 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);
}
}
}
use of jp.ossc.nimbus.service.publish.MessageSendException in project nimbus by nimbus-org.
the class DistributedSharedContextService method setRehashEnabled.
public void setRehashEnabled(boolean isEnabled) throws SharedContextSendException, SharedContextTimeoutException {
if (getState() == STARTED) {
try {
Message message = serverConnection.createMessage(subject, Integer.toString(DistributedSharedContextEvent.EVENT_REHASH_SWITCH));
message.setSubject(clientSubject, null);
Set receiveClients = serverConnection.getReceiveClientIds(message);
if (receiveClients.size() != 0) {
message.setObject(new DistributedSharedContextEvent(DistributedSharedContextEvent.EVENT_REHASH_SWITCH, isEnabled ? Boolean.TRUE : Boolean.FALSE));
try {
Message[] responses = serverConnection.request(message, isClient ? clientSubject : subject, null, 0, defaultTimeout);
for (int i = 0; i < responses.length; i++) {
Object ret = responses[i].getObject();
responses[i].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);
}
}
isRehashEnabled = isEnabled;
}
use of jp.ossc.nimbus.service.publish.MessageSendException in project nimbus by nimbus-org.
the class DistributedSharedContextService method displayDistributeInfo.
public String displayDistributeInfo() throws SharedContextSendException, SharedContextTimeoutException {
DistributeGrid grid = new DistributeGrid();
try {
Message message = serverConnection.createMessage(subject, Integer.toString(DistributedSharedContextEvent.EVENT_GET_DIST_INFO));
Set receiveClients = serverConnection.getReceiveClientIds(message);
if (!isClient) {
grid.addDistributeInfo(distributeInfo);
}
if (receiveClients.size() != 0) {
long timeout = rehashTimeout;
message.setObject(new DistributedSharedContextEvent(DistributedSharedContextEvent.EVENT_GET_DIST_INFO, new Long(timeout)));
try {
Message[] responses = serverConnection.request(message, isClient ? clientSubject : subject, null, 0, timeout);
for (int i = 0; i < responses.length; i++) {
grid.addDistributeInfo((DistributeInfo) responses[i].getObject());
responses[i].recycle();
}
} catch (RequestTimeoutException e) {
throw new SharedContextTimeoutException(e);
}
}
} catch (MessageException e) {
throw new SharedContextSendException(e);
} catch (MessageSendException e) {
throw new SharedContextSendException(e);
}
return grid.toString();
}
use of jp.ossc.nimbus.service.publish.MessageSendException in project nimbus by nimbus-org.
the class ClientConnectionImpl method startReceive.
private void startReceive(long from, boolean isRestart) throws MessageSendException {
if (socket == null) {
throw new MessageSendException("Not connected.");
}
if (!isRestart && isStartReceive) {
return;
}
try {
isStartReceive = true;
send(new StartReceiveMessage(from), isAcknowledge);
} catch (SocketTimeoutException e) {
isStartReceive = false;
throw new MessageSendException(e);
} catch (SocketException e) {
isStartReceive = false;
throw new MessageSendException(e);
} catch (IOException e) {
isStartReceive = false;
throw new MessageSendException(e);
} catch (ClassNotFoundException e) {
isStartReceive = false;
throw new MessageSendException(e);
}
}
use of jp.ossc.nimbus.service.publish.MessageSendException in project nimbus by nimbus-org.
the class ClientConnectionImpl method addSubject.
public void addSubject(String subject, String[] keys) throws MessageSendException {
if (socket == null) {
throw new MessageSendException("Not connected.");
}
if (subject == null) {
return;
}
try {
send(new AddMessage(subject, keys), isAcknowledge);
} catch (SocketTimeoutException e) {
throw new MessageSendException(e);
} catch (SocketException e) {
throw new MessageSendException(e);
} catch (IOException e) {
throw new MessageSendException(e);
} catch (ClassNotFoundException e) {
throw new MessageSendException(e);
}
if (subjects == null) {
subjects = Collections.synchronizedMap(new HashMap());
}
Set keySet = (Set) subjects.get(subject);
if (keySet == null) {
keySet = Collections.synchronizedSet(new HashSet());
subjects.put(subject, keySet);
}
if (keys == null) {
keySet.add(null);
} else {
for (int i = 0; i < keys.length; i++) {
keySet.add(keys[i]);
}
}
}
Aggregations