Example #1
0
 public FatpipeMessage(string tenantIdentifier, string msgId, FatpipeManager fpm)
 {
     _header     = new MessageHeader(tenantIdentifier, msgId);
     _body       = new MessageBody();
     _status     = new MessageStatus();
     this.fpm    = fpm;
     routingInfo = null;
 }
        public FatPipeDAL(string storageConnectionString, FatpipeManager fpm)
        {
            try
            {
                LoggerFactory.Logger.Debug("FatPipeDAL C'tor", "Initializing Azure accounts");
                this.fpm = fpm;

                // The constructor below is hardcoded for now.. it will use the method params
                if (!string.IsNullOrEmpty(storageConnectionString))
                {
                    this.cloudAcct = CloudStorageAccount.Parse(storageConnectionString);
                }

                else //fallback path to Cloud storage
                {
                    cloudAcct = new CloudStorageAccount(new StorageCredentialsAccountAndKey("maargsoft", "njPcqdHZuYUNbp32GS1tpSAeoUSp1hZ1EJsqRdtnTJe5BZtEmVd61UHonvva6o3WZ1COeAPtTm4ofbMqFaqj7Q=="), false);
                }

                queueClient      = cloudAcct.CreateCloudQueueClient();
                blobClient       = cloudAcct.CreateCloudBlobClient();
                this.tableClient = cloudAcct.CreateCloudTableClient();

                bool runtimeEnv = !string.IsNullOrEmpty(MaargConfiguration.Instance[MaargConfiguration.FatpipeManagerIncomingQueueName]);
                if (runtimeEnv)
                {
                    incomingQ = queueClient.GetQueueReference(MaargConfiguration.Instance[MaargConfiguration.FatpipeManagerIncomingQueueName]);
                    outgoingQ = queueClient.GetQueueReference(MaargConfiguration.Instance[MaargConfiguration.FatpipeManagerOutgoingQueueName]);

                    // Create the queue if it doesn't already exist
                    incomingQ.CreateIfNotExist();
                    outgoingQ.CreateIfNotExist();

                    DateTime today  = DateTime.Today;
                    string   bucket = string.Format(BlobContainerPartitionNameFormat, today.Month, today.Year,
                                                    MaargConfiguration.Instance[MaargConfiguration.FatpipeManagerIncomingBlobContainerNameSuffix]);

                    string outbucket = string.Format(BlobContainerPartitionNameFormat, today.Month, today.Year,
                                                     MaargConfiguration.Instance[MaargConfiguration.FatpipeManagerOutgoingBlobContainerNameSuffix]);

                    // Retrieve a reference to a container
                    inContainer  = blobClient.GetContainerReference(bucket);
                    outContainer = blobClient.GetContainerReference(outbucket);

                    // Create the container if it doesn't already exist
                    inContainer.CreateIfNotExist();
                    outContainer.CreateIfNotExist();
                }

                schemaContainer = blobClient.GetContainerReference(SchemaContainerName);
                schemaContainer.CreateIfNotExist();

                notificationTemplateContainer = blobClient.GetContainerReference(NotificationTemplateContainerName);
                notificationTemplateContainer.CreateIfNotExist();

                //suspended store
                if (runtimeEnv)
                {
                    this.suspendedContainer = this.blobClient.GetContainerReference(MaargConfiguration.Instance[MaargConfiguration.SuspendedMessageBlobContainerName]);
                    this.suspendedContainer.CreateIfNotExist();
                    this.tableClient.CreateTableIfNotExist(MaargConfiguration.Instance[MaargConfiguration.SuspendedMessageTableName]);
                    this.suspendedTableServiceContext = this.tableClient.GetDataServiceContext();

                    int visibilityTimeoutInSeconds;
                    if (!int.TryParse(MaargConfiguration.Instance[MaargConfiguration.FatpipeManagerQueueMessageVisibilityTimeoutInSeconds], out visibilityTimeoutInSeconds))
                    {
                        visibilityTimeoutInSeconds = 30;
                        LoggerFactory.Logger.Warning("FatPipeDAL C'tor", EventId.BizpipeMissingConfigValue
                                                     , "Configuration for {0} is not defined. Using default value of {1} seconds."
                                                     , MaargConfiguration.FatpipeManagerQueueMessageVisibilityTimeoutInSeconds
                                                     , visibilityTimeoutInSeconds);
                    }
                    this.visibilityTimeout = new TimeSpan(0, 0, visibilityTimeoutInSeconds);

                    // does it need public access?
                    this.inContainer.SetPermissions(new BlobContainerPermissions {
                        PublicAccess = BlobContainerPublicAccessType.Blob
                    });
                    this.outContainer.SetPermissions(new BlobContainerPermissions {
                        PublicAccess = BlobContainerPublicAccessType.Blob
                    });
                    this.suspendedContainer.SetPermissions(new BlobContainerPermissions {
                        PublicAccess = BlobContainerPublicAccessType.Blob
                    });
                }
                LoggerFactory.Logger.Debug("FatPipeDAL C'tor", "Connections established to Azure accounts");
            }
            catch (Exception excp)
            {
                LoggerFactory.Logger.Error("FatPipeDAL C'tor", EventId.BizpipeCtor
                                           , "FatPipeDAL constructor encountered exception: {0} ", excp.ToString());
            }
        }