Loading...
Searching...
No Matches
janus_pfunix.c File Reference
Transports

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_transport * | create (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_t * | janus_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

Copyright
  GNU General Public License v3

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