root/trunk/nuxleus/Source/Xameleon/Agent.cs

Revision 4583, 4.6 kB (checked in by xmlhacker, 10 months ago)

test results from parallel and serial HTTP request processing

  • Property svn:executable set to *
Line 
1 using System;
2 using System.Collections;
3 using Nuxleus.Agent;
4 using System.Collections.Generic;
5 using System.IO;
6 using Nuxleus.Async;
7
8 namespace Nuxleus.Transform {
9
10     public delegate TransformResponse NuxleusTransformAsyncRequestDelegate ( TransformRequest request );
11     public delegate TransformResponse BeginAgentAsyncRequest ( TransformRequest request );
12
13     public struct Agent : IAgent {
14
15         PostOffice m_postOffice;
16         Hashtable m_resultHashtable;
17         LoadBalancer m_loadBalancer;
18         Transform m_transform;
19         AsyncCallback m_callback;
20         //MemoryStream m_memoryStream;
21
22         public Agent ( LoadBalancer loadBalancer ) {
23             m_loadBalancer = LoadBalancer.GetLoadBalancer();
24             m_postOffice = null;
25             m_resultHashtable = new Hashtable();
26             m_transform = new Transform();
27             m_callback = null;
28         }
29
30         public Transform Transform { get { return m_transform; } set { m_transform = value; } }
31         public PostOffice PostOffice { get { return m_postOffice; } set { m_postOffice = value; } }
32         public Hashtable Result { get { return m_resultHashtable; } set { m_resultHashtable = value; } }
33         //public MemoryStream ResultStream { get { return m_memoryStream; } set { m_memoryStream = value; } }
34
35         //public TransformResponse MakeRequest (IRequest request, AsyncCallback callback, Nuxleus.Agent.NuxleusAsyncResult asyncResult, object extraData) {
36         //    //if (m_postOffice == null) {
37         //    //    m_postOffice = m_loadBalancer.GetPostOffice;
38         //    //}
39         //    //Console.WriteLine("Transform reached");
40         //    //TransformRequest tr = (TransformRequest)request;
41         //    //m_transform.BeginTransformProcess((TransformRequest)request, callback, asyncResult);
42         //    //m_resultHashtable[tr.ID] = tr.TransformResult;
43         //    //Console.WriteLine("TransformIsComplete reached w. GUID: {0}.  Hashtable has: {1} entries.", tr.ID.ToString(), m_resultHashtable.Count);
44         //    //Console.WriteLine("End of Invoke Reached");
45         //    //return asyncResult;
46
47         //}
48
49         public IAsyncResult BeginRequest ( IRequest request, AsyncCallback callback, Nuxleus.Agent.NuxleusAsyncResult asyncResult, object extraData ) {
50             //if (m_postOffice == null) {
51             //    m_postOffice = m_loadBalancer.GetPostOffice;
52             //}
53             Console.WriteLine("Transform reached");
54             TransformRequest tr = (TransformRequest)request;
55             m_transform.BeginTransformProcess((TransformRequest)request);
56             m_resultHashtable[tr.ID] = tr.TransformResult;
57             Console.WriteLine("TransformIsComplete reached w. GUID: {0}.  Hashtable has: {1} entries.", tr.ID.ToString(), m_resultHashtable.Count);
58             Console.WriteLine("End of Invoke Reached");
59             return asyncResult;
60
61         }
62
63         public IAsyncResult MakeRequest ( TransformRequest request, AsyncCallback callback, object extraData ) {
64             //if (m_postOffice == null) {
65             //    m_postOffice = m_loadBalancer.GetPostOffice;
66             //}
67             TransformProcessDelegate transformProcessDelegate = m_transform.BeginTransformProcess;
68             Console.WriteLine("Make Transform Request Reached");
69             return transformProcessDelegate.BeginInvoke(request, callback, transformProcessDelegate);
70             //return m_transform.BeginTransformProcess(request);
71
72         }
73
74         public static void EndThisRequest ( IAsyncResult ar ) {
75             TransformProcessDelegate transformProcessDelegate = (TransformProcessDelegate)ar.AsyncState;
76             TransformResponse response = transformProcessDelegate.EndInvoke(ar);
77             Console.WriteLine("Transform Is Complete Reached");
78             Console.WriteLine("Result of transformation: {0}", response.TransformResult);
79         }
80
81
82         public void EndRequest ( IAsyncResult ar ) {
83             TransformProcessDelegate transformProcessDelegate = (TransformProcessDelegate)ar.AsyncState;
84             TransformResponse response = transformProcessDelegate.EndInvoke(ar);
85             Console.WriteLine("Transform Is Complete Reached");
86             Console.WriteLine("Result of transformation: {0}", response.TransformResult);
87         }
88
89         public IResponse GetResponse ( Guid id ) {
90             TransformResponse tr = (TransformResponse)m_resultHashtable[id];
91             m_resultHashtable.Remove(id);
92             return tr;
93         }
94
95         public void AuthenticateRequest () { }
96
97         public void ValidateRequest () { }
98     }
99 }
Note: See TracBrowser for help on using the browser.