Fork me on GitHub
Loading...
Searching...
No Matches
Data Structures | Macros | Typedefs | Functions | Variables
janus_pfunix.c File Reference

Janus Unix Sockets transport plugin. More...

#include "transport.h"
#include <arpa/inet.h>
#include <sys/socket.h>
#include <poll.h>
#include <sys/un.h>
#include "../debug.h"
#include "../apierror.h"
#include "../config.h"
#include "../mutex.h"
#include "../utils.h"
Include dependency graph for janus_pfunix.c:

Data Structures

struct  janus_pfunix_client
 

Macros

#define JANUS_PFUNIX_VERSION   1
 
#define JANUS_PFUNIX_VERSION_STRING   "0.0.1"
 
#define JANUS_PFUNIX_DESCRIPTION   "This transport plugin adds Unix Sockets support to the Janus API."
 
#define JANUS_PFUNIX_NAME   "JANUS Unix Sockets transport plugin"
 
#define JANUS_PFUNIX_AUTHOR   "Meetecho s.r.l."
 
#define JANUS_PFUNIX_PACKAGE   "janus.transport.pfunix"
 
#define BUFFER_SIZE   8192
 
#define JANUS_PFUNIX_ERROR_INVALID_REQUEST   411
 
#define JANUS_PFUNIX_ERROR_MISSING_ELEMENT   412
 
#define JANUS_PFUNIX_ERROR_INVALID_ELEMENT   413
 
#define JANUS_PFUNIX_ERROR_UNKNOWN_ERROR   499
 
#define UNIX_PATH_MAX   sizeof(sizecheck.sun_path)
 

Typedefs

typedef struct janus_pfunix_client janus_pfunix_client
 

Functions

janus_transportcreate (void)
 
int janus_pfunix_init (janus_transport_callbacks *callback, const char *config_path)
 
void janus_pfunix_destroy (void)
 
int janus_pfunix_get_api_compatibility (void)
 
int janus_pfunix_get_version (void)
 
const char * janus_pfunix_get_version_string (void)
 
const char * janus_pfunix_get_description (void)
 
const char * janus_pfunix_get_name (void)
 
const char * janus_pfunix_get_author (void)
 
const char * janus_pfunix_get_package (void)
 
gboolean janus_pfunix_is_janus_api_enabled (void)
 
gboolean janus_pfunix_is_admin_api_enabled (void)
 
int janus_pfunix_send_message (janus_transport_session *transport, void *request_id, gboolean admin, json_t *message)
 
void janus_pfunix_session_created (janus_transport_session *transport, guint64 session_id)
 
void janus_pfunix_session_over (janus_transport_session *transport, guint64 session_id, gboolean timeout, gboolean claimed)
 
void janus_pfunix_session_claimed (janus_transport_session *transport, guint64 session_id)
 
json_tjanus_pfunix_query_transport (json_t *request)
 
void * janus_pfunix_thread (void *data)
 

Variables

struct sockaddr_un sizecheck
 

Detailed Description

Janus Unix Sockets transport plugin.

Author
Lorenzo Miniero loren.nosp@m.zo@m.nosp@m.eetec.nosp@m.ho.c.nosp@m.om

This is an implementation of a Unix Sockets transport for the Janus API. This means that, with the help of this module, local applications can use Unix Sockets to make requests to Janus. This plugin can make use of either the SOCK_SEQPACKET or the SOCK_DGRAM socket type according to what you configure, so make sure you're using the right one when writing a client application. Pretty much as it happens with WebSockets, the same client socket can be used for both sending requests and receiving notifications, without any need for long polls. At the same time, without the concept of a REST path, requests sent through the Unix Sockets interface will need to include, when needed, additional pieces of information like session_id and handle_id. That is, where you'd send a Janus request related to a specific session to the /janus/<session> path, with Unix Sockets you'd have to send the same request with an additional session_id field in the JSON payload. The same applies for the handle.

Note
When you create a session using Unix Sockets, a subscription to the events related to it is done automatically, so no need for an explicit request as the GET in the plain HTTP API. Closing a client Unix Socket will also destroy all the sessions it created.

transports

Macro Definition Documentation

◆ BUFFER_SIZE

#define BUFFER_SIZE   8192

◆ JANUS_PFUNIX_AUTHOR

#define JANUS_PFUNIX_AUTHOR   "Meetecho s.r.l."

◆ JANUS_PFUNIX_DESCRIPTION

#define JANUS_PFUNIX_DESCRIPTION   "This transport plugin adds Unix Sockets support to the Janus API."

◆ JANUS_PFUNIX_ERROR_INVALID_ELEMENT

#define JANUS_PFUNIX_ERROR_INVALID_ELEMENT   413

◆ JANUS_PFUNIX_ERROR_INVALID_REQUEST

#define JANUS_PFUNIX_ERROR_INVALID_REQUEST   411

◆ JANUS_PFUNIX_ERROR_MISSING_ELEMENT

#define JANUS_PFUNIX_ERROR_MISSING_ELEMENT   412

◆ JANUS_PFUNIX_ERROR_UNKNOWN_ERROR

#define JANUS_PFUNIX_ERROR_UNKNOWN_ERROR   499

◆ JANUS_PFUNIX_NAME

#define JANUS_PFUNIX_NAME   "JANUS Unix Sockets transport plugin"

◆ JANUS_PFUNIX_PACKAGE

#define JANUS_PFUNIX_PACKAGE   "janus.transport.pfunix"

◆ JANUS_PFUNIX_VERSION

#define JANUS_PFUNIX_VERSION   1

◆ JANUS_PFUNIX_VERSION_STRING

#define JANUS_PFUNIX_VERSION_STRING   "0.0.1"

◆ UNIX_PATH_MAX

#define UNIX_PATH_MAX   sizeof(sizecheck.sun_path)

Typedef Documentation

◆ janus_pfunix_client

typedef struct janus_pfunix_client janus_pfunix_client

Function Documentation

◆ create()

janus_transport * create ( void )

◆ janus_pfunix_destroy()

void janus_pfunix_destroy ( void )

◆ janus_pfunix_get_api_compatibility()

int janus_pfunix_get_api_compatibility ( void )

◆ janus_pfunix_get_author()

const char * janus_pfunix_get_author ( void )

◆ janus_pfunix_get_description()

const char * janus_pfunix_get_description ( void )

◆ janus_pfunix_get_name()

const char * janus_pfunix_get_name ( void )

◆ janus_pfunix_get_package()

const char * janus_pfunix_get_package ( void )

◆ janus_pfunix_get_version()

int janus_pfunix_get_version ( void )

◆ janus_pfunix_get_version_string()

const char * janus_pfunix_get_version_string ( void )

◆ janus_pfunix_init()

int janus_pfunix_init ( janus_transport_callbacks * callback,
const char * config_path )

◆ janus_pfunix_is_admin_api_enabled()

gboolean janus_pfunix_is_admin_api_enabled ( void )

◆ janus_pfunix_is_janus_api_enabled()

gboolean janus_pfunix_is_janus_api_enabled ( void )

◆ janus_pfunix_query_transport()

json_t * janus_pfunix_query_transport ( json_t * request)

◆ janus_pfunix_send_message()

int janus_pfunix_send_message ( janus_transport_session * transport,
void * request_id,
gboolean admin,
json_t * message )

◆ janus_pfunix_session_claimed()

void janus_pfunix_session_claimed ( janus_transport_session * transport,
guint64 session_id )

◆ janus_pfunix_session_created()

void janus_pfunix_session_created ( janus_transport_session * transport,
guint64 session_id )

◆ janus_pfunix_session_over()

void janus_pfunix_session_over ( janus_transport_session * transport,
guint64 session_id,
gboolean timeout,
gboolean claimed )

◆ janus_pfunix_thread()

void * janus_pfunix_thread ( void * data)

Variable Documentation

◆ sizecheck

struct sockaddr_un sizecheck