~ubuntu-branches/ubuntu/maverick/libtorrent-rasterbar/maverick

« back to all changes in this revision

Viewing changes to src/disk_buffer_holder.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Sauthier
  • Date: 2010-08-10 12:59:37 UTC
  • mfrom: (1.3.7 upstream)
  • Revision ID: james.westby@ubuntu.com-20100810125937-jbcmmf17y8yo9hgz
Tags: 0.15.0-0ubuntu1
* New upstream version.
* debian/patches/100_fix_html_docs.patch: refreshed.
* debian/control: bump up standards-version to 3.9.1 (no changes).

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
{
39
39
 
40
40
        disk_buffer_holder::disk_buffer_holder(aux::session_impl& ses, char* buf)
41
 
                : m_iothread(ses.m_disk_thread), m_buf(buf)
42
 
        {
43
 
                TORRENT_ASSERT(buf == 0 || m_iothread.is_disk_buffer(buf));
44
 
        }
45
 
 
46
 
        disk_buffer_holder::disk_buffer_holder(disk_io_thread& iothread, char* buf)
47
 
                : m_iothread(iothread), m_buf(buf)
48
 
        {
49
 
                TORRENT_ASSERT(buf == 0 || m_iothread.is_disk_buffer(buf));
50
 
        }
51
 
 
52
 
        void disk_buffer_holder::reset(char* buf)
53
 
        {
54
 
                if (m_buf) m_iothread.free_buffer(m_buf);
 
41
                : m_disk_pool(ses.m_disk_thread), m_buf(buf), m_num_blocks(1)
 
42
        {
 
43
                TORRENT_ASSERT(buf == 0 || m_disk_pool.is_disk_buffer(buf));
 
44
        }
 
45
 
 
46
        disk_buffer_holder::disk_buffer_holder(disk_buffer_pool& iothread, char* buf)
 
47
                : m_disk_pool(iothread), m_buf(buf), m_num_blocks(1)
 
48
        {
 
49
                TORRENT_ASSERT(buf == 0 || m_disk_pool.is_disk_buffer(buf));
 
50
        }
 
51
 
 
52
        disk_buffer_holder::disk_buffer_holder(disk_buffer_pool& iothread, char* buf, int num_blocks)
 
53
                : m_disk_pool(iothread), m_buf(buf), m_num_blocks(num_blocks)
 
54
        {
 
55
                TORRENT_ASSERT(buf == 0 || m_disk_pool.is_disk_buffer(buf));
 
56
        }
 
57
 
 
58
        void disk_buffer_holder::reset(char* buf, int num_blocks)
 
59
        {
 
60
                if (m_buf)
 
61
                {
 
62
                        if (m_num_blocks == 1) m_disk_pool.free_buffer(m_buf);
 
63
                        else m_disk_pool.free_buffers(m_buf, m_num_blocks);
 
64
                }
55
65
                m_buf = buf;
 
66
                m_num_blocks = num_blocks;
56
67
        }
57
68
 
58
69
        char* disk_buffer_holder::release()
64
75
 
65
76
        disk_buffer_holder::~disk_buffer_holder()
66
77
        {
67
 
                if (m_buf) m_iothread.free_buffer(m_buf);
 
78
                if (m_buf)
 
79
                {
 
80
                        if (m_num_blocks == 1) m_disk_pool.free_buffer(m_buf);
 
81
                        else m_disk_pool.free_buffers(m_buf, m_num_blocks);
 
82
                }
68
83
        }
69
84
}
70
85