Home | History | Annotate | Download | only in DLLX
      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 
    102