// 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); }
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); } }
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); }