@@ -875,29 +875,38 @@ public static synchronized int registerCode(int phase, long typeNStr, long nameN
875
875
String type = fetchNGXString (typeNStr , DEFAULT_ENCODING );
876
876
String name = fetchNGXString (nameNStr , DEFAULT_ENCODING );
877
877
String code = fetchNGXString (codeNStr , DEFAULT_ENCODING );
878
-
879
878
NginxHandler handler = NginxHandlerFactory .fetchHandler (phase , type , name , code );
880
879
HANDLERS .add (handler );
881
- if (pros != 0 ) {
882
- Map <String , String > properties = new ArrayMap <String , String >();
883
- int size = fetchNGXInt (pros + NGX_HTTP_CLOJURE_ARRAY_NELTS_OFFSET );
884
- long ele = UNSAFE .getAddress (pros + NGX_HTTP_CLOJURE_ARRAY_ELTS_OFFSET );
885
- for (int i = 0 ; i < size ; i ++) {
886
- long kv = ele + i * NGX_HTTP_CLOJURE_KEYVALT_SIZE ;
887
- properties .put (fetchNGXString (kv + NGX_HTTP_CLOJURE_KEYVALT_KEY_OFFSET , DEFAULT_ENCODING ),
888
- fetchNGXString (kv + NGX_HTTP_CLOJURE_KEYVALT_VALUE_OFFSET , DEFAULT_ENCODING ));
889
- }
890
- for (Entry <String , String > en : properties .entrySet ()) {
891
- en .setValue (evalSimpleExp (en .getValue (), properties ));
892
- }
893
- if (handler instanceof Configurable ) {
894
- Configurable cr = (Configurable ) handler ;
895
- cr .config (properties );
896
- }else {
897
- log .warn ("%s is not an instance of nginx.clojure.Configurable, so properties will be ignored!" ,
898
- handler .getClass ());
880
+ Runnable runnable = new Runnable () {
881
+ public void run () {
882
+ if (pros != 0 ) {
883
+ Map <String , String > properties = new ArrayMap <String , String >();
884
+ int size = fetchNGXInt (pros + NGX_HTTP_CLOJURE_ARRAY_NELTS_OFFSET );
885
+ long ele = UNSAFE .getAddress (pros + NGX_HTTP_CLOJURE_ARRAY_ELTS_OFFSET );
886
+ for (int i = 0 ; i < size ; i ++) {
887
+ long kv = ele + i * NGX_HTTP_CLOJURE_KEYVALT_SIZE ;
888
+ properties .put (fetchNGXString (kv + NGX_HTTP_CLOJURE_KEYVALT_KEY_OFFSET , DEFAULT_ENCODING ),
889
+ fetchNGXString (kv + NGX_HTTP_CLOJURE_KEYVALT_VALUE_OFFSET , DEFAULT_ENCODING ));
890
+ }
891
+ for (Entry <String , String > en : properties .entrySet ()) {
892
+ en .setValue (evalSimpleExp (en .getValue (), properties ));
893
+ }
894
+ if (handler instanceof Configurable ) {
895
+ Configurable cr = (Configurable ) handler ;
896
+ cr .config (properties );
897
+ }else {
898
+ log .warn ("%s is not an instance of nginx.clojure.Configurable, so properties will be ignored!" ,
899
+ handler .getClass ());
900
+ }
901
+ }
899
902
}
903
+ };
904
+ if (coroutineEnabled ) {
905
+ new Coroutine (runnable ).resume ();
906
+ } else {
907
+ runnable .run ();
900
908
}
909
+
901
910
return HANDLERS .size () - 1 ;
902
911
}
903
912
0 commit comments