Package org.apache.vinci.transport
Class XTalkTransporter
- java.lang.Object
-
- org.apache.vinci.transport.XTalkTransporter
-
- All Implemented Interfaces:
FrameTransporter
public class XTalkTransporter extends java.lang.Object implements FrameTransporter
Implements XTalk marshalling of Frames.
-
-
Field Summary
Fields Modifier and Type Field Description static byteDOCUMENT_MARKERstatic byteELEMENT_MARKERstatic byte[]HEADERstatic bytePI_MARKERstatic byteSTRING_MARKERstatic byteVERSION_CODE
-
Constructor Summary
Constructors Constructor Description XTalkTransporter()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidattributesToBin(java.io.OutputStream os, Attributes attributes, byte[] workbuf)static intconsumeCharacters(java.io.InputStream is, byte[] byteBuf, char[] charBuf, int bytesToRead)Consume the string of bytesToRead utf-8 bytes.voidconsumeChildren(java.io.InputStream is, Frame f, int field_count, int marker, byte[] buffer, char[] cbuffer)KeyValuePairconsumeRootChildren(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer)KeyValuePairconsumeRootElement(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer)static java.lang.StringconsumeString(java.io.InputStream is)Consume a string from the input stream.static java.lang.StringconsumeString(java.io.InputStream is, byte[] buffer, char[] cbuffer)voidelementToBin(java.io.OutputStream os, Frame f, byte[] workbuf)KeyValuePairfromStream(java.io.InputStream is, Frame f)Parse the data-stream according to the XTalk protocol.KeyValuePairfromStreamWork(java.io.InputStream is, Frame f)Once we know that this is an XTalk document, perform XTalk parsing.KeyValuePairfromStreamWork(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer)protected voidignorePI(java.io.InputStream is)static voidreadFully(byte[] b, int length, java.io.InputStream in)static voidreadFully(byte[] b, java.io.InputStream in)static intreadInt(java.io.InputStream in)static voidstringToBin(char[] str, int begin, int len, java.io.OutputStream os)static voidstringToBin(char[] str, int begin, int len, java.io.OutputStream os, byte[] buffer)static voidstringToBin(java.lang.String str, java.io.OutputStream os)Sends a string over, without the type byte.static voidstringToBin(java.lang.String str, java.io.OutputStream os, byte[] buffer)Sends a string as utf8, using the temporary buffer if it is big enough to avoid allocating new memory.voidtoStream(java.io.OutputStream os, Frame f)Populate the (empty) frame from the stream contents.static voidwriteInt(int write_me, java.io.OutputStream out)
-
-
-
Field Detail
-
DOCUMENT_MARKER
public static final byte DOCUMENT_MARKER
- See Also:
- Constant Field Values
-
ELEMENT_MARKER
public static final byte ELEMENT_MARKER
- See Also:
- Constant Field Values
-
PI_MARKER
public static final byte PI_MARKER
- See Also:
- Constant Field Values
-
STRING_MARKER
public static final byte STRING_MARKER
- See Also:
- Constant Field Values
-
VERSION_CODE
public static final byte VERSION_CODE
- See Also:
- Constant Field Values
-
HEADER
public static final byte[] HEADER
-
-
Method Detail
-
fromStream
public KeyValuePair fromStream(java.io.InputStream is, Frame f) throws java.io.IOException, java.io.EOFException
Parse the data-stream according to the XTalk protocol.- Specified by:
fromStreamin interfaceFrameTransporter- Parameters:
is- input streamf- frame- Returns:
- If the first tag belongs to the Vinci namespace, then this tag/value combination is returned. Otherwise returns null. Should there be a non-null return, then the value object of the KeyValuePair can be either FrameLeaf or Frame.
- Throws:
java.io.IOException- -java.io.EOFException- -
-
fromStreamWork
public KeyValuePair fromStreamWork(java.io.InputStream is, Frame f) throws java.io.IOException
Once we know that this is an XTalk document, perform XTalk parsing.- Parameters:
is- input streamf- frame- Returns:
- the key value pair
- Throws:
java.io.IOException- if the versions don't match, or have unexpected element marker
-
fromStreamWork
public KeyValuePair fromStreamWork(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer) throws java.io.IOException
- Throws:
java.io.IOException
-
ignorePI
protected void ignorePI(java.io.InputStream is) throws java.io.IOException- Parameters:
is- the input stream- Throws:
java.io.IOException- passthru
-
consumeRootChildren
public KeyValuePair consumeRootChildren(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer) throws java.io.IOException
- Parameters:
is- the input streamf- framebuffer- -cbuffer- -- Returns:
- key value
- Throws:
java.io.IOException- passthru
-
consumeRootElement
public KeyValuePair consumeRootElement(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer) throws java.io.IOException
- Parameters:
is- the input streamf- the Framebuffer- -cbuffer- -- Returns:
- key value
- Throws:
java.io.IOException- passthru
-
consumeChildren
public void consumeChildren(java.io.InputStream is, Frame f, int field_count, int marker, byte[] buffer, char[] cbuffer) throws java.io.IOException- Parameters:
is- input streamf- framefield_count- field countmarker- markerbuffer- -cbuffer- -- Throws:
java.io.IOException- passthru
-
consumeString
public static java.lang.String consumeString(java.io.InputStream is) throws java.io.IOExceptionConsume a string from the input stream. TODO: Make a faster version that exploits work buffers to reduce allocations to a single string object.- Parameters:
is- input stream- Returns:
- the string
- Throws:
java.io.IOException- if key is longer than limit
-
consumeString
public static java.lang.String consumeString(java.io.InputStream is, byte[] buffer, char[] cbuffer) throws java.io.IOException- Throws:
java.io.IOException
-
consumeCharacters
public static int consumeCharacters(java.io.InputStream is, byte[] byteBuf, char[] charBuf, int bytesToRead) throws java.io.IOExceptionConsume the string of bytesToRead utf-8 bytes. assumes buffers are big enough to hold bytesToRead bytes/chars- Parameters:
is- input streambyteBuf- a byte buffercharBuf- a character bufferbytesToRead- the number of bytes to read- Returns:
- the length of the converted characters
- Throws:
java.io.IOException- passthru
-
toStream
public void toStream(java.io.OutputStream os, Frame f) throws java.io.IOExceptionDescription copied from interface:FrameTransporterPopulate the (empty) frame from the stream contents.- Specified by:
toStreamin interfaceFrameTransporter- Parameters:
os- output streamf- frame- Throws:
java.io.IOException- passthru
-
elementToBin
public void elementToBin(java.io.OutputStream os, Frame f, byte[] workbuf) throws java.io.IOException- Parameters:
os- output streamf- frameworkbuf- -- Throws:
java.io.IOException- passthru
-
stringToBin
public static void stringToBin(java.lang.String str, java.io.OutputStream os) throws java.io.IOExceptionSends a string over, without the type byte.- Parameters:
str- the string to sendos- the output stream- Throws:
java.io.IOException- passthru
-
stringToBin
public static void stringToBin(java.lang.String str, java.io.OutputStream os, byte[] buffer) throws java.io.IOExceptionSends a string as utf8, using the temporary buffer if it is big enough to avoid allocating new memory.- Parameters:
str- the string to sendos- the output streambuffer- a buffer- Throws:
java.io.IOException- passthru
-
stringToBin
public static void stringToBin(char[] str, int begin, int len, java.io.OutputStream os) throws java.io.IOException- Throws:
java.io.IOException
-
stringToBin
public static void stringToBin(char[] str, int begin, int len, java.io.OutputStream os, byte[] buffer) throws java.io.IOException- Throws:
java.io.IOException
-
writeInt
public static void writeInt(int write_me, java.io.OutputStream out) throws java.io.IOException- Parameters:
write_me- the integer to writeout- the output stream- Throws:
java.io.IOException- passthru
-
readInt
public static int readInt(java.io.InputStream in) throws java.io.IOException- Parameters:
in- the input stream- Returns:
- the integer
- Throws:
java.io.IOException- if any of the pieces read are negative
-
readFully
public static void readFully(byte[] b, java.io.InputStream in) throws java.io.IOException- Parameters:
b- the byte array to read intoin- the input stream- Throws:
java.io.IOException- passthru
-
readFully
public static void readFully(byte[] b, int length, java.io.InputStream in) throws java.io.IOException- Throws:
java.io.IOException
-
attributesToBin
public void attributesToBin(java.io.OutputStream os, Attributes attributes, byte[] workbuf) throws java.io.IOException- Parameters:
os- the output streamattributes- attributesworkbuf- a working buffer- Throws:
java.io.IOException- passthru
-
-