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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
use 5.010001;
use strict;
use warnings;
package BSON::Raw;
# ABSTRACT: BSON type wrapper for pre-encoded BSON documents
use version;
our $VERSION = 'v1.12.2';
use Moo;
#pod =attr bson
#pod
#pod A string containing a BSON-encoded document. Default is C<undef>.
#pod
#pod =attr metadata
#pod
#pod A hash reference containing arbitrary metadata about the BSON document.
#pod Default is C<undef>.
#pod
#pod =cut
has [qw/bson metadata/] => (
is => 'ro'
);
use namespace::clean -except => 'meta';
# Returns the first key of an encoded hash passed via BSON::Raw->new(bson=>$bson).
# If the BSON document has no key, it will return C<undef>.
sub _get_first_key {
my ($self) = @_;
return undef if length( $self->bson ) <= 5; ## no critic
my ( undef, undef, $key ) = unpack( "lCZ*", $self->bson );
return $key;
}
1;
=pod
=encoding UTF-8
=head1 NAME
BSON::Raw - BSON type wrapper for pre-encoded BSON documents
=head1 VERSION
version v1.12.2
=head1 SYNOPSIS
use BSON::Types ':all';
my $ordered = bson_raw( $bson_bytes );
=head1 DESCRIPTION
This module provides a BSON document wrapper for already-encoded BSON bytes.
Generally, end-users should have no need for this; it is provided for
optimization purposes for L<MongoDB> or other client libraries.
=head1 ATTRIBUTES
=head2 bson
A string containing a BSON-encoded document. Default is C<undef>.
=head2 metadata
A hash reference containing arbitrary metadata about the BSON document.
Default is C<undef>.
=head1 AUTHORS
=over 4
=item *
David Golden <david@mongodb.com>
=item *
Stefan G. <minimalist@lavabit.com>
=back
=head1 COPYRIGHT AND LICENSE
This software is Copyright (c) 2020 by Stefan G. and MongoDB, Inc.
This is free software, licensed under:
The Apache License, Version 2.0, January 2004
=cut
__END__
# vim: set ts=4 sts=4 sw=4 et tw=75:
|