use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.
the class DistributedClientConnectionImpl method startReceive.
public void startReceive(long from) throws MessageSendException {
if (parallelRequestQueueHandlerContainer == null) {
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
((ClientConnection) connectionList.get(i)).startReceive(from);
}
} else {
DefaultQueueService responseQueue = new DefaultQueueService();
try {
responseQueue.create();
responseQueue.start();
} catch (Exception e) {
}
responseQueue.accept();
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = new AsynchContext(new StartReceiveParallelRequest((ClientConnection) connectionList.get(i), from), responseQueue);
parallelRequestQueueHandlerContainer.push(asynchContext);
}
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = (AsynchContext) responseQueue.get();
if (asynchContext == null) {
break;
} else {
try {
asynchContext.checkError();
} catch (MessageSendException e) {
throw e;
} catch (RuntimeException e) {
throw e;
} catch (Error e) {
throw e;
} catch (Throwable th) {
// 起きないはず
throw new MessageSendException(th);
}
}
}
}
}
use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.
the class DistributedClientConnectionImpl method stopReceive.
public void stopReceive() throws MessageSendException {
if (parallelRequestQueueHandlerContainer == null) {
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
((ClientConnection) connectionList.get(i)).stopReceive();
}
} else {
DefaultQueueService responseQueue = new DefaultQueueService();
try {
responseQueue.create();
responseQueue.start();
} catch (Exception e) {
}
responseQueue.accept();
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = new AsynchContext(new StopReceiveParallelRequest((ClientConnection) connectionList.get(i)), responseQueue);
parallelRequestQueueHandlerContainer.push(asynchContext);
}
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = (AsynchContext) responseQueue.get();
if (asynchContext == null) {
break;
} else {
try {
asynchContext.checkError();
} catch (MessageSendException e) {
throw e;
} catch (RuntimeException e) {
throw e;
} catch (Error e) {
throw e;
} catch (Throwable th) {
// 起きないはず
throw new MessageSendException(th);
}
}
}
}
}
use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.
the class DistributedClientConnectionImpl method addSubject.
public void addSubject(String subject, String[] keys) throws MessageSendException {
if (parallelRequestQueueHandlerContainer == null) {
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
((ClientConnection) connectionList.get(i)).addSubject(subject, keys);
}
} else {
DefaultQueueService responseQueue = new DefaultQueueService();
try {
responseQueue.create();
responseQueue.start();
} catch (Exception e) {
}
responseQueue.accept();
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = new AsynchContext(new AddSubjectParallelRequest((ClientConnection) connectionList.get(i), subject, keys), responseQueue);
parallelRequestQueueHandlerContainer.push(asynchContext);
}
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = (AsynchContext) responseQueue.get();
if (asynchContext == null) {
break;
} else {
try {
asynchContext.checkError();
} catch (MessageSendException e) {
throw e;
} catch (RuntimeException e) {
throw e;
} catch (Error e) {
throw e;
} catch (Throwable th) {
// 起きないはず
throw new MessageSendException(th);
}
}
}
}
}
use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.
the class DistributedClientConnectionImpl method close.
public void close() {
try {
if (parallelRequestQueueHandlerContainer == null) {
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
try {
((ClientConnection) connectionList.get(i)).close();
} catch (RuntimeException e) {
}
}
} else {
DefaultQueueService responseQueue = new DefaultQueueService();
try {
responseQueue.create();
responseQueue.start();
} catch (Exception e) {
}
responseQueue.accept();
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = new AsynchContext(new CloseParallelRequest((ClientConnection) connectionList.get(i)), responseQueue);
parallelRequestQueueHandlerContainer.push(asynchContext);
}
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = (AsynchContext) responseQueue.get();
if (asynchContext == null) {
break;
} else {
try {
asynchContext.checkError();
} catch (Throwable th) {
// 起きないはず
}
}
}
}
if (parallelRequestQueueHandlerContainer != null) {
parallelRequestQueueHandlerContainer.stop();
parallelRequestQueueHandlerContainer.destroy();
parallelRequestQueueHandlerContainer = null;
}
} finally {
id = null;
}
}
use of jp.ossc.nimbus.service.queue.AsynchContext in project nimbus by nimbus-org.
the class DistributedClientConnectionImpl method connect.
public void connect(Object id) throws ConnectException {
Object tmpId = null;
if (id == null) {
try {
tmpId = new GlobalUID();
} catch (UnknownHostException e) {
throw new ConnectException(e);
}
} else {
tmpId = id;
}
if (connectionList.size() > 1) {
try {
parallelRequestQueueHandlerContainer = new QueueHandlerContainerService();
parallelRequestQueueHandlerContainer.create();
parallelRequestQueueHandlerContainer.setQueueHandlerSize(connectionList.size());
DefaultQueueService parallelRequestQueue = new DefaultQueueService();
parallelRequestQueue.create();
parallelRequestQueue.start();
parallelRequestQueueHandlerContainer.setQueueService(parallelRequestQueue);
parallelRequestQueueHandlerContainer.setQueueHandler(new ParallelRequestQueueHandler());
parallelRequestQueueHandlerContainer.setIgnoreNullElement(true);
parallelRequestQueueHandlerContainer.setWaitTimeout(1000l);
parallelRequestQueueHandlerContainer.start();
} catch (Exception e) {
throw new ConnectException(e);
}
}
if (parallelRequestQueueHandlerContainer == null) {
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
ClientConnection connection = (ClientConnection) connectionList.get(i);
connection.setServiceManagerName(serviceManagerName);
connection.connect(tmpId);
}
} else {
DefaultQueueService responseQueue = new DefaultQueueService();
try {
responseQueue.create();
responseQueue.start();
} catch (Exception e) {
}
responseQueue.accept();
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = new AsynchContext(new ConnectParallelRequest((ClientConnection) connectionList.get(i), tmpId), responseQueue);
parallelRequestQueueHandlerContainer.push(asynchContext);
}
for (int i = 0, imax = connectionList.size(); i < imax; i++) {
AsynchContext asynchContext = (AsynchContext) responseQueue.get();
if (asynchContext == null) {
break;
} else {
try {
asynchContext.checkError();
} catch (ConnectException e) {
throw e;
} catch (RuntimeException e) {
throw e;
} catch (Error e) {
throw e;
} catch (Throwable th) {
// 起きないはず
throw new ConnectException(th);
}
}
}
}
this.id = tmpId;
}
Aggregations