Example #1
0
    // Pfm.FormatterDispatch.Read
    public void Read(Pfm.MarshallerReadOp op)
    {
        long openId     = op.OpenId();
        long fileOffset = op.FileOffset();

        byte[] data          = op.Data();
        int    requestedSize = op.RequestedSize();
        int    perr;
        int    actualSize = 0;
        File   file;

        perr = FileFindOpenId(openId, out file);
        if (perr == 0)
        {
            actualSize = FileRead(file, fileOffset, data, requestedSize);
        }

        op.Complete(perr, actualSize);
    }
Example #2
0
        public void Read(Pfm.MarshallerReadOp op)
        {
            long openId = op.OpenId();

            if (!opens.ContainsKey(openId) || opens[openId].isdir != 0)
            {
                op.Complete(Pfm.errorAccessDenied, 0);
            }
            else
            {
                Debug.WriteLine("ReadFile:id:" + openId.ToString() +
                                ";filename:" + opens[openId].server_filename +
                                ";filesize:" + opens[openId].size.ToString() +
                                ";offset:" + op.FileOffset().ToString() +
                                ";size" + op.RequestedSize().ToString());
                var stream = baidu1.GetStream(opens[openId]);
                stream.Seek(op.FileOffset(), System.IO.SeekOrigin.Begin);
                var retSize = stream.Read(op.Data(), 0, op.RequestedSize());
                op.Complete(Pfm.errorSuccess, retSize);
            }
        }
Example #3
0
    public void Read(Pfm.MarshallerReadOp op)
    {
        long openId     = op.OpenId();
        long fileOffset = op.FileOffset();

        byte[] data          = op.Data();
        int    requestedSize = op.RequestedSize();
        int    perr          = 0;
        int    actualSize    = 0;
        int    i;

        if (openId != fileOpenId)
        {
            perr = Pfm.errorAccessDenied;
        }
        else
        {
            actualSize = requestedSize;
            if (fileOffset > helloDataSize)
            {
                actualSize = 0;
            }
            else if (fileOffset + requestedSize > helloDataSize)
            {
                actualSize = (int)(helloDataSize - fileOffset);
            }
            if (actualSize != 0)
            {
                for (i = 0; i < actualSize; i++)
                {
                    data[i] = (byte)(helloFileData[(int)fileOffset + i]);
                }
            }
        }

        op.Complete(perr, actualSize);
    }