2009-07-30 18:12:49 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! Copyright (C) 2009 Sam Anklesaria.
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								! See http://factorcode.org/license.txt for BSD license.
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-03 23:29:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								USING: accessors assocs combinators continuations effects
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								io.encodings.binary io.servers.connection kernel namespaces
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-04 00:12:34 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								sequences serialize sets threads vocabs vocabs.parser init io ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-07-29 16:48:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								IN: modules.rpc-server
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-03 23:29:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-07-29 16:48:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								<PRIVATE
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								TUPLE: rpc-request args vocabspec wordname ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYMBOL: serving-vocabs serving-vocabs [ V{ } clone ] initialize
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-03 23:29:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: getter ( -- ) deserialize dup serving-vocabs get-global index
							 | 
						
					
						
							
								
									
										
										
										
											2009-07-29 16:48:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        [ vocab-words [ stack-effect ] { } assoc-map-as ]
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-04 00:12:34 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        [ \ no-vocab boa ] if serialize flush ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-07-29 16:48:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-03 23:29:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: doer ( -- ) deserialize dup vocabspec>> serving-vocabs get-global index
							 | 
						
					
						
							
								
									
										
										
										
											2009-07-29 16:48:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								        [ [ args>> ] [ wordname>> ] [ vocabspec>> vocab-words ] tri at [ execute ] curry with-datastack ]
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-04 00:12:34 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								        [ vocabspec>> \ no-vocab boa ] if serialize flush ;
							 | 
						
					
						
							
								
									
										
										
										
											2009-07-29 16:48:54 -04:00
										 
									 
								 
							 | 
							
								
									
										
									
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								PRIVATE>
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-01 16:18:24 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								SYNTAX: service current-vocab name>> serving-vocabs get-global adjoin ;
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-05 23:56:19 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								: start-rpc-server ( -- )
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    binary <threaded-server>
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-03 23:29:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    "rpcs" >>name 9012 >>insecure
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-04 00:12:34 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    [ deserialize {
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								      { "getter" [ getter ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								      {  "doer" [ doer ] }
							 | 
						
					
						
							| 
								
							 | 
							
								
							 | 
							
								
							 | 
							
							
								      { "loader" [ deserialize vocab serialize flush ] } 
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-03 23:29:02 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    } case ] >>handler
							 | 
						
					
						
							
								
									
										
										
										
											2009-08-05 23:56:19 -04:00
										 
									 
								 
							 | 
							
								
							 | 
							
								
							 | 
							
							
								    start-server ;
							 |