/// <summary> /// Initializes a new instance of the <see cref="Actor"/> class. /// </summary> /// <param name="peer"> /// The peer for this actor. /// </param> public Actor(HivePeer peer) { this.Peer = peer; // we copy the UserId so it doesn't get lost on peer disconnect this.UserId = peer.UserId; }
/// <summary> /// Creates a <see cref="HivePeer"/> to handle <see cref="OperationRequest"/>s. /// </summary> /// <param name="initRequest"> /// The initialization request. /// </param> /// <returns> /// A new <see cref="HivePeer"/> instance. /// </returns> protected override PeerBase CreatePeer(InitRequest initRequest) { var peer = new HivePeer(initRequest); if (this.webRpcManager.IsRpcEnabled) { peer.WebRpcHandler = this.webRpcManager.GetWebRpcHandler(); } return(peer); }
/// <summary> /// Initializes a new instance of the <see cref="Actor"/> class. /// </summary> /// <param name="peer"> /// The peer for this actor. /// </param> public Actor(HivePeer peer) { this.Peer = peer; this.LastPeerInfo = peer.ToString(); this.Peer.Actor = this; // we copy the UserId so it doesn't get lost on peer disconnect this.UserId = peer.UserId; this.RemovedFromInactive = DateTime.MinValue; }
public Actor RemoveActorByPeer(HivePeer peer) { var index = this.FindIndex(actor => actor.Peer == peer); if (index == -1) { return(null); } var result = this[index]; this.RemoveAt(index); return(result); }
public void Reactivate(HivePeer peer) { this.Peer = peer; this.Peer.Actor = this; this.LastPeerInfo = peer.ToString(); // rejoin to all previously joined groups foreach (var group in this.groups) { group.Add(this); } this.KillInActiveActorCleanUpTimer(); this.DeactivationTime = null; }
public void Reactivate(HivePeer peer) { this.Peer = peer; // rejoin to all previously joined groups foreach (var group in this.groups) { group.Add(this); } if (this.CleanUpTimer != null) { this.CleanUpTimer.Dispose(); this.CleanUpTimer = null; } this.DeactivationTime = null; }
/// <summary> /// Creates a <see cref="HivePeer"/> to handle <see cref="OperationRequest"/>s. /// </summary> /// <param name="initRequest"> /// The initialization request. /// </param> /// <returns> /// A new <see cref="HivePeer"/> instance. /// </returns> protected override PeerBase CreatePeer(InitRequest initRequest) { var peer = new HivePeer(initRequest); var settings = WebRpcSettings.Default; if (settings != null && settings.Enabled) { peer.WebRpcHandler = new WebRpcHandler( settings.BaseUrl.Value, new Dictionary <string, object> { { "AppId", this.HwId }, { "AppVersion", "" }, { "Region", "" }, { "Cloud", "" }, }, null, new HttpRequestQueueOptions(httpQueueReconnectInterval: settings.ReconnectInterval * 1000)); } return(peer); }
/// <summary> /// This method is invoked sequentially for each operation request /// enqueued in the <see cref = "ExecutionFiber" /> using the /// <see cref = "EnqueueOperation" /> method. /// </summary> /// <param name = "peer"> /// The peer. /// </param> /// <param name = "operation"> /// The operation request. /// </param> /// <param name = "sendParameters"> /// The send Parameters. /// </param> protected virtual void ExecuteOperation(HivePeer peer, OperationRequest operation, SendParameters sendParameters) { }
/// <summary> /// Enqueues an <see cref = "OperationRequest" /> to the end of the execution queue. /// </summary> /// <param name = "peer"> /// The peer. /// </param> /// <param name = "operationRequest"> /// The operation request to enqueue. /// </param> /// <param name = "sendParameters"> /// The send Parameters. /// </param> /// <remarks> /// <see cref = "ExecuteOperation" /> is called sequentially for each operation request /// stored in the execution queue. /// Using an execution queue ensures that operation request are processed in order /// and sequentially to prevent object synchronization (multi threading). /// </remarks> public void EnqueueOperation(HivePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { this.ExecutionFiber.Enqueue(() => this.ExecuteOperation(peer, operationRequest, sendParameters)); }
public virtual bool IsThisSameSession(HivePeer peer) { return(false); }