Lines Matching refs:smd
45 if (!(ctx->smd._class_filter & _class)) {
84 lws_smd_dump(lws_smd_t *smd)
89 smd->owner_messages.head) {
101 lws_start_foreach_dll(struct lws_dll2 *, p, smd->owner_peers.head) {
121 _lws_smd_msg_assess_peers_interested(lws_smd_t *smd, lws_smd_msg_t *msg,
124 struct lws_context *ctx = lws_container_of(smd, struct lws_context, smd);
127 lws_start_foreach_dll(struct lws_dll2 *, p, ctx->smd.owner_peers.head) {
142 _lws_smd_class_mask_union(lws_smd_t *smd)
147 smd->owner_peers.head) {
154 smd->_class_filter = mask;
162 _lws_smd_msg_destroy(struct lws_context *cx, lws_smd_t *smd, lws_smd_msg_t *msg)
170 smd->owner_peers.head) {
202 if (ctx->smd.owner_messages.count >= ctx->smd_queue_depth) {
204 (int)ctx->smd.owner_messages.count);
209 if (!ctx->smd.delivering &&
210 lws_mutex_lock(ctx->smd.lock_peers)) /* +++++++++++++++ peers */
213 if (lws_mutex_lock(ctx->smd.lock_messages)) /* +++++++++++++++++ messages */
217 &ctx->smd, msg, exc);
220 lws_mutex_unlock(ctx->smd.lock_messages); /* --------------- messages */
223 if (!ctx->smd.delivering)
224 lws_mutex_unlock(ctx->smd.lock_peers); /* ------------- peers */
233 lws_dll2_add_tail(&msg->list, &ctx->smd.owner_messages);
240 lws_start_foreach_dll(struct lws_dll2 *, p, ctx->smd.owner_peers.head) {
254 msg, msg->refcount, ctx->smd.owner_messages.count);
255 lws_smd_dump(&ctx->smd);
258 lws_mutex_unlock(ctx->smd.lock_messages); /* --------------- messages */
261 if (!ctx->smd.delivering)
262 lws_mutex_unlock(ctx->smd.lock_peers); /* ------------- peers */
293 if (!(ctx->smd._class_filter & _class))
391 if (!(ctx->smd._class_filter & _class))
436 return _lws_smd_ss_rx_forward(ctx, lws_ss_tag(h), h->u.smd.smd_peer, buf, len);
461 lws_smd_t *smd = lws_container_of(pr->list.owner, lws_smd_t,
464 if (lws_mutex_lock(smd->lock_messages)) /* +++++++++ messages */
481 _lws_smd_msg_destroy(pr->ctx, smd, pr->tail);
489 lws_mutex_unlock(smd->lock_messages); /* messages ------- */
556 if (lws_mutex_lock(ctx->smd.lock_messages)) /* +++++++++ messages */
560 _lws_smd_msg_destroy(ctx, &ctx->smd, msg);
561 lws_mutex_unlock(ctx->smd.lock_messages); /* messages ------- */
578 if (!ctx->smd.owner_messages.count)
581 ctx->smd.delivering = 1;
585 if (lws_mutex_lock(ctx->smd.lock_peers)) /* +++++++++++++++ peers */
589 ctx->smd.owner_peers.head) {
596 lws_mutex_unlock(ctx->smd.lock_peers); /* ------------- peers */
599 ctx->smd.delivering = 0;
618 if (!ctx->smd.delivering &&
619 lws_mutex_lock(ctx->smd.lock_peers)) { /* +++++++++++++++ peers */
628 if (lws_mutex_lock(ctx->smd.lock_messages)) { /* +++++++++ messages */
634 lws_dll2_add_tail(&pr->list, &ctx->smd.owner_peers);
637 _lws_smd_class_mask_union(&ctx->smd);
647 ctx->smd.owner_messages.head) {
657 lws_mutex_unlock(ctx->smd.lock_messages); /* messages ------- */
660 (unsigned int)ctx->smd.owner_peers.count);
663 if (!ctx->smd.delivering)
664 lws_mutex_unlock(ctx->smd.lock_peers); /* ------------- peers */
672 lws_smd_t *smd = lws_container_of(pr->list.owner, lws_smd_t, owner_peers);
674 if (!smd->delivering &&
675 lws_mutex_lock(smd->lock_peers)) /* +++++++++++++++++++ peers */
679 if (!smd->delivering)
680 lws_mutex_unlock(smd->lock_peers); /* ----------------- peers */
693 if (!ctx->smd.owner_messages.count)
701 if (lws_mutex_lock(ctx->smd.lock_peers)) /* +++++++++++++++++++++++ peers */
703 if (lws_mutex_lock(ctx->smd.lock_messages)) /* +++++++++++++++++ messages */
707 ctx->smd.owner_messages.head) {
723 ctx->smd.owner_peers.head) {
737 _lws_smd_msg_destroy(ctx, &ctx->smd, msg);
741 lws_mutex_unlock(ctx->smd.lock_messages); /* --------------- messages */
747 lws_start_foreach_dll(struct lws_dll2 *, p, ctx->smd.owner_peers.head) {
762 lws_mutex_unlock(ctx->smd.lock_peers); /* --------------------- peers */
772 ctx->smd._class_filter = 0;
779 ctx->smd.owner_messages.head) {
792 ctx->smd.owner_peers.head) {
800 lws_mutex_destroy(ctx->smd.lock_messages);
801 lws_mutex_destroy(ctx->smd.lock_peers);