]> err.no Git - sope/blob - sope-core/NGStreams/NGDatagramPacket.m
Drop apache 1 build-dependency
[sope] / sope-core / NGStreams / NGDatagramPacket.m
1 /*
2   Copyright (C) 2000-2005 SKYRIX Software AG
3
4   This file is part of SOPE.
5
6   SOPE is free software; you can redistribute it and/or modify it under
7   the terms of the GNU Lesser General Public License as published by the
8   Free Software Foundation; either version 2, or (at your option) any
9   later version.
10
11   SOPE is distributed in the hope that it will be useful, but WITHOUT ANY
12   WARRANTY; without even the implied warranty of MERCHANTABILITY or
13   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14   License for more details.
15
16   You should have received a copy of the GNU Lesser General Public
17   License along with SOPE; see the file COPYING.  If not, write to the
18   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
19   02111-1307, USA.
20 */
21
22 #include "NGDatagramPacket.h"
23 #include "common.h"
24
25 @implementation NGDatagramPacket
26
27 + (id)packetWithData:(NSData *)_data {
28   return [[[self alloc] initWithData:_data] autorelease];
29 }
30 + (id)packetWithBytes:(const void *)_bytes size:(int)_packetSize {
31   return [[[self alloc] initWithBytes:_bytes size:_packetSize] autorelease];
32 }
33
34 - (id)initWithBytes:(const void *)_bytes size:(int)_packetSize {
35   return [self initWithData:[NSData dataWithBytes:_bytes length:_packetSize]];
36 }
37 - (id)initWithData:(NSData *)_data {
38   if ((self = [self init])) {
39     self->packet = [_data copyWithZone:[self zone]];
40   }
41   return self;
42 }
43
44 - (void)dealloc {
45   [self->packet   release];
46   [self->sender   release];
47   [self->receiver release];
48   [super dealloc];
49 }
50
51 /* accessors */
52
53 - (void)setSender:(id<NGSocketAddress>)_address {
54   ASSIGN(self->sender, _address);
55 }
56 - (id<NGSocketAddress>)sender {
57   return self->sender;
58 }
59
60 - (void)setReceiver:(id<NGSocketAddress>)_address {
61   ASSIGN(self->receiver, _address);
62 }
63 - (id<NGSocketAddress>)receiver {
64   return self->receiver;
65 }
66
67 - (void)setData:(NSData *)_data {
68   ASSIGN(self->packet, _data);
69 }
70 - (NSData *)data {
71   return self->packet;
72 }
73
74 - (int)packetSize {
75   return [self->packet length];
76 }
77
78 /* operations */
79
80 - (void)reverseAddresses {
81   id oldSender = [[self sender] retain];
82   [self setSender:[self receiver]];
83   [self setReceiver:oldSender];
84   [oldSender release]; oldSender = nil;
85 }
86
87 /* description */
88
89 - (NSString *)description {
90   return [NSString stringWithFormat:@"<%@[0x%p]: from=%@ to=%@ size=%i>",
91                      NSStringFromClass([self class]), self,
92                      [self sender], [self receiver], [self packetSize]];
93 }
94
95 @end /* NGDatagramPacket */