Example #1
0
    public void FlatBuffersDecoderTest_LengthComeSlowly()
    {
        FlatBuffersDecoder decoder = new FlatBuffersDecoder();

        Assert.AreEqual(decoder.getState(), FlatBuffersDecoder.ReadState.INITIAL);
        byte[] b = new byte[1];
        b[0] = 0;
        decoder.Fetch(b, 1);
        Assert.AreEqual(decoder.getState(), FlatBuffersDecoder.ReadState.READING_LENGTH);

        byte[] b1 = new byte[1];
        b1 [0] = 3;
        decoder.Fetch(b1, 1);
        Assert.AreEqual(decoder.getState(), FlatBuffersDecoder.ReadState.READING_DATA);

        byte[] b2 = new byte[3];
        b2[0] = 1;
        b2[1] = 2;
        b2[2] = 3;
        decoder.Fetch(b2, 3);
        Assert.AreEqual(decoder.getState(), FlatBuffersDecoder.ReadState.DONE);

        byte[] res = decoder.getData();
        Assert.AreEqual(res.Length, 3);
        Assert.AreEqual(res [0], 1);
        Assert.AreEqual(res [1], 2);
        Assert.AreEqual(res [2], 3);
    }
Example #2
0
    private void ReceiveCallback(IAsyncResult ar)
    {
        try {
            // Retrieve the state object and the client socket
            // from the asynchronous state object.
            StateObject state = (StateObject)ar.AsyncState;
            this.client = state.workSocket;

            // Read data from the remote device.
            int bytesRead = client.EndReceive(ar);
            if (bytesRead > 0)
            {
                Debug.Log("Decoder state buffer size:" + state.buffer.Length);
                this.decoder.Fetch(state.buffer, bytesRead);
                Debug.Log("Decoder state:" + decoder.getState());
                if (decoder.getState() != FlatBuffersDecoder.ReadState.DONE)
                {
                    // Get the rest of the data.
                    client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                                        new AsyncCallback(ReceiveCallback), state);
                }
                else
                {
                    if (this.receiveCallback != null)
                    {
                        ByteBuffer bb = new ByteBuffer(this.decoder.getData());
                        Message    m  = Message.GetRootAsMessage(bb);
                        this.receiveCallback(m);
                    }
                    //Listening to server again.
                    if (this.receiveCallback != null)
                    {
                        this.Receive(this.receiveCallback);
                    }
                }
            }
            else
            {
                //Listening to server again.
                if (this.receiveCallback != null)
                {
                    this.Receive(this.receiveCallback);
                }
            }
        } catch (Exception e) {
            Console.WriteLine(e.ToString());
        }
    }
Example #3
0
    public void FlatBuffersDecoderTest_AllIn()
    {
        byte[] b = new byte[6];
        b [0] = 0;
        b [1] = 4;
        b [2] = 1;
        b [3] = 2;
        b [4] = 3;
        b [5] = 4;
        FlatBuffersDecoder decoder = new FlatBuffersDecoder();

        decoder.Fetch(b, 6);
        Assert.AreEqual(decoder.getState(), FlatBuffersDecoder.ReadState.DONE);
        byte[] res = decoder.getData();
        Assert.AreEqual(res.Length, 4);
        Assert.AreEqual(res [0], 1);
        Assert.AreEqual(res [1], 2);
        Assert.AreEqual(res [2], 3);
        Assert.AreEqual(res [3], 4);
    }