bool nsFileInputStream::Read(const IPC::Message *aMsg, void **aIter) { using IPC::ReadParam; nsCString path; bool followLinks; PRInt32 flags; if (!ReadParam(aMsg, aIter, &path) || !ReadParam(aMsg, aIter, &followLinks) || !ReadParam(aMsg, aIter, &flags)) return false; nsCOMPtr<nsIFile> file; nsresult rv = NS_NewNativeLocalFile(path, followLinks, getter_AddRefs(file)); if (NS_FAILED(rv)) return false; // IO flags = -1 means readonly, and // permissions are unimportant since we're reading rv = Init(file, -1, -1, flags); if (NS_FAILED(rv)) return false; return true; }
bool nsMultiplexInputStream::Read(const IPC::Message *aMsg, void **aIter) { using IPC::ReadParam; PRUint32 count; if (!ReadParam(aMsg, aIter, &count)) return PR_FALSE; for (PRUint32 i = 0; i < count; i++) { IPC::InputStream inputStream; if (!ReadParam(aMsg, aIter, &inputStream)) return PR_FALSE; nsCOMPtr<nsIInputStream> stream(inputStream); nsresult rv = AppendStream(stream); if (NS_FAILED(rv)) return PR_FALSE; } if (!ReadParam(aMsg, aIter, &mCurrentStream) || !ReadParam(aMsg, aIter, &mStartedReadingCurrent) || !ReadParam(aMsg, aIter, &mStatus)) return PR_FALSE; return PR_TRUE; }
bool nsPartialFileInputStream::Read(const IPC::Message *aMsg, void **aIter) { using IPC::ReadParam; // Grab our members first. PRUint64 start; PRUint64 length; if (!ReadParam(aMsg, aIter, &start) || !ReadParam(aMsg, aIter, &length)) return false; // Then run base class deserialization. if (!nsFileInputStream::Read(aMsg, aIter)) return false; // Set members. mStart = start; mLength = length; // XXX This isn't really correct, we should probably set this to whatever // the sender had. However, it doesn't look like nsFileInputStream deals // with sending a partially-consumed stream either, so... mPosition = 0; // Mirror nsPartialFileInputStream::Init here. We can't call it directly // because nsFileInputStream::Read() already calls the base class Init // method. return NS_SUCCEEDED(nsFileInputStream::Seek(NS_SEEK_SET, start)); }
PRBool nsMIMEInputStream::Read(const IPC::Message *aMsg, void **aIter) { using IPC::ReadParam; if (!ReadParam(aMsg, aIter, &mHeaders) || !ReadParam(aMsg, aIter, &mContentLength) || !ReadParam(aMsg, aIter, &mStartedReading)) return PR_FALSE; // nsMIMEInputStream::Init() already appended mHeaderStream & mCLStream mHeaderStream->ShareData(mHeaders.get(), mStartedReading? mHeaders.Length() : 0); mCLStream->ShareData(mContentLength.get(), mStartedReading? mContentLength.Length() : 0); IPC::InputStream inputStream; if (!ReadParam(aMsg, aIter, &inputStream)) return PR_FALSE; nsCOMPtr<nsIInputStream> stream(inputStream); mData = stream; if (stream) { nsresult rv = mStream->AppendStream(mData); if (NS_FAILED(rv)) return PR_FALSE; } if (!ReadParam(aMsg, aIter, &mAddContentLength)) return PR_FALSE; return PR_TRUE; }
bool nsBufferedInputStream::Read(const IPC::Message *aMsg, void **aIter) { using IPC::ReadParam; PRUint32 bufferSize; IPC::InputStream inputStream; if (!ReadParam(aMsg, aIter, &bufferSize) || !ReadParam(aMsg, aIter, &inputStream)) return false; nsCOMPtr<nsIInputStream> stream(inputStream); nsresult rv = Init(stream, bufferSize); if (NS_FAILED(rv)) return false; return true; }
PRBool nsBufferedInputStream::Read(const IPC::Message *aMsg, void **aIter) { #ifdef MOZ_IPC using IPC::ReadParam; PRUint32 bufferSize; IPC::InputStream inputStream; if (!ReadParam(aMsg, aIter, &bufferSize) || !ReadParam(aMsg, aIter, &inputStream)) return PR_FALSE; nsCOMPtr<nsIInputStream> stream(inputStream); nsresult rv = Init(stream, bufferSize); if (NS_FAILED(rv)) return PR_FALSE; return PR_TRUE; #else return PR_FALSE; #endif }
bool nsStringInputStream::Read(const IPC::Message *aMsg, void **aIter) { using IPC::ReadParam; nsCAutoString value; if (!ReadParam(aMsg, aIter, &value)) return PR_FALSE; nsresult rv = SetData(value.get(), value.Length()); if (NS_FAILED(rv)) return PR_FALSE; return PR_TRUE; }