<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dcpomatic/test/socket_test.cc, branch stephan</title>
<subtitle>DCP-o-matic DCP tools</subtitle>
<id>https://git.carlh.net/cgit/dcpomatic/atom?h=stephan</id>
<link rel='self' href='https://git.carlh.net/cgit/dcpomatic/atom?h=stephan'/>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/'/>
<updated>2025-03-22T12:29:58Z</updated>
<entry>
<title>Add abstraction of io_{context,service} and use it as appropriate.</title>
<updated>2025-03-22T12:29:58Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-03-17T00:25:02Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=9dd72fc481349f0b5ce985164441eecfa6485c19'/>
<id>urn:sha1:9dd72fc481349f0b5ce985164441eecfa6485c19</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make the Socket connect() call a little friendlier.</title>
<updated>2025-03-22T12:29:58Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2025-03-17T19:27:47Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=169c47ede14b6e86e054871a56ffa048357b4463'/>
<id>urn:sha1:169c47ede14b6e86e054871a56ffa048357b4463</id>
<content type='text'>
This avoids some boilerplate.
</content>
</entry>
<entry>
<title>Bump libdcp for raw_convert changes.</title>
<updated>2025-01-05T11:58:13Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2024-12-30T14:43:14Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=b03f2277a205ff7e7cdaa12c6e52322ea474a7af'/>
<id>urn:sha1:b03f2277a205ff7e7cdaa12c6e52322ea474a7af</id>
<content type='text'>
raw_convert&lt;string&gt; is gone, so here we use fmt::{to_string,format} instead.
Other raw_converts now use fast_float.
</content>
</entry>
<entry>
<title>Replace some raw arrays with std::vectors.</title>
<updated>2022-05-01T22:22:43Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-10-11T17:55:06Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=809bcfd85fad2ef7d4131c054be4cccd5bcc9d05'/>
<id>urn:sha1:809bcfd85fad2ef7d4131c054be4cccd5bcc9d05</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Missing override.</title>
<updated>2022-04-21T22:01:55Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2022-04-21T22:01:04Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=c0264efd6f273fa2d4ed8126b2ea673f31d7d539'/>
<id>urn:sha1:c0264efd6f273fa2d4ed8126b2ea673f31d7d539</id>
<content type='text'>
</content>
</entry>
<entry>
<title>C++11 tidying.</title>
<updated>2021-05-03T18:18:04Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-05-03T09:17:34Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=689fa55d1529ad88449ca464e9107c4dcc54d1cb'/>
<id>urn:sha1:689fa55d1529ad88449ca464e9107c4dcc54d1cb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>std::shared_ptr</title>
<updated>2021-01-07T21:48:29Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2021-01-04T20:16:53Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=dd9be86db6cde0afa5da0d1d1ac43b42e05dca26'/>
<id>urn:sha1:dd9be86db6cde0afa5da0d1d1ac43b42e05dca26</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Make socket tests connect explicitly to localhost to try to fix</title>
<updated>2020-10-13T16:51:11Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-10-05T20:47:30Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=387488c4d18ce616e3f0f64e8339ca20b843fb7e'/>
<id>urn:sha1:387488c4d18ce616e3f0f64e8339ca20b843fb7e</id>
<content type='text'>
error 1214 on Windows.
</content>
</entry>
<entry>
<title>Fix bugs in thread termination causing occasional pthread</title>
<updated>2020-07-29T18:22:54Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-07-29T18:22:54Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=e3c7656f9dc0acbaf518c051b847ee2e4eb7ba23'/>
<id>urn:sha1:e3c7656f9dc0acbaf518c051b847ee2e4eb7ba23</id>
<content type='text'>
assertion failures.

Before this, it was possible for J2KEncoder::terminate_threads()
to finish without terminating all threads if the thread _running_
terminate_threads() was itself interrupt()ed.

This is because the thread_group::join_all() in terminate_threads()
is an interruption point, so it was possible it not to complete
but instead to throw interrupted_exception.  Then the owning
J2KEncoder would be torn down but the threads would still be running,
causing use-after-frees.

This commit adds some boost::this_thread::disable_interruption
objects to ensure that the owning thread is not interrupted while
it is being destroyed.

Also tidy up code that does this stuff, assuming that it's safe
to not call thread::joinable but instead do

thread.interrupt();
try {
  thread.join();
} catch (...) {}
</content>
</entry>
<entry>
<title>Add feature to Socket so that it can send digests of data it has sent</title>
<updated>2020-04-16T22:42:54Z</updated>
<author>
<name>Carl Hetherington</name>
<email>cth@carlh.net</email>
</author>
<published>2020-04-15T22:38:08Z</published>
<link rel='alternate' type='text/html' href='https://git.carlh.net/cgit/dcpomatic/commit/?id=3f2bec7b6ee2f27b2de056cdc0137744d2e9e253'/>
<id>urn:sha1:3f2bec7b6ee2f27b2de056cdc0137744d2e9e253</id>
<content type='text'>
and check those digests on receive.
</content>
</entry>
</feed>
