On Tue, Mar 17, 2015 at 10:15 PM, Sayan Goswami <[email protected]> wrote: > Hi All, > > I am using CodedOutputStream and CodedInputStream to transfer messages > across a network like so: > > Client requests: > > Socket serverSocket = new Socket(hosts, ports); > > CodedOutputStream outputStream = > CodedOutputStream.newInstance(serverSocket.getOutputStream()); > > outputStream.flush(); > > CodedInputStream inputStream = > CodedInputStream.newInstance(serverSocket.getInputStream()); > > > // the following happens inside a loop > > Request request = Request.newBuilder() > > .setType(Request.RequestType.GET) > > .setKey(key) > > .build(); > > > outputStream.writeRawVarint32(request.getSerializedSize()); > > request.writeTo(outputStream); > > outputStream.flush(); > > > Server Processes Request: > > > CodedOutputStream output = > CodedOutputStream.newInstance(clientSocket.getOutputStream()); > > output.flush(); > > CodedInputStream input = > CodedInputStream.newInstance(clientSocket.getInputStream()); > > > int length = input.readRawVarint32(); > > byte[] message = input.readRawBytes(length);
Ew. You can just do a limit = input.pushLimit(length) request = Request.Builder.mergeFrom(input).build(); input.popLimit(limit); > > Request request = Request.parseFrom(message); > > // do things with request > > > Now, each request of mine, has a serialized size of 56.. so I can send many > messages up the stream, but what can I do when the size limit of 64MB is > exceeded? Is there any way to reset the buffer? Following is the error > message I am getting: > > > Protocol message was too large. May be malicious. Use > CodedInputStream.setSizeLimit() to increase the size limit. >From the docs: If you want to read several messages from a single CodedInputStream, you could call resetSizeCounter() after each one to avoid hitting the size limit. Cheers, -ilia -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
