Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

nl :: Tejido:: Sistema:: Capa

#include <src/system/SystemLayer.h>

This provides access to timers according to the configured event handling model.

Resumen

Para WEAVE_SYSTEM_CONFIG_USE_SOCKETS , la notificación de preparación de eventos se maneja a través de la implementación tradicional de encuesta / selección en la adaptación de la plataforma.

Para WEAVE_SYSTEM_CONFIG_USE_LWIP , la notificación de preparación de eventos se maneja a través de eventos / mensajes y WEAVE_SYSTEM_CONFIG_USE_LWIP específicos de la plataforma y el sistema para el sistema de eventos / mensajes.

Constructores y Destructores

Layer (void)

Tipos públicos

EventHandler )(Object &aTarget, EventType aEventType, uintptr_t aArgument) typedef
Error(*
TimerCompleteFunct )(Layer *aLayer, void *aAppState, Error aError) typedef
void(*

Funciones publicas

AddEventHandlerDelegate ( LwIPEventHandlerDelegate & aDelegate)
Error
Esto agrega un delegado de controlador de eventos a la capa del sistema para ampliar su capacidad para manejar eventos LwIP.
CancelTimer (TimerCompleteFunct aOnComplete, void *aAppState)
void
Este método cancela un temporizador de una sola vez, iniciado antes a través de StartTimer() .
DispatchEvent (Event aEvent)
Error
Esto envía el evento especificado para que lo maneje esta instancia.
DispatchEvents (void)
Error
Este es un contenedor sintáctico alrededor de un gancho específico de la plataforma que efectúa un bucle de eventos, esperando en una cola que da servicio a esta instancia, sacando eventos de esa cola y luego enviándolos para su manejo.
GetPlatformData (void) const
void *
Esto devuelve cualquier dato de plataforma específico del cliente asignado a la instancia, si se ha configurado previamente.
HandleEvent ( Object & aTarget, EventType aEventType, uintptr_t aArgument)
Error
Esto implementa el envío real y el manejo de un evento de capa del sistema de tejido .
HandlePlatformTimer (void)
Error
Maneja el evento de expiración del temporizador de la plataforma.
HandleSelectResult (int aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet)
void
Manejar E / S desde una llamada seleccionada.
Init (void *aContext)
Error
NewTimer ( Timer *& aTimerPtr)
Error
PostEvent ( Object & aTarget, EventType aEventType, uintptr_t aArgument)
Error
Esto publica un evento / mensaje del tipo especificado con el argumento proporcionado a la cola de eventos específicos de la plataforma de esta instancia.
PrepareSelect (int & aSetSize, fd_set *aReadSet, fd_set *aWriteSet, fd_set *aExceptionSet, struct timeval & aSleepTime)
void
Prepare los conjuntos de descriptores de archivo con los que trabajar con select() .
ScheduleWork (TimerCompleteFunct aComplete, void *aAppState)
Error
Programa una función con una firma idéntica a TimerCompleteFunct para que se ejecute lo antes posible en el hilo Weave.
SetPlatformData (void *aPlatformData)
void
Esto establece los datos de la plataforma específicos del cliente especificados en la instancia para su posterior recuperación por parte de la plataforma del cliente.
Shutdown (void)
Error
StartTimer (uint32_t aMilliseconds, TimerCompleteFunct aComplete, void *aAppState)
Error
Este método inicia un temporizador de un disparo.
State (void) const
LayerState
Esto devuelve el estado actual del objeto de capa.
WakeSelect (void)
void
Active el subproceso de E / S que monitorea los descriptores de archivo usando select () escribiendo un solo byte en la tubería de activación.

Funciones estáticas públicas

GetClock_Monotonic (void)
uint64_t
Devuelve un tiempo del sistema monótono en unidades de microsegundos.
GetClock_MonotonicHiRes (void)
uint64_t
Devuelve un tiempo del sistema monótono (potencialmente) de alta resolución en unidades de microsegundos.
GetClock_MonotonicMS (void)
uint64_t
Devuelve un tiempo del sistema monótono en unidades de milisegundos.
GetClock_RealTime (uint64_t & curTime)
Error
Devuelve el tiempo real (civil) actual en formato de tiempo Unix de microsegundos.
GetClock_RealTimeMS (uint64_t & curTimeMS)
Error
Devuelve el tiempo real (civil) actual en milisegundos en formato de tiempo Unix.
SetClock_RealTime (uint64_t newCurTime)
Error
Establece la noción de tiempo real (civil) actual de la plataforma.

Tipos públicos

Controlador de eventos

Error(* EventHandler)(Object &aTarget, EventType aEventType, uintptr_t aArgument)

TimerCompleteFunct

void(* TimerCompleteFunct)(Layer *aLayer, void *aAppState, Error aError)

Funciones publicas

AddEventHandlerDelegate

Error AddEventHandlerDelegate(
  LwIPEventHandlerDelegate & aDelegate
)

Esto agrega un delegado de controlador de eventos a la capa del sistema para ampliar su capacidad de manejar eventos LwIP.

Detalles
Parámetros
[in] aDelegate
Una estructura de delegado de controlador de eventos LwIP no inicializada
Valores devueltos
WEAVE_SYSTEM_NO_ERROR
Sobre el éxito.
WEAVE_SYSTEM_ERROR_BAD_ARGS
Si el puntero de función contenido en aDelegate es NULL

Cancelar temporizador

void CancelTimer(
  TimerCompleteFunct aOnComplete,
  void *aAppState
)

Este método cancela un temporizador de una sola vez, iniciado antes a través de StartTimer() .

Detalles
Parámetros
[in] aOnComplete
Un puntero a la función de devolución de llamada utilizada para llamar a StartTimer() .
[in] aAppState
Un puntero al objeto de estado de la aplicación utilizado para llamar a StartTimer() .

DispatchEvent

Error DispatchEvent(
  Event aEvent
)

Esto envía el evento especificado para que lo maneje esta instancia.

La descomposición del tipo y los argumentos del evento se maneja mediante un gancho específico de la plataforma que luego debe volver a llamar a Layer :: HandleEvent para el envío real.

Detalles
Parámetros
[in] aEvent
El objeto de evento específico de la plataforma que se enviará para su manejo.
Devoluciones
WEAVE_SYSTEM_NO_ERROR en caso de éxito; de lo contrario, un error específico que indica el motivo del error de inicialización.

DispatchEvents

Error DispatchEvents(
  void
)

Este es un contenedor sintáctico alrededor de un gancho específico de la plataforma que efectúa un bucle de eventos, esperando en una cola que atiende esta instancia, sacando eventos de esa cola y luego enviándolos para su manejo.

Detalles
Devoluciones
WEAVE_SYSTEM_NO_ERROR en caso de éxito; de lo contrario, un error específico que indica el motivo del error de inicialización.

GetPlatformData

void * GetPlatformData(
  void
) const 

Esto devuelve cualquier dato de plataforma específico del cliente asignado a la instancia, si se ha configurado previamente.

Detalles
Devoluciones
Datos de plataforma específicos del cliente, si se ha configurado previamente; de lo contrario, NULL.

HandleEvent

Error HandleEvent(
  Object & aTarget,
  EventType aEventType,
  uintptr_t aArgument
)

Esto implementa el envío real y el manejo de un evento de capa del sistema de tejido .

Detalles
Parámetros
[in,out] aTarget
Una referencia al objeto de capa al que se dirige el evento.
[in] aEventType
El tipo de evento / mensaje que se va a manejar.
[in] aArgument
El argumento asociado con el evento / mensaje.
Valores devueltos
WEAVE_SYSTEM_NO_ERROR
Sobre el éxito.
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Si el estado del objeto InetLayer es incorrecto.
WEAVE_SYSTEM_ERROR_UNEXPECTED_EVENT
Si el tipo de evento no se reconoce.

ManejarPlataformaTimer

Error HandlePlatformTimer(
  void
)

Manejar el evento de expiración del temporizador de la plataforma

Llama a nl :: Weave :: System :: Timer :: HandleExpiredTimers para manejar cualquier temporizador caducado. Se supone que esta API se llama solo mientras está en el hilo que posee el objeto Weave System Layer .

Detalles
Devoluciones
WEAVE_SYSTEM_NO_ERROR en caso de éxito, código de error en caso contrario.

HandleSelectResult

void HandleSelectResult(
  int aSetSize,
  fd_set *aReadSet,
  fd_set *aWriteSet,
  fd_set *aExceptionSet
)

Manejar E / S desde una llamada seleccionada.

Este método registra el evento de E / S pendiente en cada punto final activo y luego invoca las funciones de manejo de E / S respectivas para esos puntos finales.

Detalles
Parámetros
[in] aSetSize
El valor de retorno de la llamada seleccionada.
[in] aReadSet
Un puntero al conjunto de descriptores de archivos leídos.
[in] aWriteSet
Un puntero al conjunto de descriptores de archivos de escritura.
[in] aExceptionSet
Un puntero al conjunto de descriptores de archivos con errores.

En eso

Error Init(
  void *aContext
)

Capa

 Layer(
  void
)

NewTimer

Error NewTimer(
  Timer *& aTimerPtr
)

Posterior al evento

Error PostEvent(
  Object & aTarget,
  EventType aEventType,
  uintptr_t aArgument
)

Esto publica un evento / mensaje del tipo especificado con el argumento proporcionado a la cola de eventos específicos de la plataforma de esta instancia.

Detalles
Parámetros
[in,out] aTarget
Un puntero al objeto de la capa del sistema de tejido que realiza la solicitud de publicación.
[in] aEventType
El tipo de evento que se publicará.
[in,out] aArgument
El argumento asociado con el evento que se va a publicar.
Valores devueltos
WEAVE_SYSTEM_NO_ERROR
Sobre el éxito.
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Si el estado del objeto Layer es incorrecto.
WEAVE_SYSTEM_ERROR_NO_MEMORY
Si la cola de eventos ya está llena.
other
Se generan errores específicos de la plataforma que indican el motivo del error.

PrepararSeleccionar

void PrepareSelect(
  int & aSetSize,
  fd_set *aReadSet,
  fd_set *aWriteSet,
  fd_set *aExceptionSet,
  struct timeval & aSleepTime
)

Prepare los conjuntos de descriptores de archivo con los que trabajar con select() .

Detalles
Parámetros
[out] aSetSize
El rango de descriptores de archivo en el conjunto de descriptores de archivo.
[in] aReadSet
Un puntero al conjunto de descriptores de archivos legibles.
[in] aWriteSet
Un puntero al conjunto de descriptores de archivos grabables.
[in] aExceptionSet
Un puntero al conjunto de descriptores de archivos con errores.
[in] aSleepTime
Una referencia al tiempo máximo de sueño.

ScheduleWork

Error ScheduleWork(
  TimerCompleteFunct aComplete,
  void *aAppState
)

Programa una función con una firma idéntica a TimerCompleteFunct para que se ejecute lo antes posible en el hilo Weave.

Detalles
Parámetros
[in] aComplete
Un puntero a una función de devolución de llamada que se llamará cuando se active este temporizador.
[in] aAppState
Un puntero a un objeto de estado de la aplicación que se pasa a la función de devolución de llamada como argumento.
Valores devueltos
WEAVE_SYSTEM_ERROR_UNEXPECTED_STATE
Si SystemLayer no se ha inicializado.
WEAVE_SYSTEM_ERROR_NO_MEMORY
Si SystemLayer no puede asignar un nuevo temporizador.
WEAVE_SYSTEM_NO_ERROR
Sobre el éxito.

SetPlatformData

void SetPlatformData(
  void *aPlatformData
)

Esto establece los datos de la plataforma específicos del cliente especificados en la instancia para su posterior recuperación por parte de la plataforma del cliente.

Detalles
Parámetros
[in] aPlatformData
Los datos de la plataforma específicos del cliente que se van a configurar.

Cerrar

Error Shutdown(
  void
)

StartTimer

Error StartTimer(
  uint32_t aMilliseconds,
  TimerCompleteFunct aComplete,
  void *aAppState
)

Este método inicia un temporizador de un disparo.

Detalles
Parámetros
[in] aMilliseconds
Tiempo de caducidad en milisegundos.
[in] aComplete
Un puntero a la función llamada cuando expira el temporizador.
[in] aAppState
Un puntero al objeto de estado de la aplicación que se utiliza cuando expira el temporizador.
Devoluciones
WEAVE_SYSTEM_NO_ERROR Si tiene éxito.
Devoluciones
WEAVE_SYSTEM_ERROR_NO_MEMORY Si no se puede asignar un temporizador.
Devoluciones
Otro Valor que indica que el temporizador no se pudo iniciar.

Expresar

LayerState State(
  void
) const 

Esto devuelve el estado actual del objeto de capa.

WakeSelect

void WakeSelect(
  void
)

Active el subproceso de E / S que monitorea los descriptores de archivo usando select () escribiendo un solo byte en la tubería de activación.

Nota: Si WakeSelect() se llama desde dentro HandleSelectResult() , entonces la escritura del conducto estela se pueden omitir, ya que el flujo de entrada / O ya está despierto. Además, no nos importa si esta escritura falla, ya que la única falla razonablemente probable es que la tubería esté llena, en cuyo caso el hilo de llamada seleccionado se activará de todos modos.

Funciones estáticas públicas

GetClock_Monotonic

uint64_t GetClock_Monotonic(
  void
)

Devuelve un tiempo de sistema monótono en unidades de microsegundos.

Esta función devuelve un tiempo transcurrido en microsegundos desde una época arbitraria definida por la plataforma. Se garantiza que el valor devuelto aumentará constantemente (es decir, nunca se ajustará) entre reinicios del sistema. Además, se garantiza que la fuente de tiempo subyacente marcará continuamente durante cualquier modo de suspensión del sistema que no implique un reinicio al despertar.

Aunque algunas plataformas pueden optar por devolver un valor que mide el tiempo desde el inicio del sistema, las aplicaciones no deben depender de esto. Además, no se requiere que la época de GetClock_Monotonic () sea ​​la misma que la de cualquiera de las otras funciones de GetClock ... Por lo tanto, los cálculos de tiempo relativo solo se pueden realizar en valores devueltos por la misma función.

Se garantiza que esta función es segura para subprocesos en cualquier plataforma que emplee subprocesos.

Detalles
Devoluciones
Tiempo transcurrido en microsegundos desde una época arbitraria definida por la plataforma.

GetClock_MonotonicHiRes

uint64_t GetClock_MonotonicHiRes(
  void
)

Devuelve un tiempo de sistema monótono (potencialmente) de alta resolución en unidades de microsegundos.

Esta función devuelve un tiempo transcurrido en microsegundos desde una época arbitraria definida por la plataforma. Se garantiza que el valor devuelto aumentará constantemente (es decir, nunca se ajustará) entre reinicios del sistema. Sin embargo, no es necesario que el temporizador subyacente marque de forma continua durante los estados de suspensión profunda del sistema.

Algunas plataformas pueden implementar GetClock_MonotonicHiRes () usando un temporizador de alta resolución capaz de mayor precisión que GetClock_Monotonic () , y que no está sujeto a ajustes graduales de reloj (rotación). Los sistemas sin un temporizador de este tipo pueden simplemente devolver el mismo valor que GetClock_Monotonic () .

No se requiere que la época para el tiempo devuelta por GetClock_MonotonicHiRes () sea ​​la misma que para cualquiera de las otras funciones de GetClock ..., incluyendo GetClock_Monotonic () .

Se garantiza que esta función es segura para subprocesos en cualquier plataforma que emplee subprocesos.

Detalles
Devoluciones
Tiempo transcurrido en microsegundos desde una época arbitraria definida por la plataforma.

GetClock_MonotonicMS

uint64_t GetClock_MonotonicMS(
  void
)

Devuelve un tiempo del sistema monótono en unidades de milisegundos.

Esta función devuelve un tiempo transcurrido en milisegundos desde una época arbitraria definida por la plataforma. Se garantiza que el valor devuelto aumentará constantemente (es decir, nunca se ajustará) entre reinicios del sistema. Además, se garantiza que la fuente de tiempo subyacente marcará continuamente durante cualquier modo de suspensión del sistema que no implique un reinicio al despertar.

Aunque algunas plataformas pueden optar por devolver un valor que mide el tiempo desde el inicio del sistema, las aplicaciones no deben depender de esto. Además, no se requiere que la época de GetClock_Monotonic () sea ​​la misma que la de cualquiera de las otras funciones de GetClock ... Por lo tanto, los cálculos de tiempo relativo solo se pueden realizar en valores devueltos por la misma función.

Se garantiza que esta función es segura para subprocesos en cualquier plataforma que emplee subprocesos.

Detalles
Devoluciones
Tiempo transcurrido en milisegundos desde una época arbitraria definida por la plataforma.

GetClock_RealTime

Error GetClock_RealTime(
  uint64_t & curTime
)

Devuelve el tiempo real (civil) actual en formato de tiempo Unix de microsegundos.

Este método devuelve la noción de tiempo real actual de la plataforma local, expresada como un valor de tiempo Unix escalado a microsegundos. Se garantiza que el reloj subyacente funcionará a una velocidad mínima de segundos enteros (valores de 1.000.000), pero en algunas plataformas puede marcar más rápido.

Si la plataforma subyacente es capaz de rastrear en tiempo real, pero el sistema no está sincronizado actualmente, GetClock_RealTime () devolverá el error WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.

En plataformas que son incapaces de realizar un seguimiento en tiempo real, el método GetClock_RealTime () puede estar ausente, lo que genera un error de enlace para cualquier aplicación que haga referencia a él. Alternativamente, dichas plataformas pueden proporcionar una implementación de GetClock_RealTime () que siempre devuelve el error WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Se garantiza que esta función es segura para subprocesos en cualquier plataforma que emplee subprocesos.

Detalles
Parámetros
[out] curTime
El tiempo actual, expresado como tiempo Unix escalado a microsegundos.
Valores devueltos
WEAVE_SYSTEM_NO_ERROR
Si el método tuvo éxito.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Si la plataforma es capaz de rastrear en tiempo real, pero actualmente no está sincronizada.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Si la plataforma es incapaz de rastrear en tiempo real.

GetClock_RealTimeMS

Error GetClock_RealTimeMS(
  uint64_t & curTimeMS
)

Devuelve el tiempo real (civil) actual en milisegundos en formato de tiempo Unix.

Este método devuelve la noción de tiempo real actual de la plataforma local, expresada como un valor de tiempo Unix escalado a milisegundos. Se garantiza que el reloj subyacente funcionará a una velocidad mínima de segundos enteros (valores de 1.000.000), pero en algunas plataformas puede marcar más rápido.

Si la plataforma subyacente es capaz de rastrear en tiempo real, pero el sistema no está sincronizado actualmente, GetClock_RealTimeMS () devolverá el error WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED.

En plataformas que son incapaces de realizar un seguimiento en tiempo real, el método GetClock_RealTimeMS () puede estar ausente, lo que genera un error de enlace para cualquier aplicación que haga referencia a él. Alternativamente, tales plataformas pueden proporcionar una implementación de GetClock_RealTimeMS () que siempre devuelve el error WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Se garantiza que esta función es segura para subprocesos en cualquier plataforma que emplee subprocesos.

Detalles
Parámetros
[out] curTime
La hora actual, expresada como tiempo Unix escalado a milisegundos.
Valores devueltos
WEAVE_SYSTEM_NO_ERROR
Si el método tuvo éxito.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Si la plataforma es capaz de rastrear en tiempo real, pero actualmente no está sincronizada.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Si la plataforma es incapaz de rastrear en tiempo real.

SetClock_RealTime

Error SetClock_RealTime(
  uint64_t newCurTime
)

Establece la noción de tiempo real (civil) actual de la plataforma.

Las aplicaciones pueden llamar a esta función para establecer la noción de tiempo real actual de la plataforma local. La nueva hora actual se expresa como un valor de tiempo Unix escalado a microsegundos.

Una vez configurado, se garantiza que el reloj de la plataforma subyacente rastreará el tiempo real con una granularidad de al menos segundos completos.

Algunas plataformas pueden restringir qué aplicaciones o procesos pueden configurarse en tiempo real. Si la persona que llama no puede cambiar el tiempo real, la función SetClock_RealTime () devolverá el error WEAVE_SYSTEM_ERROR_ACCESS_DENIED.

En plataformas que son incapaces de rastrear tiempo real, o que no ofrecen la capacidad de establecer tiempo real, la función SetClock_RealTime () puede estar ausente, dando como resultado un error de enlace para cualquier aplicación que haga referencia a ella. Alternativamente, tales plataformas pueden proporcionar una implementación de SetClock_RealTime () que siempre devuelve el error WEAVE_SYSTEM_ERROR_NOT_SUPPORTED.

Se garantiza que esta función es segura para subprocesos en cualquier plataforma que emplee subprocesos.

Detalles
Parámetros
[in] newCurTime
La nueva hora actual, expresada como tiempo Unix escalado a microsegundos.
Valores devueltos
WEAVE_SYSTEM_NO_ERROR
Si el método tuvo éxito.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Si la plataforma es incapaz de rastrear en tiempo real.
#WEAVE_SYSTEM_ERROR_ACCESS_DENIED
Si la aplicación que llama no tiene el privilegio de establecer la hora actual.