Skip to content

Commit afc4724

Browse files
committed
refactor: Factor out union pack switch from event packer.
Preparation for it being generated.
1 parent 6caa7ce commit afc4724

File tree

2 files changed

+57
-47
lines changed

2 files changed

+57
-47
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
ec228c5b76d06c25dc2a8dc2ff4ccc1e8748d0915058a7cb56de75d948051001 /usr/local/bin/tox-bootstrapd
1+
50123098ff16637a19253e4ea24c0b7bc7d1ef35f6e7c9f2783bddd303a6c6f3 /usr/local/bin/tox-bootstrapd

toxcore/tox_event.c

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -564,131 +564,132 @@ void tox_event_destruct(Tox_Event *event, const Memory *mem)
564564
event->data.value = nullptr;
565565
}
566566

567-
bool tox_event_pack(const Tox_Event *event, Bin_Pack *bp)
567+
non_null()
568+
static bool tox_event_type_pack(Tox_Event_Type type, Bin_Pack *bp)
568569
{
569-
assert(event->type != TOX_EVENT_INVALID);
570-
571-
if (!(bin_pack_array(bp, 2) && bin_pack_u32(bp, event->type))) {
572-
return false;
573-
}
570+
return bin_pack_u32(bp, (uint32_t)type);
571+
}
574572

575-
switch (event->type) {
573+
non_null()
574+
static bool tox_event_data_pack(Tox_Event_Type type, const Tox_Event_Data *data, Bin_Pack *bp)
575+
{
576+
switch (type) {
576577
case TOX_EVENT_CONFERENCE_CONNECTED:
577-
return tox_event_conference_connected_pack(event->data.conference_connected, bp);
578+
return tox_event_conference_connected_pack(data->conference_connected, bp);
578579

579580
case TOX_EVENT_CONFERENCE_INVITE:
580-
return tox_event_conference_invite_pack(event->data.conference_invite, bp);
581+
return tox_event_conference_invite_pack(data->conference_invite, bp);
581582

582583
case TOX_EVENT_CONFERENCE_MESSAGE:
583-
return tox_event_conference_message_pack(event->data.conference_message, bp);
584+
return tox_event_conference_message_pack(data->conference_message, bp);
584585

585586
case TOX_EVENT_CONFERENCE_PEER_LIST_CHANGED:
586-
return tox_event_conference_peer_list_changed_pack(event->data.conference_peer_list_changed, bp);
587+
return tox_event_conference_peer_list_changed_pack(data->conference_peer_list_changed, bp);
587588

588589
case TOX_EVENT_CONFERENCE_PEER_NAME:
589-
return tox_event_conference_peer_name_pack(event->data.conference_peer_name, bp);
590+
return tox_event_conference_peer_name_pack(data->conference_peer_name, bp);
590591

591592
case TOX_EVENT_CONFERENCE_TITLE:
592-
return tox_event_conference_title_pack(event->data.conference_title, bp);
593+
return tox_event_conference_title_pack(data->conference_title, bp);
593594

594595
case TOX_EVENT_FILE_CHUNK_REQUEST:
595-
return tox_event_file_chunk_request_pack(event->data.file_chunk_request, bp);
596+
return tox_event_file_chunk_request_pack(data->file_chunk_request, bp);
596597

597598
case TOX_EVENT_FILE_RECV_CHUNK:
598-
return tox_event_file_recv_chunk_pack(event->data.file_recv_chunk, bp);
599+
return tox_event_file_recv_chunk_pack(data->file_recv_chunk, bp);
599600

600601
case TOX_EVENT_FILE_RECV_CONTROL:
601-
return tox_event_file_recv_control_pack(event->data.file_recv_control, bp);
602+
return tox_event_file_recv_control_pack(data->file_recv_control, bp);
602603

603604
case TOX_EVENT_FILE_RECV:
604-
return tox_event_file_recv_pack(event->data.file_recv, bp);
605+
return tox_event_file_recv_pack(data->file_recv, bp);
605606

606607
case TOX_EVENT_FRIEND_CONNECTION_STATUS:
607-
return tox_event_friend_connection_status_pack(event->data.friend_connection_status, bp);
608+
return tox_event_friend_connection_status_pack(data->friend_connection_status, bp);
608609

609610
case TOX_EVENT_FRIEND_LOSSLESS_PACKET:
610-
return tox_event_friend_lossless_packet_pack(event->data.friend_lossless_packet, bp);
611+
return tox_event_friend_lossless_packet_pack(data->friend_lossless_packet, bp);
611612

612613
case TOX_EVENT_FRIEND_LOSSY_PACKET:
613-
return tox_event_friend_lossy_packet_pack(event->data.friend_lossy_packet, bp);
614+
return tox_event_friend_lossy_packet_pack(data->friend_lossy_packet, bp);
614615

615616
case TOX_EVENT_FRIEND_MESSAGE:
616-
return tox_event_friend_message_pack(event->data.friend_message, bp);
617+
return tox_event_friend_message_pack(data->friend_message, bp);
617618

618619
case TOX_EVENT_FRIEND_NAME:
619-
return tox_event_friend_name_pack(event->data.friend_name, bp);
620+
return tox_event_friend_name_pack(data->friend_name, bp);
620621

621622
case TOX_EVENT_FRIEND_READ_RECEIPT:
622-
return tox_event_friend_read_receipt_pack(event->data.friend_read_receipt, bp);
623+
return tox_event_friend_read_receipt_pack(data->friend_read_receipt, bp);
623624

624625
case TOX_EVENT_FRIEND_REQUEST:
625-
return tox_event_friend_request_pack(event->data.friend_request, bp);
626+
return tox_event_friend_request_pack(data->friend_request, bp);
626627

627628
case TOX_EVENT_FRIEND_STATUS:
628-
return tox_event_friend_status_pack(event->data.friend_status, bp);
629+
return tox_event_friend_status_pack(data->friend_status, bp);
629630

630631
case TOX_EVENT_FRIEND_STATUS_MESSAGE:
631-
return tox_event_friend_status_message_pack(event->data.friend_status_message, bp);
632+
return tox_event_friend_status_message_pack(data->friend_status_message, bp);
632633

633634
case TOX_EVENT_FRIEND_TYPING:
634-
return tox_event_friend_typing_pack(event->data.friend_typing, bp);
635+
return tox_event_friend_typing_pack(data->friend_typing, bp);
635636

636637
case TOX_EVENT_SELF_CONNECTION_STATUS:
637-
return tox_event_self_connection_status_pack(event->data.self_connection_status, bp);
638+
return tox_event_self_connection_status_pack(data->self_connection_status, bp);
638639

639640
case TOX_EVENT_GROUP_PEER_NAME:
640-
return tox_event_group_peer_name_pack(event->data.group_peer_name, bp);
641+
return tox_event_group_peer_name_pack(data->group_peer_name, bp);
641642

642643
case TOX_EVENT_GROUP_PEER_STATUS:
643-
return tox_event_group_peer_status_pack(event->data.group_peer_status, bp);
644+
return tox_event_group_peer_status_pack(data->group_peer_status, bp);
644645

645646
case TOX_EVENT_GROUP_TOPIC:
646-
return tox_event_group_topic_pack(event->data.group_topic, bp);
647+
return tox_event_group_topic_pack(data->group_topic, bp);
647648

648649
case TOX_EVENT_GROUP_PRIVACY_STATE:
649-
return tox_event_group_privacy_state_pack(event->data.group_privacy_state, bp);
650+
return tox_event_group_privacy_state_pack(data->group_privacy_state, bp);
650651

651652
case TOX_EVENT_GROUP_VOICE_STATE:
652-
return tox_event_group_voice_state_pack(event->data.group_voice_state, bp);
653+
return tox_event_group_voice_state_pack(data->group_voice_state, bp);
653654

654655
case TOX_EVENT_GROUP_TOPIC_LOCK:
655-
return tox_event_group_topic_lock_pack(event->data.group_topic_lock, bp);
656+
return tox_event_group_topic_lock_pack(data->group_topic_lock, bp);
656657

657658
case TOX_EVENT_GROUP_PEER_LIMIT:
658-
return tox_event_group_peer_limit_pack(event->data.group_peer_limit, bp);
659+
return tox_event_group_peer_limit_pack(data->group_peer_limit, bp);
659660

660661
case TOX_EVENT_GROUP_PASSWORD:
661-
return tox_event_group_password_pack(event->data.group_password, bp);
662+
return tox_event_group_password_pack(data->group_password, bp);
662663

663664
case TOX_EVENT_GROUP_MESSAGE:
664-
return tox_event_group_message_pack(event->data.group_message, bp);
665+
return tox_event_group_message_pack(data->group_message, bp);
665666

666667
case TOX_EVENT_GROUP_PRIVATE_MESSAGE:
667-
return tox_event_group_private_message_pack(event->data.group_private_message, bp);
668+
return tox_event_group_private_message_pack(data->group_private_message, bp);
668669

669670
case TOX_EVENT_GROUP_CUSTOM_PACKET:
670-
return tox_event_group_custom_packet_pack(event->data.group_custom_packet, bp);
671+
return tox_event_group_custom_packet_pack(data->group_custom_packet, bp);
671672

672673
case TOX_EVENT_GROUP_CUSTOM_PRIVATE_PACKET:
673-
return tox_event_group_custom_private_packet_pack(event->data.group_custom_private_packet, bp);
674+
return tox_event_group_custom_private_packet_pack(data->group_custom_private_packet, bp);
674675

675676
case TOX_EVENT_GROUP_INVITE:
676-
return tox_event_group_invite_pack(event->data.group_invite, bp);
677+
return tox_event_group_invite_pack(data->group_invite, bp);
677678

678679
case TOX_EVENT_GROUP_PEER_JOIN:
679-
return tox_event_group_peer_join_pack(event->data.group_peer_join, bp);
680+
return tox_event_group_peer_join_pack(data->group_peer_join, bp);
680681

681682
case TOX_EVENT_GROUP_PEER_EXIT:
682-
return tox_event_group_peer_exit_pack(event->data.group_peer_exit, bp);
683+
return tox_event_group_peer_exit_pack(data->group_peer_exit, bp);
683684

684685
case TOX_EVENT_GROUP_SELF_JOIN:
685-
return tox_event_group_self_join_pack(event->data.group_self_join, bp);
686+
return tox_event_group_self_join_pack(data->group_self_join, bp);
686687

687688
case TOX_EVENT_GROUP_JOIN_FAIL:
688-
return tox_event_group_join_fail_pack(event->data.group_join_fail, bp);
689+
return tox_event_group_join_fail_pack(data->group_join_fail, bp);
689690

690691
case TOX_EVENT_GROUP_MODERATION:
691-
return tox_event_group_moderation_pack(event->data.group_moderation, bp);
692+
return tox_event_group_moderation_pack(data->group_moderation, bp);
692693

693694
case TOX_EVENT_INVALID:
694695
return false;
@@ -697,6 +698,15 @@ bool tox_event_pack(const Tox_Event *event, Bin_Pack *bp)
697698
return false;
698699
}
699700

701+
bool tox_event_pack(const Tox_Event *event, Bin_Pack *bp)
702+
{
703+
assert(event->type != TOX_EVENT_INVALID);
704+
705+
return bin_pack_array(bp, 2)
706+
&& tox_event_type_pack(event->type, bp)
707+
&& tox_event_data_pack(event->type, &event->data, bp);
708+
}
709+
700710
non_null()
701711
static bool tox_event_type_from_int(uint32_t value, Tox_Event_Type *out)
702712
{

0 commit comments

Comments
 (0)