• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
Update(DNSSDFlags flags,VARIANT rdata,ULONG ttl)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 
Remove(DNSSDFlags flags)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 
102