| 1 |
using System; |
|---|
| 2 |
using System.Web; |
|---|
| 3 |
using System.Text; |
|---|
| 4 |
using Nuxleus.Atom; |
|---|
| 5 |
using Nuxleus.Bucker; |
|---|
| 6 |
using Nuxleus.Messaging.LLUP; |
|---|
| 7 |
using Nuxleus.PubSub; |
|---|
| 8 |
|
|---|
| 9 |
namespace Xameleon.Function { |
|---|
| 10 |
|
|---|
| 11 |
public static class QueueManager { |
|---|
| 12 |
|
|---|
| 13 |
public static string Push (HttpContext context, string queueName, string message) { |
|---|
| 14 |
return Push(queueName, message); |
|---|
| 15 |
} |
|---|
| 16 |
|
|---|
| 17 |
private static string Push (string queueName, string message) { |
|---|
| 18 |
// Notification |
|---|
| 19 |
Notification n = new Notification(); |
|---|
| 20 |
n.Action = "publish"; |
|---|
| 21 |
n.Expires = DateTime.Now.AddHours(1); |
|---|
| 22 |
n.Categories = new Category[2]; |
|---|
| 23 |
n.Categories[0] = new Category(); |
|---|
| 24 |
n.Categories[0].Term = message; |
|---|
| 25 |
n.Categories[1] = new Category(); |
|---|
| 26 |
n.Categories[1].Term = "indie"; |
|---|
| 27 |
|
|---|
| 28 |
// The actual Queue Message to send |
|---|
| 29 |
Message pm = new Message(); |
|---|
| 30 |
pm.Op.Type = OperationType.PushMessage; |
|---|
| 31 |
pm.QueueId = queueName; |
|---|
| 32 |
|
|---|
| 33 |
Console.WriteLine(queueName); |
|---|
| 34 |
Console.WriteLine(n.ToString()); |
|---|
| 35 |
pm.Payload = Convert.ToBase64String(Notification.Serialize(n)); |
|---|
| 36 |
|
|---|
| 37 |
// An event handler |
|---|
| 38 |
MessageEvent me = new MessageEvent(); |
|---|
| 39 |
me.Message = pm; |
|---|
| 40 |
// Let's see what the response of the server was |
|---|
| 41 |
me.MessageReceived += new MessageEventHandler(queue_MessageReceived); |
|---|
| 42 |
|
|---|
| 43 |
QueueClientPool.Enqueue(me); |
|---|
| 44 |
|
|---|
| 45 |
return "message sent"; |
|---|
| 46 |
} |
|---|
| 47 |
|
|---|
| 48 |
private static void queue_MessageReceived (object sender, MessageStateEventArgs e) { |
|---|
| 49 |
MessageEvent me = (MessageEvent)sender; |
|---|
| 50 |
Message received = e.Message; |
|---|
| 51 |
//Console.WriteLine("RESPONSE: {0}", received.ToString()); |
|---|
| 52 |
} |
|---|
| 53 |
|
|---|
| 54 |
//public static void Push(HttpContext context, object message) { |
|---|
| 55 |
// QueueClient qs = context.Application["queueclient"] as QueueClient; |
|---|
| 56 |
// if(qs != null) { |
|---|
| 57 |
//Push(qs, message); |
|---|
| 58 |
// } |
|---|
| 59 |
//} |
|---|
| 60 |
|
|---|
| 61 |
//public static void Push(QueueClient qs, object message) { |
|---|
| 62 |
// //qs.Send(message); |
|---|
| 63 |
// //MessageState ms = new MessageState(); |
|---|
| 64 |
// //ms.Dismiss = true; // we are not interested in storing the response |
|---|
| 65 |
// //qs.AsyncRecv(ms); |
|---|
| 66 |
//} |
|---|
| 67 |
} |
|---|
| 68 |
} |
|---|