MCPcopy Create free account
hub / github.com/bitshares/bitshares-core / on_message

Method on_message

libraries/net/node.cpp:1369–1451  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1367 }
1368
1369 void node_impl::on_message( peer_connection* originating_peer, const message& received_message )
1370 {
1371 VERIFY_CORRECT_THREAD();
1372 message_hash_type message_hash = received_message.id();
1373 dlog("handling message ${type} ${hash} size ${size} from peer ${endpoint}",
1374 ("type", graphene::net::core_message_type_enum(received_message.msg_type.value()))("hash", message_hash)
1375 ("size", received_message.size)
1376 ("endpoint", originating_peer->get_remote_endpoint()));
1377 // Gatekeeping code
1378 if( originating_peer->we_have_requested_close
1379 // allow hello_message so we can learn more about the peer
1380 && received_message.msg_type.value() != core_message_type_enum::hello_message_type
1381 // allow closing_connection_message so we can finish disconnecting
1382 && received_message.msg_type.value() != core_message_type_enum::closing_connection_message_type )
1383 {
1384 dlog( "Unexpected message from peer ${peer} while we have requested to close connection",
1385 ("peer", originating_peer->get_remote_endpoint()) );
1386 return;
1387 }
1388 switch ( received_message.msg_type.value() )
1389 {
1390 case core_message_type_enum::hello_message_type:
1391 on_hello_message(originating_peer, received_message.as<hello_message>());
1392 break;
1393 case core_message_type_enum::connection_accepted_message_type:
1394 on_connection_accepted_message(originating_peer, received_message.as<connection_accepted_message>());
1395 break;
1396 case core_message_type_enum::connection_rejected_message_type:
1397 on_connection_rejected_message(originating_peer, received_message.as<connection_rejected_message>());
1398 break;
1399 case core_message_type_enum::address_request_message_type:
1400 on_address_request_message(originating_peer, received_message.as<address_request_message>());
1401 break;
1402 case core_message_type_enum::address_message_type:
1403 on_address_message(originating_peer, received_message.as<address_message>());
1404 break;
1405 case core_message_type_enum::fetch_blockchain_item_ids_message_type:
1406 on_fetch_blockchain_item_ids_message(
1407 originating_peer, received_message.as<fetch_blockchain_item_ids_message>());
1408 break;
1409 case core_message_type_enum::blockchain_item_ids_inventory_message_type:
1410 on_blockchain_item_ids_inventory_message(
1411 originating_peer, received_message.as<blockchain_item_ids_inventory_message>());
1412 break;
1413 case core_message_type_enum::fetch_items_message_type:
1414 on_fetch_items_message(originating_peer, received_message.as<fetch_items_message>());
1415 break;
1416 case core_message_type_enum::item_not_available_message_type:
1417 on_item_not_available_message(originating_peer, received_message.as<item_not_available_message>());
1418 break;
1419 case core_message_type_enum::item_ids_inventory_message_type:
1420 on_item_ids_inventory_message(originating_peer, received_message.as<item_ids_inventory_message>());
1421 break;
1422 case core_message_type_enum::closing_connection_message_type:
1423 on_closing_connection_message(originating_peer, received_message.as<closing_connection_message>());
1424 break;
1425 case core_message_type_enum::block_message_type:
1426 process_block_message(originating_peer, received_message, message_hash);

Callers 1

read_loopMethod · 0.45

Calls 3

idMethod · 0.80
get_remote_endpointMethod · 0.80

Tested by

no test coverage detected