use of com.generallycloud.baseio.codec.protobase.future.ProtobaseFuture in project baseio by generallycloud.
the class TestSimple method main.
public static void main(String[] args) throws Exception {
String serviceKey = "/test-simple";
String param = "ttt";
IoEventHandleAdaptor eventHandle = new IoEventHandleAdaptor() {
@Override
public void accept(SocketSession session, Future future) throws Exception {
System.out.println("________________________" + future.getReadText());
}
};
SocketChannelContext context = new NioSocketChannelContext(new ServerConfiguration(18300));
SocketChannelConnector connector = new SocketChannelConnector(context);
context.setProtocolFactory(new ProtobaseProtocolFactory());
context.addSessionEventListener(new LoggerSocketSEListener());
context.setIoEventHandleAdaptor(eventHandle);
SocketSession session = connector.connect();
ProtobaseFuture f = new ProtobaseFutureImpl(connector.getContext(), serviceKey);
f.write(param);
session.flush(f);
ThreadUtil.sleep(500);
CloseUtil.close(connector);
}
use of com.generallycloud.baseio.codec.protobase.future.ProtobaseFuture in project baseio by generallycloud.
the class RTPClient method createRoom.
public boolean createRoom(String inviteUsername) throws RTPException {
ProtobaseFuture future;
try {
future = session.request(RTPCreateRoomServlet.SERVICE_NAME, null);
} catch (IOException e) {
throw new RTPException(e.getMessage(), e);
}
String roomId = future.getReadText();
if ("-1".equals(roomId)) {
throw new RTPException("create room failed");
}
this.roomId = roomId;
this.inviteCustomer(inviteUsername);
return true;
}
use of com.generallycloud.baseio.codec.protobase.future.ProtobaseFuture in project baseio by generallycloud.
the class DefaultMessageConsumer method transactionVal.
private boolean transactionVal(String action) throws MQException {
try {
WaiterOnFuture onReadFuture = new WaiterOnFuture();
session.listen(MQTransactionServlet.SERVICE_NAME, onReadFuture);
session.write(MQTransactionServlet.SERVICE_NAME, action);
if (onReadFuture.await(3000)) {
throw MQException.TIME_OUT;
}
ProtobaseFuture future = (ProtobaseFuture) onReadFuture.getReadFuture();
RESMessage message = RESMessageDecoder.decode(future.getReadText());
if (message.getCode() == 0) {
return true;
} else {
throw new MQException(message.getDescription());
}
} catch (IOException e) {
throw new MQException(e.getMessage(), e);
}
}
use of com.generallycloud.baseio.codec.protobase.future.ProtobaseFuture in project baseio by generallycloud.
the class DefaultMessageProducer method offer.
private boolean offer(Message message, String serviceName) throws MQException {
String param = message.toString();
ProtobaseFuture future = null;
int msgType = message.getMsgType();
try {
if (msgType == Message.TYPE_TEXT || msgType == Message.TYPE_MAP) {
future = session.request(serviceName, param);
} else if (msgType == Message.TYPE_TEXT_BYTE || msgType == Message.TYPE_MAP_BYTE) {
BytedMessage _message = (BytedMessage) message;
future = session.request(serviceName, param, _message.getByteArray());
} else {
throw new MQException("msgType:" + msgType);
}
} catch (IOException e) {
throw new MQException(e.getMessage(), e);
}
String result = future.getReadText();
if (result.length() == 1) {
return "T".equals(result);
}
throw new MQException(result);
}
use of com.generallycloud.baseio.codec.protobase.future.ProtobaseFuture in project baseio by generallycloud.
the class Consumer method push.
// FIXME push 失败时对message进行回收,并移除Consumer
public void push(Message message) throws IOException {
this.message = message;
TransactionSection section = attachment.getTransactionSection();
if (section != null) {
section.offerMessage(message);
}
int msgType = message.getMsgType();
String content = message.toString();
SocketSession session = this.session;
ProtobaseFuture f = new ProtobaseFutureImpl(session.getContext(), future.getFutureId(), future.getFutureName());
f.write(content);
if (msgType == Message.TYPE_TEXT || msgType == Message.TYPE_MAP) {
session.flush(f);
} else if (msgType == Message.TYPE_TEXT_BYTE || msgType == Message.TYPE_MAP_BYTE) {
BytedMessage byteMessage = (BytedMessage) message;
byte[] bytes = byteMessage.getByteArray();
f.writeBinary(bytes);
session.flush(f);
}
}
Aggregations