Exemplo n.º 1
0
 private void ChannelEvent_onString(TEventEntry aEventEntry, string aString)
 {
     if (aEventEntry.Tag != null)
     {
         (aEventEntry.Tag as IMessageToClient).SendMessageToClient(CreateMessage(aString));
     }
 }
Exemplo n.º 2
0
 private void ChannelEvent_onStreamEnd(TEventEntry aEventEntry, string aName, Stream stream, bool aCancel)
 {
     if (aEventEntry.Tag != null)
     {
         (aEventEntry.Tag as IMessageToClient).SendMessageToClient(CreateMessage((stream as MemoryStream).ToArray()));
     }
 }
Exemplo n.º 3
0
 public static void HookupRoot()
 {
     if (rootEvent == null)
     {
         rootEvent              = connection.subscribe(RootEventName, false);
         rootEvent.onIntString += RootEvent_onIntString;
     }
 }
Exemplo n.º 4
0
 private static void RootEvent_onIntString(TEventEntry aEventEntry, int aInt, string aString)
 {
     try
     {
         if (aInt == TEventEntry.actionInquire)
         {
             var returnEvent = aString != "" ? connection.publish(aString, false) : aEventEntry;
             Debug.WriteLine(DateTime.Now + ": received inquire on root " + aEventEntry.eventName + " (" + aString + "), return on " + returnEvent.eventName);
             try
             {
                 foreach (var ctep in channelToEvent)
                 {
                     string channelEventNamePostfix;
                     try
                     {
                         var clientType = Lookups.channelToClientType[ctep.Key];
                         channelEventNamePostfix = (clientType != null) && (clientType.Length > 0) ? "&" + clientType : "";
                     }
                     catch
                     {
                         channelEventNamePostfix = "";
                     }
                     returnEvent.signalIntString(TEventEntry.actionNew, ctep.Value.eventName + channelEventNamePostfix); // answer inquire on root with all event names of channels ie clients
                 }
             }
             finally
             {
                 if (returnEvent != aEventEntry)
                 {
                     returnEvent.unPublish();
                 }
             }
         }
         else if (aInt == actionStatus)
         {
             // build status to return
             var status = "{\"id\":\"" + connection.modelName + " @ " + host.BaseAddresses[0].AbsoluteUri + "\",\"status\":\"" + host.State.ToString() + "\",\"info\":\"" + channelToEvent.Count.ToString() + " channels\"}";
             // signal status
             var returnEvent = aString != "" ? connection.publish(aString, false) : aEventEntry;
             Debug.WriteLine(DateTime.Now + ": received status request on root " + aEventEntry.eventName + " (" + aString + "), return on " + returnEvent.eventName);
             try
             {
                 returnEvent.signalString(status);
             }
             finally
             {
                 if (returnEvent != aEventEntry)
                 {
                     returnEvent.unPublish();
                 }
             }
         }
     }
     catch (Exception e)
     {
         Debug.WriteLine(DateTime.Now + ": ## Exception in RootEvent_onIntString (" + aInt.ToString() + ", " + aString + "): " + e.Message);
     }
 }
Exemplo n.º 5
0
 private void ChannelEvent_onIntString(TEventEntry aEventEntry, int aInt, string aString)
 {
     if (aInt == TEventEntry.actionDelete)
     {
         // handle disconnect of session server side..
         // NOT: just unpublish to free up event, but keep on listening because web part is still up
         // NOT: aEventEntry.unPublish();
         // signal web client session server is disconnected
         if (aEventEntry.Tag != null)
         {
             (aEventEntry.Tag as IMessageToClient).SendMessageToClient(CreateMessage("{\"type\":\"connection\",\"payload\":{\"message\":\"session server has disconnected\"}}"));
         }
     }
 }
Exemplo n.º 6
0
 public static void SessionEvent_onIntString(TEventEntry aEventEntry, int aInt, string aString)
 {
     if (aInt == TEventEntry.actionInquire)
     {
         // return all clients on session
         var returnEvent = aString != "" ? aEventEntry.connection.publish(aString, false) : aEventEntry;
         Debug.WriteLine(DateTime.Now + ": received inquire on " + aEventEntry.eventName + " (" + aString + "), return on " + returnEvent.eventName);
         try
         {
             var eventNameFilter = aEventEntry.eventName + ".";
             foreach (var ctep in Lookups.channelToEvent)
             {
                 // check if channel belongs to session
                 if (ctep.Value.eventName.StartsWith(eventNameFilter))
                 {
                     string channelEventNamePostfix;
                     try
                     {
                         var clientType = Lookups.channelToClientType[ctep.Key];
                         channelEventNamePostfix = (clientType != null) && (clientType.Length > 0) ? "&" + clientType : "";
                     }
                     catch
                     {
                         channelEventNamePostfix = "";
                     }
                     returnEvent.signalIntString(TEventEntry.actionNew, ctep.Value.eventName + channelEventNamePostfix); // event names of clients on session
                 }
             }
         }
         finally
         {
             if (returnEvent != aEventEntry)
             {
                 returnEvent.unPublish();
             }
         }
     }
 }
Exemplo n.º 7
0
        static void Main(string[] args)
        {
            TConnection connection = new TTLSConnection("client-eco-district.pfx", "&8dh48klosaxu90OKH", "root-ca-imb.crt", true, "C# test model");

            try
            {
                Console.WriteLine("connected");

                Console.WriteLine("private event name: " + connection.privateEventName);
                Console.WriteLine("monitor event name: " + connection.monitorEventName);

                // connect an event handler for a disconnect
                connection.onDisconnect += (aConnection) =>
                {
                    Console.WriteLine("disconnected..");
                };

                // connect an event handler for an exception in processing events and commands
                connection.onException += (aConnection, aException) =>
                {
                    Console.WriteLine("## Exception: " + aException.Message);
                };

                // subscribe to an event
                TEventEntry eventEntry = connection.subscribe("test event");

                // add an event handler for string events
                eventEntry.onString += (aEventEntry, aString) =>
                {
                    if (aString.CompareTo("string command") == 0)
                    {
                        Console.WriteLine("OK received string " + aEventEntry.eventName + " " + aString);
                    }
                    else
                    {
                        Console.WriteLine("## received string " + aEventEntry.eventName + " " + aString);
                    }
                };

                // add an event handler for stream create events
                eventEntry.onStreamCreate += (aEventEntry, aStreamName) =>
                {
                    if (aStreamName == "a stream name")
                    {
                        Console.WriteLine("OK received stream create " + aEventEntry.eventName + " " + aStreamName);
                    }
                    else
                    {
                        Console.WriteLine("## received stream create " + aEventEntry.eventName + " " + aStreamName);
                    }
                    return(File.Create("out.cscharp.dmp"));
                };

                // add an event handler for stream end events
                eventEntry.onStreamEnd += (aEventEntry, aStreamName, aStream, aCancel) =>
                {
                    if (aStreamName == "a stream name" && !aCancel)
                    {
                        Console.WriteLine("OK received stream end " + aEventEntry.eventName + " " + aStreamName + " " + aCancel.ToString());
                    }
                    else
                    {
                        Console.WriteLine("## received stream end " + aEventEntry.eventName + " " + aStreamName + " " + aCancel.ToString());
                    }
                };

                showHelp();

                ConsoleKeyInfo key;
                do
                {
                    key = Console.ReadKey();
                    switch (key.KeyChar)
                    {
                    case 's':
                    case 'S':
                        // send a basic string event
                        eventEntry.signalString(": string command");

                        // send a stream
                        FileStream stream = File.OpenRead("test.jpg");     // todo: use path of existing file
                        try
                        {
                            eventEntry.signalStream("a stream name", stream);
                        }
                        finally
                        {
                            stream.Close();
                        }

                        Console.WriteLine(": sent events..");
                        break;

                    case 'h':
                        connection.setHeartBeat(1000);                                 // enable heartbeat every second
                        Console.WriteLine(": heartbeat enabled..");
                        break;

                    case 'H':
                        connection.setHeartBeat(0);                                 // disable heartbeat (<=0)
                        Console.WriteLine(": heartbeat disabled..");
                        break;

                    case '?':
                        showHelp();
                        break;
                    }
                }while (key.KeyChar != 'q' && key.KeyChar != 'Q' && key.KeyChar != (char)27);
            }
            finally
            {
                connection.close();
            }
        }
Exemplo n.º 8
0
 private Stream ChannelEvent_onStreamCreate(TEventEntry aEventEntry, string aName)
 {
     return(new MemoryStream());
 }