org.apache.vinci.transport
Class XTalkTransporter

java.lang.Object
  extended by 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
static byte DOCUMENT_MARKER
           
static byte ELEMENT_MARKER
           
static byte[] HEADER
           
static byte PI_MARKER
           
static byte STRING_MARKER
           
static byte VERSION_CODE
           
 
Constructor Summary
XTalkTransporter()
           
 
Method Summary
 void attributesToBin(java.io.OutputStream os, Attributes attributes, byte[] workbuf)
           
static int consumeCharacters(java.io.InputStream is, byte[] byteBuf, char[] charBuf, int bytesToRead)
          Consume the string of bytesToRead utf-8 bytes.
 void consumeChildren(java.io.InputStream is, Frame f, int field_count, int marker, byte[] buffer, char[] cbuffer)
           
 KeyValuePair consumeRootChildren(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer)
           
 KeyValuePair consumeRootElement(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer)
           
static java.lang.String consumeString(java.io.InputStream is)
          Consume a string from the input stream.
static java.lang.String consumeString(java.io.InputStream is, byte[] buffer, char[] cbuffer)
           
 void elementToBin(java.io.OutputStream os, Frame f, byte[] workbuf)
           
 KeyValuePair fromStream(java.io.InputStream is, Frame f)
          Parse the data-stream according to the XTalk protocol.
 KeyValuePair fromStreamWork(java.io.InputStream is, Frame f)
          Once we know that this is an XTalk document, perform XTalk parsing.
 KeyValuePair fromStreamWork(java.io.InputStream is, Frame f, byte[] buffer, char[] cbuffer)
           
protected  void ignorePI(java.io.InputStream is)
           
static void readFully(byte[] b, java.io.InputStream in)
           
static void readFully(byte[] b, int length, java.io.InputStream in)
           
static int readInt(java.io.InputStream in)
           
static void stringToBin(char[] str, int begin, int len, java.io.OutputStream os)
           
static void stringToBin(char[] str, int begin, int len, java.io.OutputStream os, byte[] buffer)
           
static void stringToBin(java.lang.String str, java.io.OutputStream os)
          Sends a string over, without the type byte.
static void stringToBin(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.
 void toStream(java.io.OutputStream os, Frame f)
          Populate the (empty) frame from the stream contents.
static void writeInt(int write_me, java.io.OutputStream out)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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
Constructor Detail

XTalkTransporter

public XTalkTransporter()
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:
fromStream in interface FrameTransporter
Parameters:
is - The stream where the Frame is written.
f - The Frame to be marshalled.
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.

Throws:
java.io.IOException

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 -
Throws:
java.io.IOException

consumeRootChildren

public KeyValuePair consumeRootChildren(java.io.InputStream is,
                                        Frame f,
                                        byte[] buffer,
                                        char[] cbuffer)
                                 throws java.io.IOException
Parameters:
is -
f -
Returns:
Throws:
java.io.IOException

consumeRootElement

public KeyValuePair consumeRootElement(java.io.InputStream is,
                                       Frame f,
                                       byte[] buffer,
                                       char[] cbuffer)
                                throws java.io.IOException
Parameters:
is -
f -
Returns:
Throws:
java.io.IOException

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 -
f -
field_count -
marker -
Throws:
java.io.IOException

consumeString

public static java.lang.String consumeString(java.io.InputStream is)
                                      throws java.io.IOException
Consume 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 -
Returns:
Throws:
java.io.IOException

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.IOException
Consume the string of bytesToRead utf-8 bytes. assumes buffers are big enough to hold bytesToRead bytes/chars

Throws:
java.io.IOException

toStream

public void toStream(java.io.OutputStream os,
                     Frame f)
              throws java.io.IOException
Description copied from interface: FrameTransporter
Populate the (empty) frame from the stream contents.

Specified by:
toStream in interface FrameTransporter
Parameters:
os - The stream from where the data is read.
f - The Frame to be populated from the stream.
Throws:
java.io.IOException

elementToBin

public void elementToBin(java.io.OutputStream os,
                         Frame f,
                         byte[] workbuf)
                  throws java.io.IOException
Parameters:
os -
f -
Throws:
java.io.IOException
java.lang.UnsupportedOperationException - if the frame doesn't support key iteration.

stringToBin

public static void stringToBin(java.lang.String str,
                               java.io.OutputStream os)
                        throws java.io.IOException
Sends a string over, without the type byte.

Throws:
java.io.IOException

stringToBin

public static void stringToBin(java.lang.String str,
                               java.io.OutputStream os,
                               byte[] buffer)
                        throws java.io.IOException
Sends a string as utf8, using the temporary buffer if it is big enough to avoid allocating new memory.

Throws:
java.io.IOException

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 -
out -
Throws:
java.io.IOException

readInt

public static int readInt(java.io.InputStream in)
                   throws java.io.IOException
Parameters:
in -
Returns:
Throws:
java.io.IOException

readFully

public static void readFully(byte[] b,
                             java.io.InputStream in)
                      throws java.io.IOException
Parameters:
b -
in -
Throws:
java.io.IOException

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 -
attributes -
Throws:
java.io.IOException


Copyright © 2013. All Rights Reserved.