]> git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSWindows/DLLX/DNSSDRecord.cpp
mDNSResponder-212.1.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 Change History (most recent first):
18
19 $Log: DNSSDRecord.cpp,v $
20 Revision 1.1 2009/05/26 04:43:54 herscher
21 <rdar://problem/3948252> COM component that can be used with any .NET language and VB.
22
23
24 */
25
26 #include "stdafx.h"
27 #include "DNSSDRecord.h"
28 #include "StringServices.h"
29 #include <DebugServices.h>
30
31
32 // CDNSSDRecord
33
34 STDMETHODIMP CDNSSDRecord::Update(DNSSDFlags flags, VARIANT rdata, ULONG ttl)
35 {
36 std::vector< BYTE > byteArray;
37 const void * byteArrayPtr = NULL;
38 DNSServiceErrorType err = 0;
39 HRESULT hr = 0;
40 BOOL ok;
41
42 // Convert the VARIANT
43 ok = VariantToByteArray( &rdata, byteArray );
44 require_action( ok, exit, err = kDNSServiceErr_Unknown );
45
46 err = DNSServiceUpdateRecord( m_serviceObject->GetSubordRef(), m_rref, flags, ( uint16_t ) byteArray.size(), byteArray.size() > 0 ? &byteArray[ 0 ] : NULL, ttl );
47 require_noerr( err, exit );
48
49 exit:
50
51 return err;
52 }
53
54
55 STDMETHODIMP CDNSSDRecord::Remove(DNSSDFlags flags)
56 {
57 DNSServiceErrorType err = 0;
58
59 err = DNSServiceRemoveRecord( m_serviceObject->GetSubordRef(), m_rref, flags );
60 require_noerr( err, exit );
61
62 exit:
63
64 return err;
65 }
66