示例#1
0
        public IHttpActionResult IntiateCall(CallerViewModel data)
        {
            using (var ctx = new TelemedicineDBEntities())
            {
                var caller = ctx.Users
                             .Where(a => a.UserId == data.CallerId)
                             .FirstOrDefault();
                if (caller.UserId != null)
                {
                    try
                    {
                        DateTime serverTime = DateTime.Now;
                        Console.WriteLine(serverTime);
                        var session = penTok.CreateSession();
                        var token   = session.GenerateToken();

                        var callInfo = ctx.callInfoes.Add(new callInfo
                        {
                            CallInfoId = Guid.NewGuid(),
                            CallerId   = data.CallerId,
                            ReceiverId = data.ReceiverId,
                            SessionId  = session.Id,
                            Token      = token
                        });

                        var newInfo = new callInfo();
                        newInfo.CallerId   = callInfo.CallerId;
                        newInfo.ReceiverId = callInfo.CallerId;
                        newInfo.SessionId  = callInfo.SessionId;
                        newInfo.CallInfoId = callInfo.CallInfoId;
                        newInfo.Token      = callInfo.Token;

                        var result = ctx.SaveChanges();
                        if (result == 1)
                        {
                            return(Ok(newInfo));
                        }
                        else
                        {
                            return(Ok("Call failed"));
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex.InnerException;
                    }
                }
            }

            return(Ok());
        }
示例#2
0
 public int findFunctionQueueIndexByCallInfo(callInfo ci)
 {
     return(BattleManager.core.functionQueue.FindIndex(x => x == ci));
 }
        public bool initialize(int MaxConcurrentCalls)
        {
            int n;
            try
            {
                if (!clientInitialized)
                {

                    if (dllpath == "")
                    {
                        MessageBox.Show("Cannot initialize IAX Client. The libiaxclient.dll was not found. - IAX Client Wrapper Error");
                        return false;
                    }

                    arrayAddrPtr = Marshal.AllocHGlobal(4);
                    devnbrptr = Marshal.AllocHGlobal(4);
                    inputnbr = Marshal.AllocHGlobal(4);
                    outputnbr = Marshal.AllocHGlobal(4);
                    ringnbr = Marshal.AllocHGlobal(4);

                    // initialize the call holders
                    callInfo[] localcalls = new callInfo[MaxConcurrentCalls];
                    for (n = 0; n <= localcalls.GetUpperBound(0); n++)
                    {
                        localcalls[n] = new callInfo();
                    }
                    calls = localcalls;
                    // make sure we have captured the handle first
                    if (this.captureEventHandle())
                    {
                        // initialize with the given parameters
                        n = iaxc_initialize(MaxConcurrentCalls);
                        if (!(n == 0))
                        {
                            System.Console.WriteLine("Failed to intitialize IAX Client: " + n.ToString());
                            return false;
                        }
                        // set up the event processing
                        n = iaxc_set_event_callpost(newprocptr, myeventid);
                        if (!(n == 0))
                        {
                            System.Console.WriteLine("Failed to setup event post routine: " + n.ToString());
                            return false;
                        }
                        // start the processing thread
                        n = iaxc_start_processing_thread();
                        if (!(n == 0))
                        {
                            System.Console.WriteLine("Failed to start the processing thread: " + n.ToString());
                            return false;
                        }
                        clientInitialized = true;
                        return true;
                    }
                    else
                    {
                        System.Console.WriteLine("Failed to capture events. Exiting.");
                        return false;
                    }
                }
                else
                {
                    System.Console.WriteLine("Client is already initialized");
                    return true;
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine("Error trapped in iaxClientWrapper.initialize");
                System.Console.WriteLine(ex.StackTrace);
                return clientInitialized;
            }
        }