コード例 #1
0
ファイル: Buffer.c プロジェクト: alyawn/craftd-huh
void
SV_BufferAddString (CDBuffer* self, CDString* data)
{
    CDString* sanitized = SV_StringSanitize(data);

    SVShort size = htons(CD_StringSize(sanitized));

    evbuffer_add(self->raw, &size, SVShortSize);
    evbuffer_add(self->raw, CD_StringContent(sanitized), CD_StringSize(sanitized));

    SV_DestroyString(sanitized);
}
コード例 #2
0
ファイル: Packet.c プロジェクト: LordSpacehog/craftd
void
SV_DestroyPacketData (SVPacket* self)
{
    if (!self->data) {
        return;
    }

    switch (self->chain) {
        case SVRequest: {
            switch (self->type) {
                case SVLogin: {
                    SVPacketLogin* packet = (SVPacketLogin*) self->data;

                    SV_DestroyString(packet->request.username);
                } break;

                case SVHandshake: {
                    SVPacketHandshake* packet = (SVPacketHandshake*) self->data;

                    SV_DestroyString(packet->request.username);
                } break;

                case SVChat: {
                    SVPacketChat* packet = (SVPacketChat*) self->data;

                    SV_DestroyString(packet->request.message);
                } break;

                case SVEntityMetadata: {
                    SVPacketEntityMetadata* packet = (SVPacketEntityMetadata*) self->data;

                    SV_DestroyMetadata(packet->request.metadata);
                } break;

                case SVUpdateSign: {
                    SVPacketUpdateSign* packet = (SVPacketUpdateSign*) self->data;

                    SV_DestroyString(packet->request.first);
                    SV_DestroyString(packet->request.second);
                    SV_DestroyString(packet->request.third);
                    SV_DestroyString(packet->request.fourth);
                } break;

                case SVDisconnect: {
                    SVPacketDisconnect* packet = (SVPacketDisconnect*) self->data;

                    SV_DestroyString(packet->request.reason);
                }

                default: break;
            }
        } break;

        case SVResponse: {
            switch (self->type) {
                case SVLogin: {
                    SVPacketLogin* packet = (SVPacketLogin*) self->data;

                    SV_DestroyString(packet->response.serverName);
                } break;

                case SVHandshake: {
                    SVPacketHandshake* packet = (SVPacketHandshake*) self->data;

                    SV_DestroyString(packet->response.hash);
                } break;

                case SVChat: {
                    SVPacketChat* packet = (SVPacketChat*) self->data;

                    SV_DestroyString(packet->request.message);
                } break;

                case SVNamedEntitySpawn: {
                    SVPacketNamedEntitySpawn* packet = (SVPacketNamedEntitySpawn*) self->data;

                    SV_DestroyString(packet->response.name);
                } break;

                case SVSpawnMob: {
                    SVPacketSpawnMob* packet = (SVPacketSpawnMob*) self->data;

                    SV_DestroyMetadata(packet->response.metadata);
                } break;

                case SVPainting: {
                    SVPacketPainting* packet = (SVPacketPainting*) self->data;

                    SV_DestroyString(packet->response.title);
                } break;

                case SVEntityMetadata: {
                    SVPacketEntityMetadata* packet = (SVPacketEntityMetadata*) self->data;

                    SV_DestroyMetadata(packet->response.metadata);
                } break;

                case SVMapChunk: {
                    SVPacketMapChunk* packet = (SVPacketMapChunk*) self->data;

                    CD_free(packet->response.item);
                } break;

                case SVMultiBlockChange: {
                    SVPacketMultiBlockChange* packet = (SVPacketMultiBlockChange*) self->data;

                    CD_free(packet->response.coordinate);
                    CD_free(packet->response.type);
                    CD_free(packet->response.metadata);
                } break;

                case SVExplosion: {
                    SVPacketExplosion* packet = (SVPacketExplosion*) self->data;

                    CD_free(packet->response.item);
                } break;

                case SVOpenWindow: {
                    SVPacketOpenWindow* packet = (SVPacketOpenWindow*) self->data;

                    SV_DestroyString(packet->response.title);
                } break;

                case SVWindowItems: {
                    SVPacketWindowItems* packet = (SVPacketWindowItems*) self->data;

                    CD_free(packet->response.item);
                } break;

                case SVDisconnect: {
                    SVPacketDisconnect* packet = (SVPacketDisconnect*) self->data;

                    SV_DestroyString(packet->response.reason);
                } break;

                default: break;
            }
        } break;
    }
}