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 36STDMETHODIMP 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 66exit: 67 68 69 70 return err; 71 72} 73 74 75 76 77 78STDMETHODIMP 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 92exit: 93 94 95 96 return err; 97 98} 99 100 101 102