MCPcopy Create free account
hub / github.com/ImageEngine/cortex / handleReadHeader

Method handleReadHeader

src/IECoreImage/DisplayDriverServer.cpp:350–437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

348}
349
350void DisplayDriverServer::Session::handleReadHeader( const boost::system::error_code& error )
351{
352 if (error)
353 {
354 msg( Msg::Error, "DisplayDriverServer::Session::handleReadHeader", error.message().c_str() );
355 m_socket.close();
356 return;
357 }
358
359 if ( !m_header.valid() )
360 {
361 msg( Msg::Error, "DisplayDriverServer::Session::handleReadHeader", "Invalid header!" );
362 m_socket.close();
363 return;
364 }
365
366 // get number of bytes ahead (unsigned int value)
367 size_t bytesAhead = m_header.getDataSize();
368
369 CharVectorData::ValueType &data = m_buffer->writable();
370 data.resize( bytesAhead );
371
372 // service
373 switch( m_header.messageType() )
374 {
375 case DisplayDriverServerHeader::imageOpen:
376 boost::asio::async_read( m_socket,
377 boost::asio::buffer( &data[0], bytesAhead ),
378 boost::bind( &DisplayDriverServer::Session::handleReadOpenParameters, SessionPtr(this), boost::asio::placeholders::error)
379 );
380 break;
381
382 case DisplayDriverServerHeader::imageData:
383 boost::asio::async_read( m_socket,
384 boost::asio::buffer( &data[0], bytesAhead ),
385 boost::bind(&DisplayDriverServer::Session::handleReadDataParameters, SessionPtr(this),
386 boost::asio::placeholders::error));
387 break;
388
389 case DisplayDriverServerHeader::imageClose:
390 if ( m_displayDriver )
391 {
392 try
393 {
394 if ( !m_mergeId.has_value() )
395 {
396 m_displayDriver->imageClose();
397 }
398 else
399 {
400 auto &m = m_mergeMap.at(m_mergeId.value()); // Error out if not found
401 if ( --m.mergeCount <= 0 )
402 {
403 m_mergeMap.erase(m_mergeId.value());
404 m_displayDriver->imageClose();
405 }
406 }
407 }

Callers

nothing calls this directly

Calls 11

closeMethod · 0.80
validMethod · 0.80
getDataSizeMethod · 0.80
messageTypeMethod · 0.80
whatMethod · 0.80
bindFunction · 0.50
writableMethod · 0.45
resizeMethod · 0.45
imageCloseMethod · 0.45
valueMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected