All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tag.emit.grvt Maven / Gradle / Ivy

/*******************************************************************************
 * © 2018 Disney | ABC Television Group
 *
 * Licensed under the Apache License, Version 2.0 (the "Apache License")
 * with the following modification; you may not use this file except in
 * compliance with the Apache License and the following modification to it:
 * Section 6. Trademarks. is deleted and replaced with:
 *
 * 6. Trademarks. This License does not grant permission to use the trade
 *     names, trademarks, service marks, or product names of the Licensor
 *     and its affiliates, except as required to comply with Section 4(c) of
 *     the License and to reproduce the content of the NOTICE file.
 *
 * You may obtain a copy of the Apache License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the Apache License with the above modification is
 * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied. See the Apache License for the specific
 * language governing permissions and limitations under the Apache License.
 *******************************************************************************/
 
@Tag(
		info = "Emit an event that can be received by remote clients",
		body = "optional alternative to value attribute, the streaming output or return value of the body closure may be used to produce the message value",
		sample="emit(event:'contentUpdate',value:someContent)",
		attrs = [ 
				@Attr(
						name = "event", 
						info="The name of the event to emit to subscribed remote clients",
						required = true
				),
				@Attr(
						name = "user", 
						info="The name of an authenticated user to restrict the event broadcast to",
						required = false
				),
				@Attr(
						name = "value", 
						info="used to specify a message (or error) value; null is only allowed as a termination message indicating a sender closing a channel",
						required = false
				),
				@Attr(
						name = "timeout", 
						info="number of seconds to try and enqueue the message to acceptors",
						required = false
				)
			]
	)
class Emit{
	def tag(Map atts, Closure body){
		def event = resolve(atts,'event',String.class)
		assert event
		def channel = [event: event]
		def user = resolve(atts,'user',String.class)
		if(user){
			channel.user = user
		}
		offer(*:atts, channel: channel, body)
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy