blob: 6b952454a3d7aacf04ad566db440b8c9b07f12e8 [file] [log] [blame]
/*
* Copyright 2016 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef CAMERA_INCLUDE_CROS_CAMERA_IPC_UTIL_H_
#define CAMERA_INCLUDE_CROS_CAMERA_IPC_UTIL_H_
#include <string>
#include <base/files/scoped_file.h>
#include <base/optional.h>
#include <base/unguessable_token.h>
#include <mojo/public/c/system/types.h>
#include <mojo/public/cpp/system/message_pipe.h>
#include "cros-camera/export.h"
namespace base {
class FilePath;
} // namespace base
namespace cros {
CROS_CAMERA_EXPORT bool CreateServerUnixDomainSocket(
const base::FilePath& socket_path, int* server_listen_fd);
CROS_CAMERA_EXPORT bool ServerAcceptConnection(int server_listen_fd,
int* server_socket);
CROS_CAMERA_EXPORT base::ScopedFD CreateClientUnixDomainSocket(
const base::FilePath& socket_path);
CROS_CAMERA_EXPORT MojoResult CreateMojoChannelToParentByUnixDomainSocket(
const base::FilePath& socket_path,
mojo::ScopedMessagePipeHandle* child_pipe);
CROS_CAMERA_EXPORT MojoResult CreateMojoChannelToChildByUnixDomainSocket(
const base::FilePath& socket_path,
mojo::ScopedMessagePipeHandle* parent_pipe,
const std::string& pipe_name);
CROS_CAMERA_EXPORT base::UnguessableToken TokenFromString(
const std::string& token_string);
} // namespace cros
#endif // CAMERA_INCLUDE_CROS_CAMERA_IPC_UTIL_H_