]> git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSWindows/DLLX/DNSSDRecord.cpp
mDNSResponder-320.5.tar.gz
[apple/mdnsresponder.git] / mDNSWindows / DLLX / DNSSDRecord.cpp
1 /* -*- Mode: C; tab-width: 4 -*-
2 *
3 * Copyright (c) 2009 Apple Computer, Inc. All rights reserved.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18
19
20 #include "stdafx.h"
21
22 #include "DNSSDRecord.h"
23
24 #include "StringServices.h"
25
26 #include <DebugServices.h>
27
28
29
30
31
32 // CDNSSDRecord
33
34
35
36 STDMETHODIMP CDNSSDRecord::Update(DNSSDFlags flags, VARIANT rdata, ULONG ttl)
37
38 {
39
40 std::vector< BYTE > byteArray;
41
42 const void * byteArrayPtr = NULL;
43
44 DNSServiceErrorType err = 0;
45
46 HRESULT hr = 0;
47
48 BOOL ok;
49
50
51
52 // Convert the VARIANT
53
54 ok = VariantToByteArray( &rdata, byteArray );
55
56 require_action( ok, exit, err = kDNSServiceErr_Unknown );
57
58
59
60 err = DNSServiceUpdateRecord( m_serviceObject->GetSubordRef(), m_rref, flags, ( uint16_t ) byteArray.size(), byteArray.size() > 0 ? &byteArray[ 0 ] : NULL, ttl );
61
62 require_noerr( err, exit );
63
64
65
66 exit:
67
68
69
70 return err;
71
72 }
73
74
75
76
77
78 STDMETHODIMP CDNSSDRecord::Remove(DNSSDFlags flags)
79
80 {
81
82 DNSServiceErrorType err = 0;
83
84
85
86 err = DNSServiceRemoveRecord( m_serviceObject->GetSubordRef(), m_rref, flags );
87
88 require_noerr( err, exit );
89
90
91
92 exit:
93
94
95
96 return err;
97
98 }
99
100
101