mirror of
https://github.com/Netflix/dial-reference.git
synced 2026-06-08 02:49:58 +00:00
106 lines
3.5 KiB
C
106 lines
3.5 KiB
C
/*
|
|
* Copyright (c) 2014-2019 Netflix, Inc.
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* Redistributions of source code must retain the above copyright notice, this
|
|
* list of conditions and the following disclaimer.
|
|
* Redistributions in binary form must reproduce the above copyright notice,
|
|
* this list of conditions and the following disclaimer in the documentation
|
|
* and/or other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY NETFLIX, INC. AND CONTRIBUTORS "AS IS" AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL NETFLIX OR CONTRIBUTORS BE LIABLE FOR ANY
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
/*
|
|
* Defines functions for persisting and retrieving DIAL data.
|
|
*/
|
|
|
|
#ifndef SRC_SERVER_DIAL_DATA_H_
|
|
#define SRC_SERVER_DIAL_DATA_H_
|
|
|
|
/*
|
|
* Slash-terminated directory of where to persist the DIAL data.
|
|
*/
|
|
#define DIAL_DATA_DIR "/tmp/"
|
|
|
|
/*
|
|
* The maximum DIAL data payload accepted per the 'DIAL extension for smooth
|
|
* pairing' specification'.
|
|
*/
|
|
#define DIAL_DATA_MAX_PAYLOAD (4096) /* 4 KB */
|
|
|
|
/*
|
|
* Url path where DIAL data should be posted according to the 'DIAL extension
|
|
* for smooth pairing' specification.
|
|
*/
|
|
#define DIAL_DATA_URI "/dial_data"
|
|
|
|
/**
|
|
* The DIAL data key and value values cannot contain any spaces. They are
|
|
* expected to be URL-escaped strings, so any spaces would be represented as
|
|
* the '+' character. They have a max length of 255 characters.
|
|
*
|
|
* THE STRINGS key AND value POINT TO MUST BE DYNAMICALLY ALLOCATED
|
|
*/
|
|
struct DIALData_ {
|
|
struct DIALData_ *next;
|
|
char *key;
|
|
char *value;
|
|
};
|
|
|
|
typedef struct DIALData_ DIALData;
|
|
|
|
#define DIAL_KEY_OR_VALUE_MAX_LEN (255)
|
|
#define DIAL_KEY_OR_VALUE_MAX_LEN_STR "255"
|
|
|
|
/**
|
|
* Store the DIAL data key/value pairs in the application data store.
|
|
*
|
|
* Will exit immediately if the data output file cannot be accessed due to
|
|
* out-of-memory or I/O errors.
|
|
*
|
|
* Keys and values are truncated to DIAL_KEY_OR_VALUE_MAX_LEN.
|
|
*
|
|
* @param app_name application name.
|
|
* @param data pointer to head of DIAL data linked list.
|
|
*/
|
|
void store_dial_data(char *app_name, DIALData *data);
|
|
|
|
/**
|
|
* Retrieve the DIAL data key/value pairs from the application data store.
|
|
*
|
|
* @param app_name application name.
|
|
* @return data pointer to head of DIAL data linked list or NULL if
|
|
* there is no valid data or if the data output file cannot be accessed
|
|
* due to out-of-memory or I/O errors.
|
|
*/
|
|
DIALData *retrieve_dial_data(char *app_name);
|
|
|
|
/**
|
|
* Set the DIAL data directory.
|
|
*
|
|
* @param data_dir the DIAL data directory path, which must include the
|
|
* trailing directory separator (e.g. '/' character).
|
|
*/
|
|
void set_dial_data_dir(const char *data_dir);
|
|
|
|
/**
|
|
* Frees the DIAL data linked list memory.
|
|
*
|
|
* @param dialData pointer to the DIAL data linked list.
|
|
*/
|
|
void free_dial_data(DIALData **dialData);
|
|
|
|
#endif /* SRC_SERVER_DIAL_DATA_H_ */
|