本文整理汇总了Java中org.apache.thrift.protocol.TProtocol.writeMessageBegin方法的典型用法代码示例。如果您正苦于以下问题:Java TProtocol.writeMessageBegin方法的具体用法?Java TProtocol.writeMessageBegin怎么用?Java TProtocol.writeMessageBegin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.thrift.protocol.TProtocol
的用法示例。
在下文中一共展示了TProtocol.writeMessageBegin方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: process
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
@Override
public boolean process(TProtocol in, TProtocol out) throws TException {
TMessage msg = in.readMessageBegin();
Controller<?, ?> fn = (Controller<?, ?>) this.beanFactory
.getBean(msg.name);
if (fn == null) {
if (LOGGER.isWarnEnabled()) {
LOGGER.warn("Invalid request: failed to find interface="
+ msg.name + ", from: " + getInetAddress(in));
}
TProtocolUtil.skip(in, TType.STRUCT);
in.readMessageEnd();
TApplicationException x = new TApplicationException(
TApplicationException.UNKNOWN_METHOD,
"Invalid method name: '" + msg.name + "'");
out.writeMessageBegin(new TMessage(msg.name,
TMessageType.EXCEPTION, msg.seqid));
x.write(out);
out.writeMessageEnd();
out.getTransport().flush();
return true;
}
process(msg.seqid, msg.name, in, out, fn);
return true;
}
示例2: encodeRequest
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request request)
throws IOException {
Invocation invocation = (Invocation) request.getData();
TProtocol protocol = newProtocol(channel.getUrl(), buffer);
try {
protocol.writeMessageBegin(new TMessage(
invocation.getMethodName(), TMessageType.CALL,
thriftSeq.getAndIncrement()));
protocol.writeStructBegin(new TStruct(invocation.getMethodName() + "_args"));
for(int i = 0; i < invocation.getParameterTypes().length; i++) {
Class<?> type = invocation.getParameterTypes()[i];
}
} catch (TException e) {
throw new IOException(e.getMessage(), e);
}
}
示例3: writeRequest
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
private static void writeRequest(MethodMetadata method, List<Object> parameters, TProtocol protocol)
throws Exception
{
TMessage requestMessage = new TMessage(method.getName(), CALL, SEQUENCE_ID);
protocol.writeMessageBegin(requestMessage);
// write the parameters
ProtocolWriter writer = new ProtocolWriter(new ThriftToDriftProtocolWriter(protocol));
writer.writeStructBegin(method.getName() + "_args");
for (int i = 0; i < parameters.size(); i++) {
Object value = parameters.get(i);
ParameterMetadata parameter = method.getParameters().get(i);
writer.writeField(parameter.getName(), parameter.getId(), parameter.getCodec(), value);
}
writer.writeStructEnd();
protocol.writeMessageEnd();
protocol.getTransport().flush();
}
示例4: writeResult
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
@SuppressWarnings("rawtypes")
private void writeResult(final TProtocol out, final TMessage msg, final WriterHandler onComplete, TBase args,
final TBase result) {
try {
onComplete.beforeWrite(msg, args, result);
// if (!isOneway()) {
out.writeMessageBegin(new TMessage(msg.name, TMessageType.REPLY, msg.seqid));
if (result != null) {
result.write(out);
} else {
out.writeStructBegin(null);
out.writeFieldStop();
out.writeStructEnd();
}
out.writeMessageEnd();
out.getTransport().flush();
// }
onComplete.afterWrite(msg, null, TMessageType.REPLY, args, result);
} catch (Throwable e) {
onComplete.afterWrite(msg, e, TMessageType.EXCEPTION, args, result);
}
}
示例5: process
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
@Override
public final boolean process(final TProtocol in, final TProtocol out)
throws TException {
final TMessage msg = in.readMessageBegin();
final ProcessFunction<LocatorServiceImpl, ?> fn = this.fnMap
.get(msg.name);
if (fn != null) {
fn.process(msg.seqid, in, out, this.inst);
// terminate connection on receiving closeConnection
// direct class comparison should be the fastest way
return fn.getClass() != LocatorService.Processor.closeConnection.class;
}
else {
TProtocolUtil.skip(in, TType.STRUCT);
in.readMessageEnd();
TApplicationException x = new TApplicationException(
TApplicationException.UNKNOWN_METHOD, "Invalid method name: '"
+ msg.name + "'");
out.writeMessageBegin(new TMessage(msg.name, TMessageType.EXCEPTION,
msg.seqid));
x.write(out);
out.writeMessageEnd();
out.getTransport().flush();
return true;
}
}
示例6: writeException
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
@SuppressWarnings({ "rawtypes" })
private void writeException(final TProtocol out, final TMessage msg, final WriterHandler onComplete,
final TApplicationException x, TBase args) {
Throwable cause = null;
try {
onComplete.beforeWrite(msg, args, null);
out.writeMessageBegin(new TMessage(msg.name, TMessageType.EXCEPTION, msg.seqid));
x.write(out);
out.writeMessageEnd();
out.getTransport().flush();
} catch (Throwable e) {
cause = e;
}
onComplete.afterWrite(msg, cause, TMessageType.EXCEPTION, args, null);
}
示例7: process
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
@Override
public final boolean process(final TProtocol in, final TProtocol out)
throws TException {
final TMessage msg = in.readMessageBegin();
final ProcessFunction<GFXDServiceImpl, ?> fn = this.fnMap.get(msg.name);
if (fn != null) {
fn.process(msg.seqid, in, out, this.inst);
// terminate connection on receiving closeConnection
// direct class comparison should be the fastest way
// TODO: SW: also need to clean up connection artifacts in the case of
// client connection failure (ConnectionListener does get a notification
// but how to tie the socket/connectionNumber to the connectionID?)
return fn.getClass() != GFXDService.Processor.closeConnection.class;
}
else {
TProtocolUtil.skip(in, TType.STRUCT);
in.readMessageEnd();
TApplicationException x = new TApplicationException(
TApplicationException.UNKNOWN_METHOD, "Invalid method name: '"
+ msg.name + "'");
out.writeMessageBegin(new TMessage(msg.name, TMessageType.EXCEPTION,
msg.seqid));
x.write(out);
out.writeMessageEnd();
out.getTransport().flush();
return true;
}
}
示例8: write_args
import org.apache.thrift.protocol.TProtocol; //导入方法依赖的package包/类
public void write_args(TProtocol prot) throws TException {
prot.writeMessageBegin(new TMessage(Processor.FUNCTION_NAME, TMessageType.CALL, 0));
ArgsThriftBase args = new ArgsThriftBase();
args.setFieldValue(AbstractThriftBase.FieldsEnum.VALUE, arg);
args.write(prot);
prot.writeMessageEnd();
}