File: s3_bad_input_stream.c

package info (click to toggle)
aws-crt-python 0.16.8%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 78,328 kB
  • sloc: ansic: 330,743; python: 18,949; makefile: 6,271; sh: 3,712; asm: 754; cpp: 699; ruby: 208; java: 77; perl: 73; javascript: 46; xml: 11
file content (70 lines) | stat: -rw-r--r-- 2,370 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "s3_tester.h"
#include <aws/io/stream.h>

struct aws_s3_bad_input_stream_impl {
    struct aws_input_stream base;
    size_t length;
    struct aws_allocator *allocator;
};

static int s_aws_s3_bad_input_stream_seek(
    struct aws_input_stream *stream,
    aws_off_t offset,
    enum aws_stream_seek_basis basis) {
    (void)stream;
    (void)offset;
    (void)basis;
    aws_raise_error(AWS_ERROR_UNKNOWN);
    return AWS_OP_ERR;
}

static int s_aws_s3_bad_input_stream_read(struct aws_input_stream *stream, struct aws_byte_buf *dest) {
    (void)stream;
    (void)dest;
    aws_raise_error(AWS_IO_STREAM_READ_FAILED);
    return AWS_OP_ERR;
}

static int s_aws_s3_bad_input_stream_get_status(struct aws_input_stream *stream, struct aws_stream_status *status) {
    (void)stream;
    (void)status;
    aws_raise_error(AWS_ERROR_UNKNOWN);
    return AWS_OP_ERR;
}

static int s_aws_s3_bad_input_stream_get_length(struct aws_input_stream *stream, int64_t *out_length) {
    AWS_ASSERT(stream != NULL);
    struct aws_s3_bad_input_stream_impl *bad_input_stream =
        AWS_CONTAINER_OF(stream, struct aws_s3_bad_input_stream_impl, base);
    *out_length = (int64_t)bad_input_stream->length;
    return AWS_OP_SUCCESS;
}

static void s_aws_s3_bad_input_stream_destroy(struct aws_s3_bad_input_stream_impl *bad_input_stream) {
    aws_mem_release(bad_input_stream->allocator, bad_input_stream);
}

static struct aws_input_stream_vtable s_aws_s3_bad_input_stream_vtable = {
    .seek = s_aws_s3_bad_input_stream_seek,
    .read = s_aws_s3_bad_input_stream_read,
    .get_status = s_aws_s3_bad_input_stream_get_status,
    .get_length = s_aws_s3_bad_input_stream_get_length,
};

struct aws_input_stream *aws_s3_bad_input_stream_new(struct aws_allocator *allocator, size_t stream_length) {

    struct aws_s3_bad_input_stream_impl *bad_input_stream =
        aws_mem_calloc(allocator, 1, sizeof(struct aws_s3_bad_input_stream_impl));
    bad_input_stream->base.vtable = &s_aws_s3_bad_input_stream_vtable;
    aws_ref_count_init(
        &bad_input_stream->base.ref_count,
        bad_input_stream,
        (aws_simple_completion_callback *)s_aws_s3_bad_input_stream_destroy);

    struct aws_input_stream *input_stream = &bad_input_stream->base;

    bad_input_stream->length = stream_length;
    bad_input_stream->allocator = allocator;

    return input_stream;
}