use of org.apache.servicecomb.transport.highway.message.LoginRequest in project incubator-servicecomb-java-chassis by apache.
the class HighwayClientConnection method createLogin.
@Override
protected TcpOutputStream createLogin() {
try {
RequestHeader header = new RequestHeader();
header.setMsgType(MsgType.LOGIN);
LoginRequest login = new LoginRequest();
login.setProtocol(HighwayTransport.NAME);
login.setUseProtobufMapCodec(true);
HighwayOutputStream os = new HighwayOutputStream(AbstractTcpClientPackage.getAndIncRequestId(), null);
os.write(header, LoginRequest.getLoginRequestSchema(), login);
return os;
} catch (Throwable e) {
throw new Error("impossible.", e);
}
}
use of org.apache.servicecomb.transport.highway.message.LoginRequest in project incubator-servicecomb-java-chassis by apache.
the class HighwayServerConnection method onLogin.
protected void onLogin(long msgId, RequestHeader header, Buffer bodyBuffer) {
LoginRequest request = null;
try {
request = LoginRequest.readObject(bodyBuffer);
} catch (Exception e) {
String msg = String.format("decode setParameter error, msgId=%d", msgId);
LOGGER.error(msg, e);
netSocket.close();
return;
}
if (request != null) {
this.setProtocol(request.getProtocol());
this.setZipName(request.getZipName());
this.protobufFeature.setUseProtobufMapCodec(request.isUseProtobufMapCodec());
}
try (HighwayOutputStream os = new HighwayOutputStream(msgId, protobufFeature)) {
ResponseHeader responseHeader = new ResponseHeader();
responseHeader.setStatusCode(Status.OK.getStatusCode());
LoginResponse response = new LoginResponse();
response.setUseProtobufMapCodec(protobufFeature.isUseProtobufMapCodec());
os.write(ResponseHeader.getResponseHeaderSchema(), responseHeader, LoginResponse.getLoginResponseSchema(), response);
netSocket.write(os.getBuffer());
} catch (Exception e) {
throw new Error("impossible.", e);
}
}
use of org.apache.servicecomb.transport.highway.message.LoginRequest in project incubator-servicecomb-java-chassis by apache.
the class TestHighwayClient method testCreateLogin.
@Test
public void testCreateLogin(@Mocked NetClientWrapper netClientWrapper) throws Exception {
ProtobufCompatibleUtils.init();
HighwayClientConnection connection = new HighwayClientConnection(null, netClientWrapper, "highway://127.0.0.1:7890");
TcpOutputStream os = connection.createLogin();
ByteBuf buf = os.getBuffer().getByteBuf();
byte[] magic = new byte[TcpParser.TCP_MAGIC.length];
buf.readBytes(magic);
Assert.assertArrayEquals(TcpParser.TCP_MAGIC, magic);
Assert.assertEquals(os.getMsgId(), buf.readLong());
int start = TcpParser.TCP_HEADER_LENGTH;
int totalLen = buf.readInt();
int headerLen = buf.readInt();
Buffer headerBuffer = os.getBuffer().slice(start, start + headerLen);
int end = start + totalLen;
start += headerLen;
Buffer bodyBuffer = os.getBuffer().slice(start, end);
RequestHeader header = RequestHeader.readObject(headerBuffer, connection.getProtobufFeature());
Assert.assertEquals(MsgType.LOGIN, header.getMsgType());
LoginRequest login = LoginRequest.readObject(bodyBuffer);
Assert.assertEquals(HighwayTransport.NAME, login.getProtocol());
}
use of org.apache.servicecomb.transport.highway.message.LoginRequest in project incubator-servicecomb-java-chassis by apache.
the class TestHighwayServerConnection method testSetParameterError.
@Test
public void testSetParameterError() throws Exception {
header.setMsgType(MsgType.LOGIN);
Buffer headerBuffer = createBuffer(requestHeaderSchema, header);
LoginRequest body = new LoginRequest();
body.setProtocol("p");
body.setZipName("z");
Buffer bodyBuffer = createBuffer(setParameterRequestSchema, body);
bodyBuffer.setByte(0, (byte) 100);
connection.handle(0, headerBuffer, bodyBuffer);
Assert.assertEquals(null, connection.getProtocol());
Assert.assertEquals(null, connection.getZipName());
}
use of org.apache.servicecomb.transport.highway.message.LoginRequest in project incubator-servicecomb-java-chassis by apache.
the class TestHighwayServerConnection method testSetParameterNormal.
@Test
public void testSetParameterNormal() throws Exception {
header.setMsgType(MsgType.LOGIN);
Buffer headerBuffer = createBuffer(requestHeaderSchema, header);
LoginRequest body = new LoginRequest();
body.setProtocol("p");
body.setZipName("z");
Buffer bodyBuffer = createBuffer(setParameterRequestSchema, body);
connection.handle(0, headerBuffer, bodyBuffer);
Assert.assertEquals("p", connection.getProtocol());
Assert.assertEquals("z", connection.getZipName());
}
Aggregations