Pack() public method

public Pack ( rpcPacker packer ) : void
packer RPCV2Lib.rpcPacker
return void
コード例 #1
0
ファイル: nfsd.cs プロジェクト: zaubererty/NFS
        private void Read(rpcCracker cracker, rpcPacker packer)
        {
            fhandle fh         = new fhandle(cracker);
            uint    offset     = cracker.get_uint32();
            uint    count      = cracker.get_uint32();
            uint    totalCount = cracker.get_uint32();

            FileStream fs;

            try
            {
                fs = new FileStream(FileTable.LookupFileEntry(fh).Name, FileMode.Open, FileAccess.Read);
            }
            catch (System.IO.FileNotFoundException)
            {
                FileTable.Remove(fh);
                throw;
            }

            try
            {
                fs.Position = offset;

                Byte[] buf = new Byte[count];

                int bytesRead = fs.Read(buf, 0, (int)count);

                fattr attr = new fattr(fh);

                if (attr.IsFile() == false)
                {
                    throw new NFSStatusException(NFSStatus.NFSERR_ISDIR);
                }

                packer.setUint32((uint)NFSStatus.NFS_OK);
                attr.Pack(packer);
                packer.setData(buf, bytesRead);
            }
            finally
            {
                fs.Close();
            }
        }
コード例 #2
0
ファイル: nfsd.cs プロジェクト: petebarber/NFS
        private void Read(rpcCracker cracker, rpcPacker packer)
        {
            fhandle fh			= new fhandle(cracker);
            uint	offset		= cracker.get_uint32();
            uint	count		= cracker.get_uint32();
            uint	totalCount	= cracker.get_uint32();

            FileStream fs;

            try
            {
                fs = new FileStream(FileTable.LookupFileEntry(fh).Name, FileMode.Open, FileAccess.Read);
            }
            catch (System.IO.FileNotFoundException)
            {
                FileTable.Remove(fh);
                throw;
            }

            try
            {
                fs.Position = offset;

                Byte[] buf = new Byte[count];

                int bytesRead = fs.Read(buf, 0, (int)count);

                fattr attr = new fattr(fh);

                if (attr.IsFile() == false) throw new NFSStatusException(NFSStatus.NFSERR_ISDIR);

                packer.setUint32((uint)NFSStatus.NFS_OK);
                attr.Pack(packer);
                packer.setData(buf, bytesRead);
            }
            finally
            {
                fs.Close();
            }
        }
コード例 #3
0
 static public void PackSuccess(rpcPacker packer, fattr attr)
 {
     packer.setUint32((uint)NFSStatus.NFS_OK);
     attr.Pack(packer);
 }
コード例 #4
0
ファイル: attrstat.cs プロジェクト: petebarber/NFS
 public static void PackSuccess(rpcPacker packer, fattr attr)
 {
     packer.setUint32((uint)NFSStatus.NFS_OK);
     attr.Pack(packer);
 }