@@ -8,55 +8,58 @@ class RPCServer
88 public static void Main ( )
99 {
1010 var factory = new ConnectionFactory ( ) { HostName = "localhost" } ;
11- using ( var connection = factory . CreateConnection ( ) )
11+ using ( var connection = factory . CreateConnection ( ) )
12+ using ( var channel = connection . CreateModel ( ) )
1213 {
13- using ( var channel = connection . CreateModel ( ) )
14- {
15- channel . QueueDeclare ( "rpc_queue" , false , false , false , null ) ;
16- channel . BasicQos ( 0 , 1 , false ) ;
17- var consumer = new QueueingBasicConsumer ( channel ) ;
18- channel . BasicConsume ( "rpc_queue" , false , consumer ) ;
19- Console . WriteLine ( " [x] Awaiting RPC requests" ) ;
14+ channel . QueueDeclare ( queue : "rpc_queue" , durable : false , exclusive : false , autoDelete : false , arguments : null ) ;
15+ channel . BasicQos ( 0 , 1 , false ) ;
16+ var consumer = new QueueingBasicConsumer ( channel ) ;
17+ channel . BasicConsume ( queue : "rpc_queue" , noAck : false , consumer : consumer ) ;
18+ Console . WriteLine ( " [x] Awaiting RPC requests" ) ;
2019
21- while ( true )
22- {
23- string response = null ;
24- var ea =
25- ( BasicDeliverEventArgs ) consumer . Queue . Dequeue ( ) ;
20+ while ( true )
21+ {
22+ string response = null ;
23+ var ea = ( BasicDeliverEventArgs ) consumer . Queue . Dequeue ( ) ;
2624
27- var body = ea . Body ;
28- var props = ea . BasicProperties ;
29- var replyProps = channel . CreateBasicProperties ( ) ;
30- replyProps . CorrelationId = props . CorrelationId ;
25+ var body = ea . Body ;
26+ var props = ea . BasicProperties ;
27+ var replyProps = channel . CreateBasicProperties ( ) ;
28+ replyProps . CorrelationId = props . CorrelationId ;
3129
32- try
33- {
34- var message = Encoding . UTF8 . GetString ( body ) ;
35- int n = int . Parse ( message ) ;
36- Console . WriteLine ( " [.] fib({0})" , message ) ;
37- response = fib ( n ) . ToString ( ) ;
38- }
39- catch ( Exception e )
40- {
41- Console . WriteLine ( " [.] " + e . Message ) ;
42- response = "" ;
43- }
44- finally
45- {
46- var responseBytes =
47- Encoding . UTF8 . GetBytes ( response ) ;
48- channel . BasicPublish ( "" , props . ReplyTo , replyProps ,
49- responseBytes ) ;
50- channel . BasicAck ( ea . DeliveryTag , false ) ;
51- }
30+ try
31+ {
32+ var message = Encoding . UTF8 . GetString ( body ) ;
33+ int n = int . Parse ( message ) ;
34+ Console . WriteLine ( " [.] fib({0})" , message ) ;
35+ response = fib ( n ) . ToString ( ) ;
36+ }
37+ catch ( Exception e )
38+ {
39+ Console . WriteLine ( " [.] " + e . Message ) ;
40+ response = "" ;
41+ }
42+ finally
43+ {
44+ var responseBytes = Encoding . UTF8 . GetBytes ( response ) ;
45+ channel . BasicPublish ( exchange : "" , routingKey : props . ReplyTo , basicProperties : replyProps , body : responseBytes ) ;
46+ channel . BasicAck ( deliveryTag : ea . DeliveryTag , multiple : false ) ;
5247 }
5348 }
5449 }
5550 }
5651
57- private static int fib ( int n )
52+ /// <summary>
53+ /// Assumes only valid positive integer input.
54+ /// Don't expect this one to work for big numbers, and it's probably the slowest recursive implementation possible.
55+ /// </summary>
56+ private static int fib ( int n )
5857 {
59- if ( n == 0 || n == 1 ) return n ;
60- return fib ( n - 1 ) + fib ( n - 2 ) ;
58+ if ( n == 0 || n == 1 )
59+ {
60+ return n ;
61+ }
62+
63+ return fib ( n - 1 ) + fib ( n - 2 ) ;
6164 }
6265}
0 commit comments