Save the object type of object "o". */
| 674 | |
| 675 | /* Save the object type of object "o". */ |
| 676 | int rdbSaveObjectType(rio *rdb, robj_roptr o) { |
| 677 | switch (o->type) { |
| 678 | case OBJ_STRING: |
| 679 | return rdbSaveType(rdb,RDB_TYPE_STRING); |
| 680 | case OBJ_LIST: |
| 681 | if (o->encoding == OBJ_ENCODING_QUICKLIST) |
| 682 | return rdbSaveType(rdb,RDB_TYPE_LIST_QUICKLIST); |
| 683 | else |
| 684 | serverPanic("Unknown list encoding: %d", o->encoding); |
| 685 | case OBJ_SET: |
| 686 | if (o->encoding == OBJ_ENCODING_INTSET) |
| 687 | return rdbSaveType(rdb,RDB_TYPE_SET_INTSET); |
| 688 | else if (o->encoding == OBJ_ENCODING_HT) |
| 689 | return rdbSaveType(rdb,RDB_TYPE_SET); |
| 690 | else |
| 691 | serverPanic("Unknown set encoding: %d", o->encoding); |
| 692 | case OBJ_ZSET: |
| 693 | if (o->encoding == OBJ_ENCODING_ZIPLIST) |
| 694 | return rdbSaveType(rdb,RDB_TYPE_ZSET_ZIPLIST); |
| 695 | else if (o->encoding == OBJ_ENCODING_SKIPLIST) |
| 696 | return rdbSaveType(rdb,RDB_TYPE_ZSET_2); |
| 697 | else |
| 698 | serverPanic("Unknown sorted set encoding: %d", o->encoding); |
| 699 | case OBJ_HASH: |
| 700 | if (o->encoding == OBJ_ENCODING_ZIPLIST) |
| 701 | return rdbSaveType(rdb,RDB_TYPE_HASH_ZIPLIST); |
| 702 | else if (o->encoding == OBJ_ENCODING_HT) |
| 703 | return rdbSaveType(rdb,RDB_TYPE_HASH); |
| 704 | else |
| 705 | serverPanic("Unknown hash encoding: %d", o->encoding); |
| 706 | case OBJ_STREAM: |
| 707 | return rdbSaveType(rdb,RDB_TYPE_STREAM_LISTPACKS); |
| 708 | case OBJ_MODULE: |
| 709 | return rdbSaveType(rdb,RDB_TYPE_MODULE_2); |
| 710 | case OBJ_CRON: |
| 711 | return rdbSaveType(rdb,RDB_TYPE_CRON); |
| 712 | default: |
| 713 | serverPanic("Unknown object type: %d", o->type); |
| 714 | } |
| 715 | return -1; /* avoid warning */ |
| 716 | } |
| 717 | |
| 718 | /* Use rdbLoadType() to load a TYPE in RDB format, but returns -1 if the |
| 719 | * type is not specifically a valid Object Type. */ |
no test coverage detected