本文整理汇总了C++中wxMemoryBuffer::Clear方法的典型用法代码示例。如果您正苦于以下问题:C++ wxMemoryBuffer::Clear方法的具体用法?C++ wxMemoryBuffer::Clear怎么用?C++ wxMemoryBuffer::Clear使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxMemoryBuffer
的用法示例。
在下文中一共展示了wxMemoryBuffer::Clear方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Read
// Read API
int clSocketBase::Read(wxMemoryBuffer& content, long timeout) throw(clSocketException)
{
content.Clear();
char buffer[4096];
timeout = (timeout * 1000); // convert to MS
while(true && timeout) {
int rc = SelectReadMS(10);
timeout -= 10;
if(rc == kSuccess) {
memset(buffer, 0x0, sizeof(buffer));
int bytesRead = recv(m_socket, buffer, sizeof(buffer), 0);
if(bytesRead < 0) {
// Error
throw clSocketException("Read failed: " + error());
} else if(bytesRead == 0) {
// connection closed
return kError;
} else {
content.AppendData(buffer, bytesRead);
continue;
}
} else {
if(content.IsEmpty())
continue; // keep waiting until time ends
else
return kSuccess; // we already read our content
}
}
return kTimeout;
}
示例2: Read
void clSFTP::Read(const wxString& remotePath, wxMemoryBuffer& buffer) throw(clException)
{
if(!m_sftp) {
throw clException("SFTP is not initialized");
}
sftp_file file = sftp_open(m_sftp, remotePath.mb_str(wxConvUTF8).data(), O_RDONLY, 0);
if(file == NULL) {
throw clException(wxString() << _("Failed to open remote file: ") << remotePath << ". "
<< ssh_get_error(m_ssh->GetSession()),
sftp_get_error(m_sftp));
}
SFTPAttribute::Ptr_t fileAttr = Stat(remotePath);
if(!fileAttr) {
throw clException(wxString() << _("Could not stat file:") << remotePath << ". "
<< ssh_get_error(m_ssh->GetSession()),
sftp_get_error(m_sftp));
}
wxInt64 fileSize = fileAttr->GetSize();
if(fileSize == 0) return;
// Allocate buffer for the file content
char pBuffer[65536]; // buffer
// Read the entire file content
wxInt64 bytesLeft = fileSize;
wxInt64 bytesRead = 0;
while(bytesLeft > 0) {
wxInt64 nbytes = sftp_read(file, pBuffer, sizeof(pBuffer));
bytesRead += nbytes;
bytesLeft -= nbytes;
buffer.AppendData(pBuffer, nbytes);
}
if(bytesRead != fileSize) {
sftp_close(file);
buffer.Clear();
throw clException(wxString() << _("Could not read file:") << remotePath << ". "
<< ssh_get_error(m_ssh->GetSession()),
sftp_get_error(m_sftp));
}
sftp_close(file);
}